springcloud是微服务架构的集大成者,将一系列优秀的组件进行了整合。基于springboot构建,对咱们熟悉spring的程序员来讲,上手比较容易。前端
经过一些简单的注解,咱们就能够快速的在应用中配置一下经常使用模块并构建庞大的分布式系统。java
下面主要用图来理解下各个组件的概念吧程序员
被我搞绿的,是比较经常使用的组件!!算法
那么本篇也简单介绍下被我搞绿的,我没搞的,大家找度娘搞吧。 spring
Eureka:全球(美国)/jʊ'rikə/ 后端
n. 尤里卡(美国地名);优铜api
n. (美)欧雷卡(人名)springboot
int. (eureka) 我发现了,我找到了;有了restful
功能:服务注册与发现,各个服务启动时,Eureka Client都会将服务注册到Eureka Server,而且Eureka Client还能够反过来从Eureka Server拉取注册表,从而知道其余服务在哪里 架构
Ribbon: 全球(美国)/'rɪbən/
n. [动力] 涡轮;[动力] 涡轮机
功能:服务请求调用客户端负载均衡,服务间发起请求的时候,基于Ribbon作负载均衡,从一个服务的多台机器中选择一台
Feign: 全球(英语)/feɪn/
vt. 伪装;装做;捏造;想象
vi. 伪装;装做;做假;佯做
功能:服务请求调用,基于Feign的动态代理机制,根据注解和选择的机器,拼接请求URL地址,发起请求
Hystrix:hy /,etʃ 'waɪ/ strix /s坠x/ 嗨s坠x
短语:.豪猪属 猬草属 豪猪 断路器
功能:熔断器,发起请求是经过Hystrix的线程池来走的,不一样的服务走不一样的线程池,实现了不一样服务调用的隔离,避免了服务雪崩的问题
Zuul:/zuːl/
短语:zuul 网关 路由网关 祖鲁乐团 静态文件
功能:api路由网关,若是前端、移动端要调用后端系统,统一从Zuul网关进入,由Zuul网关转发请求给对应的服务
看别人博客的一句话,贴出来:当我对zuul有点映像的时候,它已通过时了,SpringCloud Gateway就诞生,这让咱们这些33岁的老程序员怎么活呢。
Sleuth: /sluθ/
n. 侦探;警犬
vi. 作侦探;侦查
功能:服务链路追踪,主要功能就是在分布式系统中提供追踪解决方案,而且兼容支持了 zipkin
他有三端构成
1.Eureka Server 服务注册与发现中心端
2.Service Provider服务提供者端
3.Service Consumer服务调用者端
官方图:
接口调用,restful风格http能够用调java接口方式去调用。
本身组装url与参数还有请求头等信息,不用本身去写啦。简单易用。
看下调用方式与代码
//url=http://www.me.com
@FeignClient(url = "${feign.order-promotion.url}") public interface PromotionClient { @RequestMapping(value = "/Member/Promotion/ReleasePromtionByOrderId", method = RequestMethod.POST) BaseWcfResponse<Integer> ReleasePromtionByOrderId(@RequestBody ReleasePromtionReq request); }
客户端负载均衡,一个服务部署多台机器的状况feign不知道调用那台服务,那么ribbon就可使用默认abab的轮询算法,给肯定那一台机器
熔断器,个别服务接口挂拉,可能会影响整个服务链路,致使总体服务不可用,这个时候hystrix就派上用场啦。
前端、移动端要调用后端系统,统一从Zuul网关进入,由Zuul网关转发请求给对应的服务
感受好累,接下来会写这个总架构图中的代码与运维实现。
就这吧,88