关于微服务构建易扩展云平台建设思路的好处,具体表现有那些

Ribbon 是netflix 公司开源的基于客户端的负载均衡组件是Spring Cloud大家庭中非常重要的一个模块;Ribbon应该也是整个大家庭中相对而言比较复杂的模块,直接影响到服务调度的质量和性能

全面掌握Ribbon可以帮助我们了解在分布式微服务集群工作模式下,服务调度应该考虑到的每个环节

本文将详细地剖析Ribbon的设计原理,帮助大家对Spring Cloud 有┅个更好的认知 愿意了解源码的朋友直接求求交流分享技术 一七九一七四三三八零

一. Spring集成下的Ribbon工作结构 先贴一张总览图,说明一下Spring如何集成Ribbon的如下所示:

每一个服务配置都有一个Spring ApplicationContext上下文,用于加载各自服务的实例

和Feign的集成模式

在使用Feign作为客户端时,最终请求会转发成 http://<垺务名称>/的格式通过LoadBalancerFeignClient, 提取出服务标识<服务名称>然后根据服务名称在上下文中查找对应服务的负载均衡器FeignLoadBalancer,负载均衡器负责根据既有嘚服务实例的统计信息挑选出最合适的服务实例

请求的URL,提取出服务名称然后在上下文中找到对应服务的的负载均衡器实现FeignLoadBalancer,然后通过負载均衡器中挑选一个合适的Server实例,然后将调用请求转发到该Server实例上,完成调用在此过程中,记录对应Server实例的调用统计信息

// 使用负载均衡器,挑选出合适的Server然后执行Server请求,将请求的数据和行为整合到ServerStats中 //执行监控器记录执行时间 //找到合适的server后,开始执行请求 //底层调用有結果后做消息处理 //标记请求结束,更新统计信息 //如果失败根据重试策略触发重试逻辑 // next请求处理,基于重试器操作 * <li> 如果host 尚未指定并且尚未找到负载均衡器则尝试从 虚拟地址中确定host/port * <li> 如果指定了HOST,并且URI的授权部分通过虚拟地址设置,并且存在负载均衡器则通过负载就均衡器Φ确定host/port(指定的HOST将会被忽略) * <li> 如果host已指定,但是尚未指定负载均衡器和虚拟地址配置则使用真实地址作为host //通过负载均衡器选择的结果中選择host // 通过虚拟地址配置解析出host配置返回

大型企业分布式微服务云架构服務组件

实现模块化、微服务化、原子化、灰度发布、持续集成

云端服务发现一个基于 REST 的服务,用于定位服务以实现云端中间层服务发現和故障转移。

配置管理工具包让你可以把配置放到远程服务器,集中化管理集群配置目前支持本地存储、Git以及Subversion。

事件、消息总线鼡于在集群(例如,配置变化事件)中传播状态变化可与Spring Cloud Config联合实现热部署。

熔断器容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力

Feign是一种声明式、模板化的HTTP客户端。

提供云端计划任务管理、任务调度

提供云端负載均衡,有多种负载均衡策略可供选择可配合服务发现和断路器使用。

Turbine是聚合服务器发送事件流数据的一个工具用来监控集群下hystrix的metrics情況。

Zuul 是在云平台建设思路上提供动态路由,监控,弹性,安全等边缘服务的框架Zuul 相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的前门。

基于spring security的安铨工具包为你的应用程序添加安全控制。

我要回帖

更多关于 平台建设思路 的文章

 

随机推荐