购物网站开发的描述,二手房交易注意事项,百胜网站建设,畅言 WordPress文章目录 Eureka是什么Nacos是什么Nacos的实现原理 Nacos和Eureka的区别CAP理论连接方式服务异常剔除操作实例方式自我保护机制 Eureka是什么
Eureka 是Spring Cloud 微服务框架默认的也是推荐的服务注册中心, 由Netflix公司与2012将其开源出来,Eureka基于REST服务开发,主要用… 文章目录 Eureka是什么Nacos是什么Nacos的实现原理 Nacos和Eureka的区别CAP理论连接方式服务异常剔除操作实例方式自我保护机制 Eureka是什么
Eureka 是Spring Cloud 微服务框架默认的也是推荐的服务注册中心, 由Netflix公司与2012将其开源出来,Eureka基于REST服务开发,主要用于实现AWS云的中服务定位,以实现中间层服务器的负载均衡和故障转移,遵循着CAP理论中的A(可用性)P(分区容错性)
一个Eureka中分为eureka server和eureka clint,其中eurka server是作为服务的注册与发现中心,eureka client既可以作为服务的生产者,又可以作为服务的消费者。 Eurak2.0之后已经停止开源。
Nacos是什么
NacosDynamic Naming and Configuration Service是阿里巴巴最新开源的项目提供了一组简单易用的特性集帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。更敏捷和容易地构建、交付和管理微服务平台。
Nacos支持基于DNS和基于RPC的服务发现,动态配置服务(配置中心),动态DNS服务。
Provider APP服务提供者 Consumer APP服务消费者 Name Server通过VIPVirtual IP或DNS的方式实现Nacos高可用集群的服务路由 Nacos ServerNacos服务提供者里面包含的OpenAPI是功能访问入口Conig Service、Naming Service是Nacos提供的配置服务、命名服务模块。Consitency Protocol是一致性协议用来实现Nacos集群节点的数据同步这里使用的是Raft算法Etcd、Redis哨兵选举Nacos Console控制台
Nacos的实现原理 1.客户端provider向nacos server的open api发起调用,把自己的服务地址链接,服务名称注册上去 2.nacos server与服务提供者provider建立心跳机制,用来检测服务状态 3.服务消费者consumer查询出提供服务实例列表 4.并且默认10s去nacos server拉取服务实例列表 5.当服务消费者检测到服务异常,基于UDP协议推送更新 6.服务消费者即可调用了
Nacos和Eureka的区别
CAP理论
C一致性,A高可用,P分区容错性
eureka只支持AP
nacos支持CP和AP两种 nacos是根据配置识别CP或AP模式,如果注册Nacos的client节点注册时是ephemeraltrue即为临时节点,那么Naocs集群对这个client节点效果就是AP,反之则是CP,即不是临时节点。
#false为永久实例true表示临时实例开启注册为临时实例spring.cloud.nacos.discovery.ephemeraltrue连接方式
nacs使用的是netty和服务直接进行连接,属于长连接 eureka是使用定时发送和服务进行联系,属于短连接
服务异常剔除
eureka: Eureka client在默认情况每隔30s想Eureka Server发送一次心跳,当Eureka Server在默认连续90s秒的情况下没有收到心跳, 会把Eureka client 从注册表中剔除,在由Eureka-Server 60秒的清除间隔,把Eureka client 给下线。
EurekaInstanceConfigBean类下private int leaseRenewalIntervalInSeconds 30; //心跳间隔30sprivate int leaseExpirationDurationInSeconds 90; //默认90s没有收到心跳从注册表中剔除EurekaServerConfigBean 类下private long evictionIntervalTimerInMs 60000L; //异常服务剔除下线时间间隔也就是在极端情况下Eureka 服务 从异常到剔除在到完全不接受请求可能需要 30s90s60s3分钟左右(还是未考虑ribbon缓存情况下)
nacos: nacos client 通过心跳上报方式告诉 nacos注册中心健康状态,默认心跳间隔5秒 nacos会在超过15秒未收到心跳后将实例设置为不健康状态可以正常接收到请求 超过30秒nacos将实例删除,不会再接收请求
操作实例方式
nacos:提供了nacos console可视化控制话界面,可以对实例列表进行监听,对实例进行上下线,权重的配置,并且config server提供了对服务实例提供配置中心,且可以对配置进行CRUD,版本管理
eureka:仅提供了实例列表,实例的状态,错误信息,相比于nacos过于简单
自我保护机制
相同点保护阈值都是个比例0-1 范围表示健康的 instance 占全部instance 的比例。
不同点
1保护方式不同
Eureka保护方式当在短时间内统计续约失败的比例如果达到一定阈值则会触发自我保护的机制在该机制下Eureka Server不会剔除任何的微服务等到正常后再退出自我保护机制。自我保护开关(eureka.server.enable-self-preservation: false)
Nacos保护方式当域名健康实例 (Instance) 占总服务实例(Instance) 的比例小于阈值时无论实例 (Instance) 是否健康都会将这个实例 (Instance) 返回给客户端。这样做虽然损失了一部分流量但是保证了集群的剩余健康实例 (Instance) 能正常工作。
2范围不同
Nacos 的阈值是针对某个具体 Service 的而不是针对所有服务的。但 Eureka的自我保护阈值是针对所有服务的。