目录
一、单体架构
1、概念
2、优点
3、缺点
二、分布式架构
1、概念
2、优点
3、缺点
三、微服务
1、概念
2、优点
3、缺点
四、微服务技术对比
五、SpringCloud
六、服务拆分
1、注意事项
2、服务远程调用
一、单体架构
1、概念
业务的所有功能都集中到一个项目中进行开发,打成一个包进行部署
2、优点
这种开发方式架构简单,且部署成本低,容易快速上手
3、缺点
所有的功能都集中在一个项目里,代码的耦合度较高
二、分布式架构
1、概念
根据业务功能对系统进行拆分,每个业务模块作为一个独立的项目进行开发,这样的一个项目称为一个服务
2、优点
代码的耦合度低,有利于服务的升级与扩展
3、缺点
架构复杂,难度较大,且需要考虑的问题也有很多,比如服务的拆分粒度如何?服务集群的地址如何维护?服务之间如何实现远程调用?服务的健康状态如何感知等
三、微服务
1、概念
微服务是一种良好的架构设计的分布式架构方案。他的主要特点是:1.单一职责,微服务的拆分粒度更小,每一个服务都对应唯一的业务功能,避免重复开发。2.面向服务,微服务对外暴露业务接口。3.自治,团队独立、技术独立、数据独立、部署独立,每个业务都有自己的数据库,每一个业务都有自己的技术栈。4.隔离性强:服务的调用做好隔离、容错、降级,避免出现级联问题
2、优点
拆分粒度更小、服务更独立、耦合度更低
3、缺点
架构更复杂、运维监控部署的难点更高
四、微服务技术对比
国内主流的微服务框架主要有SpringCloud与Dubbo
Dubbo | SpringCloud | SpringCloudAlibaba | |
注册中心 | zookeeper、Redis | Eureka、Consul | Eureka、Nacos |
远程调用 | Dubbo协议 | Feign(HTTP协议) | Dubbo、Feign |
配置中心 | 无 | SpringCloudConfig | SpringCloudConfig、Nacos |
服务网关 | 无 | SpringCloudGateway、Zuul | SpringCloudGateway、Zuul |
监控保护 | dubbo-admin(功能弱) | Hystrix | Sentinel |
五、SpringCloud
SpringCloud是国内目前使用最广泛的微服务框架,它集成了各种微服务功能组件,基于SpringBoot实现了组件的自动装配,提供了良好的开箱即用的体验
六、服务拆分
1、注意事项
在进行服务拆分时,我们需要注意不同的服务,不要开发相同的业务。微服务数据独立,不能访问其他服务的数据库。微服务可以将自己的业务暴露为接口,供其他服务调用
2、服务远程调用
远程调用的实现基于RestTemplate这个类来发起http请求去获取其他服务的数据,首先我们需要在配置类里注入这个对象rh
@Configuration
public class RestConfig {@Beanpublic RestTemplate restTemplate() {return new RestTemplate();}
}
然后我们可以在需要调用的地方装配该对象,调用其getForObject(url,类对象)来获取其他服务的数据
User user = restTemplate.getForObject("http://127.0.0.1:8081/user/getUser",User.class);