目录

Spring Cloud Eureka 解析

先来一波问题,然后看看Enueka是通过什么方式处理的。

  • Eureka注册中心使用什么样的方式来储存各个服务注册时发送过来的机器地址和端口号?
  • 各个服务找Eureka Server拉取注册表的时候,是什么样的频率?
  • 各个服务是如何拉取注册表的?
  • 对于一个有几百个服务,部署上千台机器的大型分布式系统来说,这套系统会对Eureka Server造成多大的访问压力?
  • Eureka Server从技术层面是如何抗住日千万级访问量的?

基本知识点,各个服务内的Eureka Client组件,默认情况下,每隔30秒会发送一个请求到Eureka Server,来拉取最近有变化的服务信息

Eureka Server设计精妙的注册表存储结构

  • 维护注册表、拉取注册表、更新心跳时间,全部发生在内存里!这是Eureka Server非常核心的一个点。

Eureka Server端优秀的多级缓存机制

  • 尽可能保证了内存注册表数据不会出现频繁的读写冲突问题。
  • 并且进一步保证对Eureka Server的大量请求,都是快速从纯内存走,性能极高。

总结

  • 通过上面的分析可以看到,Eureka通过设置适当的请求频率拉取注册表30秒间隔,发送心跳30秒间隔),可以保证一个大规模的系统每秒请求Eureka Server的次数在几百次。
  • 同时通过纯内存的注册表,保证了所有的请求都可以在内存处理,确保了极高的性能
  • 另外,多级缓存机制,确保了不会针对内存数据结构发生频繁的读写并发冲突操作,进一步提升性能。

参考文章