引言
刚刚看了某位大佬(这位大佬的图片被我拿下来了,也不好意思删除水印,就这样吧)的笔记,讲的SpringCloud源码结合图片实在是详细,为了把他的知识转换成自己的,让自己印象更深刻,才写下这篇随笔。
正文
一、业务场景介绍:
二、SpringCloud的组件
SpringCloud有五大核心组件,分别是Eureka、Ribbon、Feign、Hystrix、Zuul。其作用分别是:
1,Eureka:用于服务的注册与发现,Eureka Client负责提供服务并拉去服务的注册表,Eureka Server负责接受服务并把注册表发送给Eureka Client。Eureka的精妙在于,其发送注册表的操作全都是在内存中完成的,而且因为多级缓存的存在,使得客户端能及时获取到注册表,多级缓存查询顺序为:**ReadOnlyCacheMap–>ReadWriteCacheMap–>内存中获取实际的注册表数据
2,Ribbon:核心功能就是负载均衡,使得Feign明确地知道访问哪个服务,它的算法为经典的Round Robin算法(也就是轮询算法)。
3,Feign:我们在一个业务,如果涉及到请求多个服务,难道我们要每个服务都要自己去写一个HTTP请求过去?那也太LOW了吧!所以,Feign帮我们完成了这一步骤,关键机制就是使用了动态代理,Feign会根据RequestMapping分析出当前服务所需要的请求,并帮助我们构建起这些请求的链接。
4,Hystrix:在微服务的架构里,一个业务往往涉及到多个服务,所以为了防止雪崩效应,servlet资源耗尽,会选择Hystrix进行服务的隔离、熔断和降级。
隔离:每一个服务都有自己单独的线程池;
熔断:服务之间都互不影响;
降级:如果真的服务出错,有另外的解决方案,例如,我订单生效了,积分系统崩溃,从而我的积分没有加上去,这时候,生成一条记录用以后期人工加分。
5,Zuul,所有请求都往网关走,网关会根据请求中的一些特征,将请求转发给后端的各个服务
总结
由于我是看大佬写的随笔,所以我默认是转载,希望大家也多多支持这位大佬,最后附上原创文章的链接: