毕业论文
您现在的位置: 版本控制 >> 版本控制市场 >> 正文 >> 正文

Springcloud多版本控制及灰

来源:版本控制 时间:2022/4/13
倾听白癜风患者心声 https://m-mip.39.net/czk/mipso_7241845.html

在我们使用springmvc单体架构时,我们可以通过uri,或者请求头做多版本路由,虽然同一个功能需要维护多个版本的接口,但是对于系统而言,不会因为新增一个接口版本而影响到老用户。当我们使用springcloud构建微服务平台时,也希望能做到这一点,然而springcloud并没有提供这个功能。

在springcloud的微服务体系中,大多是使用eureka做为注册中心,ribbon做为负载均衡,hystrix做为断路器。但是在国内网络中却鲜少关于spring-cloud的接口多版本控制的开源项目,而在国内,springcloud做为越来越被创业公司认同的微服务框架,多版本控制的需求也越来越明显,于是就有了fm-cloud-bamboo这个多版本控制的项目。在开发这个项目的过程,发现只要再做一些扩展,就可以实现灰度管理,于是又有了fm-cloud-graybunny。

多版本控制

该项目是在spring-cloud-ribbon的基础上进行扩展,以实现接口的多个版本的调用及负载均衡,支持feign方式和断路器(spring-cloud-hystrix)。

场景

服务A部署了两个实例serivceA-1,serviceA-2,springcloudribbon默认是轮询的方式将请求分别转到两个实例上。如果由于业务原因,服务需要从1.0升级到2.0。

场景1:将所有服务实例平缓的过度到2.0。

场景2:2.0的服务实例需要兼容1.0的服务接口。

思路

在springcloud微服务体系中,服务的请求来源无外乎两个方面:

来源1:外部请求通过网关(zuul)转发而来。

来源2:内部服务之间的调用请求。

不论网关转发过来的请求,还是内部服务调用过来的请求,都需要ribbon做负载均衡,所以可以扩展ribbon的负载均衡策略从而实现不同版本的请求转发到不同的服务实例上。

网关的转发过程是:zuulhystrixribbon

内部服务调用的过程有两种:

RestTemplatehystrixribbon

Feignhystrixribbon

而其中hystrix有一个线程池隔离的能力,会创建另一个线程去请求服务,拥有更好的控制并发访问量、以及服务降级等能力,但是会出现一个问题,就是线程变量(ThreadLocal)的传递问题,这可以通过

转载请注明:http://www.0431gb208.com/sjszlff/11.html

  • 上一篇文章:
  • 下一篇文章:
  • 今日推荐
    1. 没有推荐文章
    热点关注
    1. 没有热点文章