一、SOA应用架构

SOA (Service-Oriented Architecture),即⾯向服务的架构。根据实际业务,把系统拆分成合适的、独⽴部署的模块,模块之间相互独⽴(通过Webservice/Dubbo等技术进⾏通信)。

优点:分布式、松耦合、扩展灵活、可重⽤。
缺点:服务抽取粒度较⼤、服务调⽤⽅和提供⽅耦合度较⾼(接⼝耦合度)

二、微服务应用架构

微服务架构可以说是SOA架构的⼀种拓展,这种架构模式下它拆分粒度更小、服务更独立。把应⽤拆分成为⼀个个微⼩的服务,不同的服务可以使⽤不同的开发语⾔和存储,服务之间往往通过Restful等轻量级通信。微服务架构关键在于微⼩、独⽴、轻量级通信。微服务是在 SOA 上做的升华粒度更加细致,微服务架构强调的⼀个重点是“业务需要彻底的组件化 和服务化”。

微服务架构和SOA架构相似与不同
微服务架构和SOA架构很明显的⼀个区别就是服务拆分粒度的不同,引入了相对完整的新⼀代Spring Cloud微服务技术。

三、微服务架构体现的思想及优缺点

微服务架构设计的核⼼思想就是“微”,拆分的粒度相对⽐较⼩,这样的话单⼀职责、开发的耦合度就会降低、微⼩的功能可以独⽴部署扩展、灵活性强,升级改造影响范围⼩。

微服务架构的优点: 微服务架构和微服务

  • 微服务很⼩,便于特定业务功能的聚焦 A B C D
  • 微服务很⼩,每个微服务都可以被⼀个⼩团队单独实施(开发、测试、部署上线、运维),团队合作⼀定程度解耦,便于实施敏捷开发
  • 微服务很⼩,便于重⽤和模块之间的组装
  • 微服务很独⽴,那么不同的微服务可以使⽤不同的语⾔开发,松耦合
  • 微服务架构下,我们更容易引⼊新技术
  • 微服务架构下,我们可以更好的实现DevOps开发运维⼀体化;

微服务架构的缺点

  • 微服务架构下,分布式复杂难以管理,当服务数量增加,管理将越加复杂;
  • 微服务架构下,分布式链路跟踪难等;

四、微服务架构中的⼀些概念

服务注册与服务发现

**服务注册:**服务提供者将所提供服务的信息(服务器IP和端⼝、服务访问协议等)注册/登记到注册中⼼

**服务发现:**服务消费者能够从注册中⼼获取到较为实时的服务列表,然后根究⼀定的策略选择⼀个服务访问

soa服务化架构 soa架构 微服务架构_API

负载均衡

负载均衡即将请求压⼒分配到多个服务器(应⽤服务器、数据库服务器等),以此来提⾼服务的性能、可靠性

soa服务化架构 soa架构 微服务架构_微服务_02

熔断

熔断即断路保护。微服务架构中,如果下游服务因访问压⼒过⼤⽽响应变慢或失败,上游服务为了保护系统整体可⽤性,可以暂时切断对下游服务的调⽤。这种牺牲局部,保全整体的措施就叫做熔断。

soa服务化架构 soa架构 微服务架构_API_03

链路追踪

微服务架构越发流⾏,⼀个项⽬往往拆分成很多个服务,那么⼀次请求就需要涉及到很多个服务。不同的微服务可能是由不同的团队开发、可能使⽤不同的编程语⾔实现、整个项⽬也有可能部署在了很多服务器上(甚⾄百台、千台)横跨多个不同的数据中⼼。所谓链路追踪,就是对⼀次请求涉及的很多个服务链路进⾏⽇志记录、性能监控。

soa服务化架构 soa架构 微服务架构_soa服务化架构_04

API ⽹关

微服务架构下,不同的微服务往往会有不同的访问地址,客户端可能需要调⽤多个服务的接⼝才能完成⼀个业务需求,如果让客户端直接与各个微服务通信可能出现:

  1. 客户端需要调⽤不同的url地址,增加了维护调⽤难度
  2. 在⼀定的场景下,也存在跨域请求的问题(前后端分离就会碰到跨域问题,原本我们在后端采⽤Cors就能解决,现在利⽤⽹关,那么就放在⽹关这层做好了)
  3. 每个微服务都需要进⾏单独的身份认证

那么,API⽹关就可以较好的统⼀处理上述问题,API请求调⽤统⼀接⼊API⽹关层,由⽹关转发请求。API⽹关更专注在安全、路由、流量等问题的处理上(微服务团队专注于处理业务逻辑即可),它的功能⽐如

  1. 统⼀接⼊(路由)
  2. 安全防护(统⼀鉴权,负责⽹关访问身份认证验证,与“访问认证中⼼”通信,实际认证业务逻辑交移“访问认证中⼼”处理)
  3. ⿊⽩名单(实现通过IP地址控制禁⽌访问⽹关功能,控制访问)
  4. 协议适配(实现通信协议校验、适配转换的功能)
  5. 流量管控(限流)
  6. ⻓短链接⽀持
  7. 容错能⼒(负载均衡)

soa服务化架构 soa架构 微服务架构_微服务_05