Nacos简介

1.什么是Nacos:Nacos主要用于发现,配置和管理服务。Naocs提供了一套简单的易用的特性,快速动态的实现服务发现,服务配置,服务元数据以及流量管理。

Nacos特性:

    1.Nacos是基于DNS和RPC的服务发现:Naocs提供对服务的实时健康检查,阻止想不健康的主机或服务实例发送请求。Naocs支持传输层(Ping或者TCP)和应用层(HTTP,MYSQL,用户自定义)的健康检查。Naocs提供了agent上报方式和服务端主动检测两种健康检测模式。

    2.动态配置服务:动态配置服务可以让您以中心化,外部化和动态化的方式管理所有的环境的应用配置和服务配置。动态配置消除了配置变更时重新部署服务和应用的需求。

    3.动态DNS服务:动态DNS服务支持权重路由,让您更容易的实现中间层负载均衡,耿灵活的路由策略,流量的控制和数据中心内网的简单的DNS解析服务。

    4.服务及其元数据的管理

nacos的config和server是在一起的,客户端可以通过配置server-addr和config-addr来注册服务和配置交由nacos管理。

nacos官网:Java SDK

    

    nacos属于外部应用,侵入性小,ACP原则遵循:CP原则(一致性和分隔容忍性)和AP原则(可用性和分隔容忍性)

    支持dubbo,SpringCloud,K8S集成,访问协议:HTTP,动态DNS,UDP;支持血崩保护。

    

    eureka:直接集成到应用中,依赖于应用自身完成服务的注册和发现。

    ACP原则:遵循AP(可用性和分隔容忍性),只支持springcloud部署。访问协议为HTTP,支持雪崩保护,

CAP理论:

    Consistency(一致性):保证所有节点在同一时间内访问的数据一致

    Availability(可用性):保证每个请求不管成功或者失败都有响应

    Partition Tolerance(分隔容忍性):系统中任意信息的丢失或者失败不会影响系统的继续运作。

为什么没有CA:因为想要保持数据同步会花费时间消耗资源,所以他的可用性就会大幅度降低。

1.与eureka相比:eureka2.0之后就闭源了,并且nacos的注册实例数大于eureka,nacos实用的是raft协议,所以nacos集群一致性要大于eureka集群一致性,

raft协议:

1.存在两个时期:选举期和任职期

1.选举期:会在所有的跟随者通过选举的方式来产生候选者,如果没有任何一个候选者将会一直来进行选举,当然是有策略来保证会产生候选者

2.任职期:候选者竞选出领导者后,会一直像其他的follower(跟随者)发送心跳包,如果领导者不发送了,那么所有的跟随者进入选举期,如果一直发送心跳包,那么理论上是无限期一直为领导者;

2、一致性保持:所有节点是通过日志形式来传递指令的,只有当集群中的领导者接收到请求后,commit状态为未完成,他会向所有的跟随者发送日志,所有跟随者会执行这个日志复制,来保持和leader一致,并在完成后和上报给leader,修改状态为完成;当领导者接收到了n/2+1的follower的消息时才会更新commit状态;

领导者会每隔一段时间向所有的跟随者发送一个心跳指令,来维持自己的统治,但是当领导者宕机后,所有得跟随者会变为候选者,并将自己的current加一,

Raft 一致性协议完整解析 - 知乎

你可能感兴趣的:(nacos,java,spring,boot,spring,cloud)