微服务架构与SOA架构
一、系统架构演变概述
1. 了解项目架构的演变历程
graph LR; 1[集中式架构] --> 2[垂直拆分] 2 --> 3[分布式服务] 3 --> 4[SOA面向服务架构] 4 --> 5[微服务架构]
二、 微服务架构说明
1. 微服务架构
- 是一套使用小服务或者单一业务来开发单个应用的方式或途径
- 每个服务基于单一业务能力构建,运行在自己的进程中,并使用轻量级机制通信,通常是HTTP API,并能够通过自动化部署机制来独立部署
- 这些服务可以使用不同的编程语言实现,以及不同数据存储技术,并保持最低限度的集中式管理
2. 微服务架构特点
- 单一职责
- 服务粒度小
- 面向服务(对外暴露REST api)
- 服务之间相互独立
与使用ESB(企业服务总线)的SOA架构的区别:微服务架构没有使用ESB,有服务治理注册中心;业务粒度小
3. 微服务经典架构图
4. 微服务架构与SAO架构的区别
功能 | SOA | 微服务 |
---|---|---|
组件大小 | 大块业务逻辑 | 单独任务或小块业务逻辑 |
耦合 | 通常松耦合 | 总是松耦合 |
管理 | 看重中央管理 | 看重分散管理 |
目标 | 确保应用能够交互操作 | 易维护、易扩展、更轻量级的交互 |
5.服务调用方式
RPC:基于socket,速度快,效率高;webservice、
dubbo
HTTP:基于TCP,封装比较臃肿;对服务和调用方没有任何技术、语言的限定,自由灵活;RESTful,
Spring Cloud
6. Http客户端工具
一般情况下有如下三种http客户端工具类包都可以方便的进行http服务调用:
- HttpClient
- OKHttp
- URLConnection
spring 提供了RestTemplate的工具类对上述的3种http客户端工具类进行了封装,可在spring项目中使用RestTemplate进行服务调用
三、SpringCloud
1. 概述
官网:
点击此处跳转
Spring Cloud它将现在非常流行的一些技术整合到一起,实现了诸如:配置管理,服务发现,智能路由,负载均衡,熔断器,控制总线,集群状态等功能;协调分布式环境中各个系统,为各类服务提供模板性配置。其主要涉及的组件包括:
- Eureka:注册中心
- Zuul、Gateway:服务网关
- Ribbon:负载均衡
- Feign:服务调用
- ConfigServer:配置中心
- Hystrix或Resilience4j:熔断器
以上只是其中一部分,架构图如下:
2. 版本说明
Spring Cloud不是一个组件,而是许多组件的集合;它的版本命名比较特殊,是以A到Z的为首字母的一些单词(其实是伦敦地铁站的名字)组成