# springcloud-learning **Repository Path**: FangYiMing/springcloud-learning ## Basic Information - **Project Name**: springcloud-learning - **Description**: springcloud学习记录 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-09-09 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ###Spring Cloud学习记录 --- ####一、spring的微服务架构图 Spring官方的架构图: ![Spring官方微服务架构图](https://upload-images.jianshu.io/upload_images/1300968-6ddf6d98df3de5d9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 分为以下几块组件: 1. **API网关** >对外(浏览器、客户端、移动端等)暴露接口,提供路由、过滤、身份认证、负载均衡等功能 2. **服务注册与发现** >将微服务注册到注册中心,并可以被其他微服务发现及调用。(通常同一微服务都是部署多个的,服务调用组件都会提供负载均衡的功能) 3. **配置中心** >统一的配置中心(通常会部署成分布式),能够被各个服务读取到,提供配置文件的版本管理、权限控制的功能 4. **分布式追踪** >当微服务之间的依赖关系变得很复杂时(A调用了B,B调用了C,C又调用了D...),就需要服务链路追踪组件来分析调用链的复杂度 5. **微服务** 在架构图中没有体现的: 1. **断路器** >在微服务中,某个服务调用了多个其他服务是很常见的,当其中某个服务由于网络或自身原因出现问题,调用这个服务时就会出现阻塞,若有大量请求进来,容器的线程资源会被消耗完,从而导致服务不可用。因为服务和服务之间有依赖性,故障会传播,这就是服务故障的“雪崩”效应。
>引入断路器后,在对某个服务的调用失败次数达到一个阈值时,断路器会被打开,会快速返回一个固定值。避免连锁故障 2. **消息总线** >使用轻量级的消息代理(一般是消息队列)用于微服务之间通讯。(SpringCloud可在各个服务之间传递事件) 3. **分布式事务** >当程序单机运行,数据库能通过事务为我们保证数据的一致性。但是当程序分布式运行时,我们需要在分布式环境下保持数据一致性,此时就需要分布式事务组件来实现这个功能 ####二、SpringCloud各组件的开源实现 **SpringCloud是以微服务为核心的分布式系统的一个构建标准**,有如下各个实现,其中的多个组件可以实现无缝切换 ![SpringCloud各个实现](https://upload-images.jianshu.io/upload_images/1300968-d4fb7895ec1039ac.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ####三、SpringCloud的版本问题 SpringCloud的版本以伦敦地铁站名字演进,从A开始,目前最新版本是Hoxton.SR8,官方发布的正式版本号都是以RELEASE或者SRX结尾(X表示一个数字)。这两种版本号都是可以正式用于生产环境的,当一个版本的SpringCloud项目发布的内容积累到一定程度或者一个严重bug解决可用后,就会发布一个“service release”版本,也就是SRX版本。官方会在某个SRX版本上标注GA(General Availability),表示官方推荐广泛使用。 ![SpringCloud官方版本图](https://upload-images.jianshu.io/upload_images/1300968-93d9cfe4a18c3611.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) [SpringCloud版本](https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies) + Dalston >Spring Boot版本:1.5.x + Edgware >Spring Boot版本:1.5.x + Finchley >Spring Boot版本:2.0.x + Greenwich >Spring Boot版本:2.1.x + Hoxton >Spring Boot版本:2.2.x,2.3.x(SR5起) [SpringCloudAlibaba版本](https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-alibaba-dependencies) >SpringCloudAlibaba的版本号与SpringBoot一致 + 1.5.x版本适用于Spring Boot 1.5.x + 2.0.x版本适用于Spring Boot 2.0.x + 2.1.x版本适用于Spring Boot 2.1.x + 2.2.x版本适用于Spring Boot 2.2.x ####四、学习资料推荐 [方志朋的专栏](https://www.fangzhipeng.com/spring-cloud.html) (有完整版的学习路线,涵盖了SpringCloud的各个组件) [SpringCloudAlibaba Github主页](https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md) ####五、参考资料 [进击的Spring Cloud Alibaba](https://mp.weixin.qq.com/s/3Rv5mp1-eBqCPf-_W2aRRg) [Spring Cloud](https://spring.io/cloud) [聊聊Spring Cloud版本的那些事儿](https://www.jianshu.com/p/a487e70f667f) [SpringCloudAlibaba Github主页](https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md)