建站服务公司网站源码,自助搭建网站系统,网站建设方案计划书,请公司建网站一、服务架构演变
1. 单体架构
单体架构#xff1a;将业务的所有功能集中在一个项目中开发#xff0c;打成一个包部署
单体架构的优点#xff1a;
架构简单部署成本低
单体架构的缺点#xff1a;
耦合度高 2. 分布式架构
分布式架构#xff1a; 根据业务功能对系… 一、服务架构演变
1. 单体架构
单体架构将业务的所有功能集中在一个项目中开发打成一个包部署
单体架构的优点
架构简单部署成本低
单体架构的缺点
耦合度高 2. 分布式架构
分布式架构 根据业务功能对系统进行拆分每个业务模块作为独立项目开发称为一个服务
分布式架构的优点
降低服务耦合有利于服务升级拓展
分布式架构需要考虑的问题
服务拆分粒度如何服务集群地址如何维护服务之间如何实现远程调用服务健康状态如何感知
哪些分布式技术可以解决分布式架构问题
WebServiceHessionESBDubbo (2012年由阿里巴巴开源)SpringCloud (2015年至今是其发展最为火热的时期)SpringCloudAlibaba (2018年至今是其发展最为火热的时期)
但是近几年应用最广泛的最火热的莫过于微服务方案
3. 微服务
微服务是一种经过良好架构设计的分布式架构方案
微服务架构特征
单一职责微服务拆分粒度更小每一个服务都对应唯一的业务能力做到单一职责避免重复业务开发面向服务微服务对外暴露业务接口自治团队独立(一个服务对应一个开发团队)、技术独立(基于业务可用选择使用不同的技术)、数据独立(一个服务一个团队对应一个数据库)、部署独立隔离性强服务调用做好隔离、容错、降级避免出现级联问题
微服务优点拆分粒度更小、服务更独立、耦合度更低
微服务缺点架构非常复杂运维、监控、部署难度高
二、微服务技术对比
1. 微服务结构
为了描述方便把一个完整项目里的小服务称为微服务(或叫节点)这些微服务的整体称为集群关系如下
项目 集群 微服务 业务 接口
从整体上来看目前SpringCloud的应用量最大并且逐年在增长而Dubbo虽然是国内使用较多的RPC框架但在微服务场景下的应用相对较少。SpringCloudAlibaba相对于前两者还比较年轻但是由于集成了众多优秀的Alibaba组件以及其在国内云原生和微服务落地方面的独特优势因此得到了广泛的应用和关注
这三个技术栈的使用强度排序: SpringCloud SpringCloudAlibaba Dubbo
2. 技术对比
这三个技术栈的对比如下
相同点:
都需要去做微服务拆分也就是把一个完整的项目根据功能拆分成很多微服务再把这些拆下来的微服务做成集群。集群里的每个微服务都要遵循单一职责的原则并且要面向服务对外暴露接口这样的话集群里的微服务之间就可以相互调用由于项目会拆分成多个微服务为了方便同时管理这些微服务(微服务之间的调用关系)就需要 注册中心用来拉取或注册服务信息由于项目会拆分成多个微服务为了方便同时管理这些微服务(每个微服务的配置)就需要 配置中心用来统一管理整个集群的微服务的配置由于项目已经拆分成多个微服务用户到底访问哪个微服务呢就需要在集群做一个统一的网关作用是作为用户访问微服务的入口
不同点:
例如同样是注册中心但是Dubbo、SpringCloud、SpringCloudAlibaba所用的技术不同。如下表
无 表示没有实现这个技术 Dubbo SpringCloud SpringCloudAlibaba zookeeper、Redis Eureka、Consul Nacos、Eureka Dubbo协议 Feign (http协议) Dubbo、Feign 无 SpringCloudConfig SpringCloudConfig、Nacos 无 SpringCloudGateway、Zuul SpringCloudGateway、Zuul dubbo-admin功能弱 Hystrix Sentinel 三种常用的技术栈不同的技术栈是可以混合使用那当这仨技术栈混合使用时会有什么特点呢如下图 三、SpringCloud
SpringCloud是目前国内乃至全世界使用最广泛的微服务框架
官网地址:
https://spring.io/projects/spring-cloud
SpringCloud集成了各种微服务功能组件并基于SpringBoot实现了这些组件的自动装配也就是说SpringCloud的底层基于SpringBoot做了自动装配。从而提供了良好的开箱即用体验如下
// 服务注册发现
Eureka、Nacos、Consul
// 服务远程调用
OpenFeign、Dubbo
// 服务链路监控
Zipkin、Sleuth
// 统一配置管理
SpringCloudConfig、Nacos
// 统一网关路由
SpringCloudGateway、Zuul
// 流控、降级、保护
Hystix、Sentinel
SpringCloud和SpringBoot的版本兼容关系: SpringCloud版本 SpringBoot版本 2022.0.x aka Kilburn 3.0.x 2021.0.x aka Jubilee 2.6.x(小于2021.0.3用这个) 或 2.7.x(大于等于2021.0.3用这个) 2020.0.x aka Ilford 2.4.x(小于2020.0.3用这个) 或 2.5.x(大于等于2020.0.3用这个) Hoxton 2.2.x(小于SR5用这个) 或 2.3.x(大于等于SR5用这个) Greenwich 2.1.x Finchley 2.0.x Edgware 1.5.x Dalston 1.5.x
在下面的正式学习中我们使用的是Hoxton的SR10版本所以对应的SpringBoot版本是2.3.x版本