前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >你真的了解微服务架构吗?

你真的了解微服务架构吗?

原创
作者头像
一个风轻云淡
发布2023-10-20 15:06:13
7273
发布2023-10-20 15:06:13
举报
文章被收录于专栏:java学习java

写在前面

随着互联网行业的快速发展,对服务的要求也越来越高,服务架构早就从原来单体架构逐渐演变为现在流行的微服务架构。

微服务(Microservice)这个概念是2012年出现的,作为加快Web和移动应用程序开发进程的一种方法,2014年开始受到各方的关注,而2015年,可以说是微服务的元年

从单体架构说起

单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署。

单体架构(Monolithic Architecture)是一种传统的软件架构模式,将整个应用程序作为一个单一的、统一的单元进行开发、部署和扩展。在单体架构中,所有的功能模块都被打包在一起,共享同一个代码库和数据库。

编辑

单体架构的优缺点如下:

优点:

  • 架构简单
  • 部署成本低

缺点:

  • 耦合度高(维护困难、升级困难)

复杂性高:以一个百万行级别的单体应用为例,整个项目包含的模块非常多、模块的边界模糊、 依赖关系不清晰、 代码质量参差不齐、 混乱地堆砌在一起。可想而知整个项目非常复杂。每次修改代码都心惊胆战, 甚至添加一个简单的功能, 或者修改一个Bug都会带来隐含的缺陷。

聊到分布式架构

分布式架构:根据业务功能对系统做拆分,每个业务功能模块作为独立项目开发,称为一个服务。

中级架构,分布式应用,中间层分布式+数据库分布式,是单体架构的并发扩展,将一个大的系统划分为多个业务模块,业务模块分别部署在不同的服务器上,各个业务模块之间通过接口进行数据交互。

​编辑

分布式架构的优缺点:

优点:

  • 降低服务耦合
  • 有利于服务升级和拓展

缺点:

  • 服务调用关系错综复杂

系统之间的交互要使用远程通信,接口开发增大工作量,但是利大于弊。 我们需要制定一套行之有效的标准来约束分布式架构。

聊回到微服务架构

微服务(或称微服务架构)是一种云原生架构方法,在单个应用中包含众多松散耦合且可单独部署的小型组件或服务。 这些服务通常拥有自己的技术栈,包括数据库和数据管理模型;通过一个REST API、事件流和消息代理组合彼此通信;以及按照业务能力进行组织,具有通常称为有界上下文的服务分隔线。

微服务的架构特征:

  • 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责
  • 自治:团队独立、技术独立、数据独立,独立部署和交付
  • 面向服务:服务提供统一标准的接口,与语言和技术无关
  • 隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题

​编辑

微服务的上述特性其实是在给分布式架构制定一个标准,进一步降低服务之间的耦合度,提供服务的独立性和灵活性。做到高内聚,低耦合。因此,可以认为微服务是一种经过良好架构设计的分布式架构方案 。

​编辑

①优点:拆分粒度更小、服务更独立、耦合度更低

②缺点:架构非常复杂,运维、监控、部署难度提高

SpringCloud不等于微服务,他只不过是微服务中的一部分。SpringCloud是微服务架构的一站式解决方案,集成了各种优秀微服务功能组件

微服务拆分时的几个原则:

  • 不同微服务,不要重复开发相同业务
  • 微服务数据独立,不要访问其它微服务的数据库
  • 微服务可以将自己的业务暴露为接口,供其它微服务调用

微服务架构的关键技术

  1. 容器技术:容器技术对于微服务架构非常重要,因为它们可以将应用程序及其运行时环境打包,实现应用资源的隔离和轻量化部署。Docker 是一种广泛使用的容器化平台,可以在各种基础设施上运行。Kubernetes 则是一个流行的容器编排平台,用于自动化应用程序的部署、扩展和管理。
  2. 服务发现与注册:在微服务架构中,服务可能部署在不同的服务器和端口上。服务发现和注册中心负责管理各微服务的位置信息,使得一个微服务可以找到并与另一个微服务进行通信。一些常用的服务发现和注册框架包括 Eureka、Consul 和 etcd。
  3. API网关:API网关是一个用于处理微服务请求的入口点。它将客户端请求路由到适当的服务,并在服务之间执行负载均衡、认证、限流、熔断等功能。此外,API网关还可以实现服务聚合以减少客户端需要发起的请求数量。常见的API网关有 Zuul、Kong 和 Spring Cloud Gateway。
  4. 分布式追踪:在微服务架构中,调用链可能跨足多个服务。为了诊断潜在问题,需要能够跟踪请求在各个服务中的流转过程。分布式追踪系统采用一种称为"追踪ID"的方法,将请求在各个服务中的执行序列串联起来。常用的分布式追踪工具有 Zipkin、Jaeger 和 OpenTracing。
  5. 持续集成与持续部署:为了加速开发、测试和发布过程,实现敏捷化和自动化的微服务交付,持续集成和持续部署变得至关重要。常见的 CI/CD 工具有 Jenkins、CircleCI 和 GitLab CI。
  6. 微服务的通信方式:微服务需要一种有效、可靠且灵活的方式来相互通信。通信方式可以是同步的,如 RESTful API 或 gRPC;也可以是异步的,如消息队列(例如 RabbitMQ 或 Apache Kafka)。选择合适的通信方式取决于微服务架构中的具体需求和场景。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 写在前面
  • 从单体架构说起
  • 聊到分布式架构
  • 聊回到微服务架构
  • 微服务架构的关键技术
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档