开始学习springcloud之前应该了解架构演进、相关组件、及一些注意事项
架构演变
单体架构
单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署
优点:架构简单、部署成本低
缺点:耦合度高、扩展性差
适合小型项目,如学生管理系统
分布式架构
分布式架构:根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务
优点:降低服务耦合、有利于服务升级拓展
缺点:拆分粒度、集群维护、远程调用等(引入微服务方案)
适合大型互联网项目,如京东、淘宝
微服务
微服务是一种经过良好架构设计的分布式架构方案,微服务架构特征:
* 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发
* 面向服务:微服务对外暴露业务接口
* 自治:团队独立、技术独立、数据独立、部署独立
* 隔离性强:服务调用做好隔离、容错、降级、避免出现级联问题
优点:拆分粒度更小、服务更独立、耦合度更低
缺点:架构复杂、运维、监控、部署难度提高
微服务技术对比
Dubbo、SpringCloud、SpringCloudAlibaba
Dubbo | SpringClound | SpringCloundAlibaba | |
---|---|---|---|
注册中心 | zookeeper、redis | Eureka、Consul | Nacos、Eureka |
远程调用 | Dubbo协议 | Feign(http协议) | Dubbo、Feign |
配置中心 | 无 | SpringCloudConfig | SpringCloudConfig、Nacos |
服务网关 | 无 | SpringCloudGateway、Zuul | SpringCloudGateway、Zuul |
监控和保护 | dubbo-damin,功能弱 | Hystrix | Sentinel |
认识微服务
SpringCloud
亮点:基于springboot实现组件自动装配,从而提供良好的开箱即用体验
springcloud和springboot版本对应
本笔记使用Hoxton.SR10,对应springboot版本为2.3.X版本
服务拆分及远程调用
服务拆分注意事项
1.不同微服务、不要重复开发相同业务
2.微服务数据独立、不要访问其他服务的数据库
3.服务可将自己的业务暴露为接口,供其他服务使用
远程调用
1.基于RestTemplate发起http请求实现远程调用
2.http请求和语言无关,只要知道ip、端口、接口路径、请求参数即可