- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SpringCloud的五⼤组件详解
⾸先看⼀张springCloud的图⽚:
⼆、简单介绍下什么是springCloud
“Spring Cloud为开发⼈员提供了快速构建分布式系统中⼀些常见模式的⼯具(例如配置管理,服务发现,断路器,智能路由,微代理,
控制总线)。分布式系统的协调导致了样板模式, 使⽤Spring Cloud开发⼈员可以快速地⽀持实现这些模式的服务和应⽤程序。他们将在任
何分布式环境中运⾏良好,包括开发⼈员⾃⼰的笔记本电脑,裸机数据中⼼,以及Cloud Foundry等托管平台。” 来⾃官⽹
三、为了⽅便理解假设⼀个业务场景
假设现在开发⼀个电商⽹站,要实现⽀付订单功能:流程如下–
1.创建⼀个订单后,如果⽤户⽴刻⽀付了这个订单,我们需要将这个订单状态更新为(已经⽀付)
2.扣减相对应的商品库存
3.通知仓储中⼼,进⾏发货
4.给⽤户这次购物怎加相对应的积分
针对上述流程,我们需要有订单服务、库存服务、仓储服务、积分服务,整个流程的⼤体思路如下:
1.⽤户针对⼀个订单完成⽀付后,就回去找订单服务,更新订单状态
2.订单服务调⽤库存服务,完成相应的功能
3.订单服务调⽤仓储服务,完成相应的功能
4.订单服务调⽤积分服务,完成相应的功能
整个过程可以如下图所⽰:
四、SpringCloud核⼼组件Eureka(类似于zookeeper)
⾸先考虑⼀个问题,订单服务要调⽤库存服务、仓储服务、积分服务,如何调⽤呢?
答:订单服务根本不知道上述服务在哪台服务器上,所以没法调⽤,⽽Eureka的作⽤就是来告诉订单服务它想调⽤的服务在哪台服务器
上,Eureka有客户端和服务端,每⼀个服务上⾯都有Eureka客户端,可以把本服务的相关信息注册到Eureka服务端上,那么我们的订单服
务就可以就可以找到库存服务、仓储服务、积分服务了
我们上述的业务使⽤Eureka后如下图:
总结:
Eurake客户端:负责将这个服务的信息注册到Eureka服务端中
Eureka服务端:相当于⼀个注册中⼼,⾥⾯有注册表,注册表中保存了各个服务所在的机器和端⼝号,可以通过Eureka服务端找到各个服
务
五、SpringCloud核⼼组件:Feign(类似于dubbo)
通过上⾯的Eureka,现在订单服务确实知道库存服务、积分服务、仓储服务在哪了,但是我们如何去调⽤这些服务呢,如果我们⾃⼰去写
很多代码调⽤那就太⿇烦了,⽽SpringCloud已经为我们准备好了⼀个核⼼组件:Feign,接下来看如何通过Feign让订单服务调⽤库存服
务,注意Feign也是⽤在消费者端的;
订单服务:
库存服务:
没有底层的建⽴连接、构造请求、解析响应的代码,直接就是⽤注解定义⼀个 FeignClient接⼝,然后调⽤那个接⼝就可以了。⼈家Feign
Client会在底层根据你的注解,跟你指定的服务建⽴连接、构造请求、发起靕求、获取响应、解析响应,等等。这⼀系列脏活累活,⼈家
Feign全给你⼲ 了。
问题来了,Feign是如何做到 的呢?其实Feign的⼀个机制就是使⽤了动态代理:
⾸先,如果你对某个接⼝定义了@FeignClient注解,Feign就会针对这个接⼝创建⼀个动态代理
接着你要是调⽤那个接⼝,本质就是会调⽤ Feign创建的动态代理,这是核⼼中的核⼼
Feign的动态代理会根据你在接⼝上的@RequestMapping等注解,来动态构造出你要请求的服务的地址
最后针对这个地址,发起请求、解析响应
六、springCloud核⼼组件:Ribbon
上⾯可以通过Eureka可以找到服务,然后通过Feign去调⽤服务,但是如果有多台机器上⾯都部署了库存服务,我应该使⽤Feign去调
⽤哪⼀台上⾯的服务呢,这个时候就需要Ribbon闪亮登场了,它在服务消费者端配置和使⽤,它的作⽤就是负载均衡,然后默认使⽤
的负载均衡算法是轮询算法,Ribbon会从Eureka服务端中获取到对应的服务注册表,然后就知道相应服务的位置,然后Ribbon根据
设计的负载均衡算法去选择⼀台机器,Feigin就会针对这些机器构造并发送请求
如下图所⽰:
七、SpringCloud的核⼼组件:Hystrix
在微服务架构⾥,⼀个系统会有多个服务,以本⽂的业务场景为例:订单服务在⼀个业务流程⾥需要调⽤三个服务,现在假设订单服务
⾃⼰最多只有100个线程可以处理请求,如果积分服务出错,每次订单服务调⽤积分服务的时候,都会卡住⼏秒钟,然后抛出—个超时
您可能关注的文档
最近下载
- 多层住宅小区工程监理规划.docx VIP
- NY_T 3213-2023 植保无人驾驶航空器 质量评价技术规范.docx VIP
- 盘扣式悬挑脚手架施工方案施工计划.doc VIP
- 部编版小学一年级语文上册表格式教案全册.doc VIP
- 电线电缆抗张强度检测结果的测量不确定度评定.doc VIP
- (正式版)H-G-T 22820-2024 化工安全仪表系统工程设计规范.docx VIP
- 绘本故事PPT课件之我好害怕.pptx
- 广东省惠州市博罗县泰美镇城镇总体规划项目建议书.doc VIP
- 虚拟仪器及LabVIEW知到智慧树期末考试答案题库2025年山东科技大学.docx VIP
- 2025年全国Ⅰ卷英语听力评析和听力材料二次开发(课件).pptx
文档评论(0)