博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Eureka和Consul的区别
阅读量:2154 次
发布时间:2019-05-01

本文共 1007 字,大约阅读时间需要 3 分钟。

Eureka

  1. client默认每隔30s发送请求给server,拉取最新的注册表
  2. client默认每隔30s发送心跳给server,证明自己还活着
  3. server定时检测默认超过90s,client没有发送心跳更新时间,则认为client挂了

拉取注册表:

  1. 维护和拉取注册表、更新心跳时间,都是发生在内存里
  2. 具体拉取时基于多级缓存来拿数据,这样可以减少并发读写冲突,且进一步提高服务响应
  3. 先从 ReadOnlyCacheMap 查缓存的注册表;若没有,就找ReadWriteCacheMap 缓存的注册表;若没有,就从内存中获取当前注册表数据
  4. 在注册表发生变更时,先更新内存中的注册表数据,同时过期掉ReadWriteCacheMap 的数据。此过程不会影响ReadOnlyCacheMap提供数据,过程默认持续30s。之后后台线程发现ReadWriteCacheMap 已清空,也会清空ReadOnlyCacheMap的缓存数据。下次获取则从内存中拿,同时填充到2个缓存中

Consul

  1. 基于Consul作为服务注册中心,需要在每个服务器部署一个Consul Agent,作为一个服务所在机器的代理
  2. 在多台机器上部署Consul Server,作为核心的服务注册中心
  3. 由Consul Agent收集服务信息发送给Consul Server进行注册,同时由Consul Agent转发请求给Consul Server获取其他服务信息
  4. Consul Server之间会自动实现数据同步,而且Consul Server集群会自动选举一个为Leader
  5. 各个服务发送的注册请求都会落地给 Leader,由 Leader 同步给其他 Follower
  6. 各个服务之间的查询也会通过Leader获取,这样就保持了数据的强一致性
  7. Consul 会基于 Raft 协议来解决Leader数据与Follower之间的可能发生的数据不一致。Raft 协议要求服务注册到Leader上时,Leader把这条注册信息复制给大部分的Follower才算成功。这样只要注册成功,即使当前Leader宕机,新选举出的Leader上也会有这个注册信息
  8. Eureka的心跳机制会给Server造成很大的压力。Consul Agent会不断发送请求检查服务器的健康情况,若服务宕机则通知Consul Server,这种方式大幅度减轻了Server的压力

转载地址:http://mqtwb.baihongyu.com/

你可能感兴趣的文章
轻松看懂机器学习十大常用算法
查看>>
一个框架解决几乎所有机器学习问题
查看>>
特征工程怎么做
查看>>
机器学习算法应用中常用技巧-1
查看>>
机器学习算法应用中常用技巧-2
查看>>
通过一个kaggle实例学习解决机器学习问题
查看>>
决策树的python实现
查看>>
Sklearn 快速入门
查看>>
了解 Sklearn 的数据集
查看>>
用ARIMA模型做需求预测
查看>>
推荐系统
查看>>
TensorFlow-11-策略网络
查看>>
浅谈 GBDT
查看>>
如何选择优化器 optimizer
查看>>
一文了解强化学习
查看>>
CART 分类与回归树
查看>>
seq2seq 的 keras 实现
查看>>
seq2seq 入门
查看>>
什么是 Dropout
查看>>
用 LSTM 做时间序列预测的一个小例子
查看>>