稀松!对不住杭州,对不住G20

注:这是第一篇用手机敲出来的文字,每天下午五点半开始在医院挂那瓶红色肺炎专用药的那四个小时。

熟悉的时间又来到这个最近开始熟悉的地方。这两天杭州g20,今天周末,临出门看了眼电视里习主席G20开幕布上的演讲。

dav

右手上扎的针眼太有点多,今天换左手。腾出右手来闲着想记点东西。

这周过得和平时很不同。和很多生活在这个城市的人感觉一样,路上很空,街道人很少。连输液这边的护士都说这里现在的人都比平日少了好几成。与现实周围形成反差的是朋友圈里很热闹,名种晒图,大江南北。

对不住大家,对不住这个盛世的气氛。这周一个小人物过得异常的。。。稀松!

低烧了几乎整个八月,在月底了没扛住还是来到了这个地方。

有多稀松!

开始一天,单位里,翘班跑医院抽血拍片,幸亏和咱单位在一条街上,打车几分钟就过来了,抽血~回单位~拍片~回单位~取结果。稀松,折腾,狼狈。然后一个多[......]

阅读全文

Tags: , ,

Comments { 0 }

Netflix源码解析之Ribbon:Ribbon的区域亲和性(Zone Affinity)

前面文章介绍了通过ribbon集成eurekaclient来获取注册的服务列表。
其实仔细观察DynamicServerListLoadBalancer更新server的方法updateListOfServers会发现,在动态的从erueka 获取注册服务器后,还会用一个filter对得到的server列表再进行过滤。这个filter从配置获取,如果没有,默认是ZoneAffinityServerListFilter。根据配置会选择和服务消费者在一个zone的服务(术语区域感知,Zone Affinity),这样一般可以降低延迟。

 

检查server的zone属性,只是选择本区域的server。

根据配置会选择和服务消费者在一个zo[......]

阅读全文

Tags: , , ,

Comments { 0 }

Netflix源码解析之Ribbon:负载均衡策略的定义和实现

上篇文章说到LB是通过负载均衡策略来实现后端服务的选择的。

Ribbon负载均衡策略定义

IRule其实就只做了一件事情Server choose(Object key),可以看到这个功能是在LB中定义(要求)的,LB把这个功能委托给IRule来实现。不同的IRule可以向LB提供不同的负载均衡算法。

com.netflix.loadbalancer包下面的提供了常用的几种策略。有RoundRobinRule、RandomRule这样的不依赖于Server运行状况的策略,也有AvailabilityFilteringRule、WeightedResponseTimeRule等多种基于收集到的Server运行状况决策的策略。判断运行状况时有,判断单个server的,也有判断整个zone的,适用于各种不同场景需求。[......]

阅读全文

Tags: , , , ,

Comments { 2 }

Netflix源码解析之Ribbon:负载均衡器通过Eureka获取动态后端服务列表

Ribbon是一种客户端的负载均衡,本质上是跑在服务消费者的进程里。服务消费者要访问服务时,通过ribbon向一个服务注册的列表查询,然后以配置的负载均衡策略选择一个后端服务发起请求。

前面ribbon的实现,讲到LB的定义的两个主要方法,分别是后端服务相关的调用:

在netflix中这个服务注册列表其实就是eureka服务端集中管理的注册服务列表。获取这个列表应该就是是通过eureka的client来完成的。

也就是ribbon中应该在某个地方集成了eureka client来维护服务列表。这里尝试追踪细这个过程,确认下猜想。

ribbon的实现的继承图上可以看到除了介绍的基本实现LoadBalancer外,还有DynamicServerListLoadBalancer的实现,可以动态的加载后[......]

阅读全文

Tags: , , , ,

Comments { 1 }

Netflix源码解析之Ribbon:看Spring-cloud怎样使用Ribbon

关注下spring cloud是如何进行客户端负责均衡。 看怎么调用到负载均衡的,怎么定义负载均衡的,然后是怎么实现的?

第一个其实可以不用关心,调用的地方应该很多,找到一个地方来说明怎么调用的即可。 第二个,可以猜下,最主要的应该是一个类似 serviceInstance get(string serviceId)这样的方法吧。 第三个问题,明摆着,使用netflix的ribbon呗。

发起一个调用时,LB对输入的serviceId,选择一个服务实例。

??关键代码看到调用的是一个LoadBalancerClient的choose方法,对一个serviceId,选择一个服务实例。看下LoadBalancerClient是一个接口:

LoadBalancerClient_outline

足够简单,只定义了三个方法,根据一个serviceId,由LB[......]

阅读全文

Tags: , , , ,

Comments { 0 }