高并发服务发现原理
强烈推介IDEA2020.2破解激活,IntelliJ IDEA 注册码,2020.2 IDEA 激活码
在一个超大型的系统中,有100K个Client,也就是10万个服务,这么多个服务定时向Eureka注册中心请求发现服务时,应该怎样处理?
首先,我们可以让多个Eureka相互注册构成集群,多个服务向集群内的不同Eureka定时请求发现服务,不同的Eureka之间会相互同步服务地址数据。
Eureka的部署方式如下图所示:
一、 Eureka单点
二、 两台Eureka相互注册
三、 三台Eureka相互注册
通过上面的图示我们可以发现,随着集群内Eureka数量的增多,Eureka之间相互同步数据将占用更多的资源,所以控制集群的规模对于实现高并发服务发现来说非常重要。
我们可以在Client和Eureka集群之间加一个缓存处理系统,该系统由两部分组成,一是服务元信息网关,二是高性能的缓存数据库。
当很多个服务高并发地请求服务发现时,并不直接访问Eureka,虽然Eureka可以配置为集群,能够处理很高的并发,但我们有一个前提,就是在控制Eureka集群规模的情况下处理极高并发,让100K个Client同时发起定时请求,100K只是把这个极高的并发用一个具体的数字表示出来,实际可能更高,反正有一点,就是超出了Eureka集群的极限,需要用另外一种方式来请求服务发现。
所以让100K个服务先访问服务元信息网关,网关接收100K个请求,所有请求进入缓存队列,再由网关向Eureka发起一次请求,将结果存入缓存并加上有效期,然后返回结果给100K个服务,这一波高并发的服务发现完成。
下一波高并发的服务发现来到服务元信息网关,如果缓存数据有效,直接返回,如果缓存数据失效,重复上面这个流程,缓存数据有效期很短,一般为完成一波并发就已经过期,需要再次向Eureka获取服务地址数据,所以服务元信息网关和Eureka的数据几乎就是实时同步的。
这样,我们将10万个针对Eureka的并发请求转换成了一个请求,通过队列实现请求频次的降低是实现高并发服务发现的关键。
原文链接:https://gper.club/articles/7e7e7f7ff0g5dgc9