Eureka为什么能支撑每天千万级别的访问

先说结果:

内存注册表+多级缓存机制

之所以快就是因为Eureka在内存里维护了一个 CocurrentHashMap<String, Map<String, Lease<InstanceInfo>>> 结构的注册表,来存储各个服务(生产者、消费者)的信息,服务名称啊、服务实例的id啊、主机名、端口号什么的,然后呢同时采用多级缓存机制,消费者获取去获取生产者实例信息时,先从ReadOnlyCacheMap里面找,没有的话再从ReadWriteCacheMap里面找,如果还没有最后再从注册表里找。

注意:发生服务变更时,比如拿掉一个服务或者添加一个服务,会在内存中修改注册表的数据,同时会删掉ReadWriteCacheMap里的数据。

Eureka在内存里维护了一个叫registryCocurrentHashMap,key就是服务的名称,例如“order-service”value(Map<String, Lease<InstanceInfo>>)代表一个服务多个实例

Map<String, Lease<InstanceInfo>> 里的key代表服务实例的id,value是一个叫做Lease的类,它的泛型是一个叫做InstanceInfo的类。

InstanceInfo(实例信息)里面保存机器的ip地址、hostname、端口号。

Lease,里面则会维护每个服务最近一次发送心跳的时间

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值