SpringCloud的五大组件详解.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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个线程可以处理请求,如果积分服务出错,每次订单服务调⽤积分服务的时候,都会卡住⼏秒钟,然后抛出—个超时

文档评论(0)

166****9181 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档