对于SpringCloud来说,首先我们需要认识一些基本的组件,这会让我们之后的讨论和交流更有效率。
组件名字和发音
如果你都不知道别人再说什么,或者别人都不知道你再讲什么,就很尴尬了。
Eureka [jʊ'ri:kə]
Ribbon [ˈrɪbən]
Feign [fen]
Hystrix [hɪst'rɪks]
Zuul [zulu]
Sleuth [sluθ]
Turbine [ˈtɜ:rbaɪn]
重要组件说明
这里的说明借用网上一个很6的分类方式来说明。
润物无声类和独挑大梁类。
独挑大梁,独自启动不需要依赖其它组件。
Eureka,服务注册中心,特性有失效剔除、服务保护。(类似生活中的大堂,登记了整个项目的所有服务)
Dashboard,Hystrix仪表盘,监控集群模式和单点模式,其中集群模式需要收集器Turbine配合。(类似生活中的保安监控室)
Zuul,API服务网关,功能有路由分发和过滤。(类似交警叔叔,指挥道路交通)
Config,分布式配置中心,支持本地仓库、SVN、Git、Jar包内配置等模式。(类似规章制度,每个人都从这里获取规定配置)
润物无声,融合在每个微服务中、依赖其它组件并为其提供服务。
Ribbon,客户端负载均衡,特性有区域亲和、重试机制。(类似nginx)
Hystrix,客户端容错保护,特性有服务降级、服务熔断、请求缓存、请求合并、依赖隔离。(怕访问过于频繁服务挂了,进行限流,太频繁的请求就直接拒绝)
Feign,声明式服务调用,本质上就是Ribbon+Hystrix。(用注解的方式进行服务调用,代码更好看了)
Stream,消息驱动,有Sink、Source、Processor三种通道,特性有订阅发布、消费组、消息分区。
Bus,消息总线,配合Config仓库修改的一种Stream实现。(用于广播消息,一说大家都知道了啦)
Sleuth,分布式服务追踪,需要搞清楚TraceID和SpanID以及抽样,如何与ELK整合。(服务多了,调用的线路就会很复杂,需要跟踪来知道你到底是怎么走的)
总结
SpringCloud组件太多,很多人会觉得学习成本很大,而且即使学到了好像在实际中很难去应用,因为应用场景导致。所以在学习的时候,需要抓住重点,并不是所有组件在一个项目中都会用到的,很多时候我们需要的只是其中必要的部分,有了必要的东西我们就能完成我们所需要的功能,而多数的组件是为了方便很多功能,或者对于后面的业务扩展有追求的时候使用的。之后会慢慢更新每个组件的细节使用,以及实际使用的业务场景。
参考博客:
https://blog.csdn.net/yejingtao703/article/details/78331442
https://blog.csdn.net/forezp/article/details/70148833/