springcloud⼏个常⽤模块简介
springCloud⼏个常⽤模块的简介
Erueka:注册中⼼
Eureka是⼀个服务注册与发现组件,简单说就是⽤来统⼀管理微服务的通信地址的组件,它包含了EurekaServer 服务端(也叫注册中⼼)和EurekaClient客户端两部分组成,EureakServer是独⽴的服务,⽽EurekaClient需要集成到每个微服务中。
微服务(EurekaClient)在启动的时候会向EureakServer提交⾃⼰的服务信息(通信地址如:服务名,ip,端⼝等),在 EurekaServer会形成⼀个微服务的通信地址列表存储起来。 — 这叫服务注册
Ribbon 负载均衡
Ribbon是Netflix发布的云中间层服务开源项⽬,主要功能是提供客户端负载均衡算法。Ribbon客户端组件提供⼀系列完善的配置项,如,连接超时,重试等。简单的说,Ribbon是⼀个客户端负载均衡器,Ribbon可以按照负载均衡算法(如简单轮询,随机连接等)向多个服务发起调⽤(正好可以解决上⾯的问题),我们也很容易使⽤Ribbon实现⾃定义的负载均衡算法。
两个user-server(⽤户服务)的服务名要⼀样,ip和端⼝不⼀样),在注册中⼼的服务通信地址清单中user-server(⽤户服务)这个服务下⾯会挂载两个通信地址 。 order-server(订单服务)会定时把服务通信地址清单拉取到本地进⾏缓存, 那么当order-server(订单服务)在向
user-server(⽤户服务)发起调⽤时,需要指定服务名为 user-server(⽤户服务);那么这个时候,ribbon会根据user-server(⽤户服务)这个服务名到两个order-server的通信地址 , 然后ribbon会按照负载均衡算法(默认轮询)选择其中的某⼀个通信地址,发起http请求实现服务的调⽤
feign 基于ribbon封装的负载均衡
Feign是⼀个声明式的http客户端,使⽤Feign可以实现声明式REST调⽤,它的⽬的就是让Web Service调⽤更加简单。Feign整合了Ribbon和SpringMvc注解,这让Feign的客户端接⼝看起来就像⼀个Controller。Feign提供了HTTP请求的模板,通过编写简单的接⼝和插⼊注解,就可以定义好HTTP请求的参数、格式、地址等信息。⽽Feign则会完全代理HTTP请求,我们只需要像调⽤⽅法⼀样调⽤它就可以完成服务请求及相关处理。同时Feign整合了Hystrix,可以很容易的实现服务熔断和降级
Hystrix
Hystrix是处理依赖隔离的框架,将出现故障的服务通过熔断、降级等⼿段隔离开来,这样不影响整个
系统的主业务(⽐如你得了传染病是不是要把你关起来隔离呢),同时也是可以帮我们做服务的治理和监控。
Hystrix的英⽂是豪猪,中⽂翻译为 熔断器,其思想来源于我们家⾥的保险开关,当家⾥出现短路,保险开关及时切掉电路,保证家⾥⼈员的安全,其⽬的就是起保护作⽤。
其设计原则如下:
1.防⽌单个服务异常导致整个微服务故障。
2.快速失败,如果服务出现故障,服务的请求快速失败,线程不会等待。
3.服务降级,请求故障可以返回设定好的⼆⼿⽅案数据(兜底数据)。
4.熔断机制,防⽌故障的扩散,导致整个服务瘫痪。
5.服务监控,提供了Hystrix Bashboard仪表盘,实时监控熔断器状态
zuul
Zuul 是netflix开源的⼀个API Gateway 服务器, 本质上是⼀个web servlet(filter)应⽤。Zuul 在云平台上
提供动态路由(请求分发),监控,弹性,安全等边缘服务的框架。Zuul 相当于是设备和 Netflix 流应⽤的 Web ⽹站后端所有请求的前门,也要注册⼊Eureka.
需要注意的是,zuul本⾝是⼀个独⽴的服务,默认集成了Ribbon,zuul通过Ribbon将客户端的请求分发到下游的微服务,所以zuul需要通过Eureka做服务发⾏,同时zuul也集成了Hystrix。
config
在分布式系统中,由于服务数量很多,为了⽅便服务配置⽂件统⼀管理我们需要⽤到置中⼼组件。在Spring Cloud中,分布式配置中⼼组件spring cloud config 它可以帮我们集中管理配置⽂件,修改配置⽆需重启服务 等,它⽀持配置⽂件放在配置服务的本地,也⽀持放在远程如Git仓库中集中管理。在spring cloud config 分为了服务端 config server和客户端config client 两个⾓⾊。
⽤spring cloud config管理配置⽂件,我们需要把微服务的配置⽂件上传到Git仓库 , 然后搭建独⽴的ConfigServer服
务,ConfigServer除了要从Git仓库拉取配置之外,还要注册到EurekaServer中,我们把ConfigServer本⾝也当做是⼀个微服务(当然ConfigServer可以脱离注册中⼼使⽤,但是如果客户端使⽤服务发现的⽅式指向配置中⼼就需要注册到注册中⼼了),⾄于ConfigClient这需要集成到具体的微服务中,如⽀
付服务,订单服务等。其⼯作流程是,微服务通过ConfigClient向配置中⼼ConfigServer发起请求获取配置⽂件,配置中⼼从GIT仓库获取配置,然后再⼀路返回给微服务。
springcloud难学吗需要注意是,EurekaServer的配置不能交给ConfigServer管理,因为必须要先启动EurekaServer才能启动ConfigServer,试问EurekaServer都没配置怎么启动?
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论