前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >配置中心————Nacos

配置中心————Nacos

作者头像
ma布
发布2024-11-21 18:18:55
发布2024-11-21 18:18:55
3950
举报
文章被收录于专栏:Java开发Java开发

一:什么是nacos

Nacos是一个基于云原生架构的动态服务发现、配置管理和服务治理平台。支持多种编程语言和多种部署方式,并且与Spring Cloud等主流的微服务框架深度集成。

配置管理:可以将应用程序的配置信息存储在Nacos的配置中心,通过Nacos实现动态配置管理和灰度发布,从而实现应用程序的动态调整和部署。

服务发现及注册:可以将服务注册到Nacos注册中心,并通过Nacos实现服务的自动发现和负载均衡,从而实现服务的高可用和弹性伸缩。

服务治理:可以通过Nacos实现服务的健康检查、故障转移、服务限流、熔断降级等治理能力,从而提高服务的可靠性和稳定性。

事件监听和推送:可以通过Nacos实现配置变更、服务注册和注销等事件的监听和推送,从而实现应用程序的自动化部署和管理。

补充:哪些服务将会用到nacos

  1. Service Mesh:Nacos可以作为Service Mesh的控制面板,实现服务的配置管理、流量控制和熔断降级等功能。
  2. Dubbo:Nacos是Dubbo 2.7.x版本的服务注册中心和配置中心,可以通过Nacos实现服务的动态发现和配置管理。
  3. Spring Cloud Alibaba:Nacos是Spring Cloud Alibaba的核心组件之一,可以和Spring Cloud集成,实现服务发现、负载均衡、配置管理等功能。

二:nacos是AP还是CP?

Nacos支持AP和CP两种模式,可以根据具体的使用场景进行选择。默认情况下是AP模式,可以通过修改nacos的配置文件来切换AP/CP。

在AP模式下,Nacos保证高可用性和可伸缩性,但不保证强一致性。在CP模式下,Nacos保证强一致性,但可能会降低可用性和可伸缩性。

在实际应用中,具体应该采用哪种模式,需要根据业务的特点和需求来判断。

如果在分布式系统中,某些数据的一致性对业务有非常高的要求,例如金融、支付等场景,那么可以选择使用CP模式。在CP模式下,当发生网络分区或故障时,为了保证数据一致性,Nacos会对服务进行自动隔离和恢复。但是,这会导致部分服务不可用,因此可用性会受到影响。

如果对于某些服务来说,可用性比一致性更加重要,例如网站、在线游戏等场景,那么可以选择使用AP模式。在AP模式下,Nacos会优先保证服务的可用性,如果发生了网络分区或故障,Nacos会在保证一定的可用性的前提下,尽可能保持数据一致性。这样虽然可能会导致数据不一致的情况,但是可以保证服务的可用性,从而减少业务的影响。

三:nacos同时实现AP和CP的原理是什么?

Nacos在单个集群中同时支持AP和CP两种模式,之所以这么设计是因为Nacos目前在业内主要有两种应用,分别是注册中心和配置中心。

对于注册中心来说,他要提供服务的注册和发现能力,如果使用一个强一致性算法,那么就会对可用性造成一定的影响。而注册中心一旦可用性不能满足了,那么就会影响所有服务的互相调用。而如果一致性没办法做到强一致性的话,最多是可能某个服务不在了,但是还会调用过去,理论上来说会失败,然后重试也是可以接受的。

对于配置中心来说,他的主要职责就是提供统一的配置,一致性是他的一个重点考量,即使损失一点可用性(晚一点推送)也是可以接受的,但是不同的机器接收到配置不一样,这个是不能接受的。

所以,Nacos就同时支持这两种模式了,他在CP方面,采用了JRaft(1.0是Raft),在AP方面,采用了Distro

也就是说,Nacos,为了同时支持注册中心和配置中心,他通过JRaft协议实现了一个CP的模式,又通过Distro协议实现了一个AP的模式,可以在这两者模式之间进行切换。

四:nacos是如何实现配置文件变化云端可以感知到的?

客户端与配置中心的数据交互方式其实无非就两种,要么推 ,要么就是拉 。

推的模式就客户端和服务端建立TCP长链接,当服务端数据发生变化,立即通过这个已经建立好的长连接将数据推送到客户端。

长链接的优点是实时性,一旦数据变动,客户端立即就能感知到。但是缺点就是服务端需要维护大量的TCP连接,这会占用大量的内存和CPU资源,同时也容易受到网络抖动等因素的影响。

拉的模式就是客户端轮询,通过不断轮询的方式检查数据是否发生变化,变化的话就把数据拉回来。

轮询的优点是实现比较简单,但弊端也显而易见,轮询无法保证数据的实时性,并且轮询方式对服务端还会产生压力。

那Nacos使用的是哪种模式呢?

在Nacos1.x版本中采用的是长轮询,看好哦,不是长连接,也不是轮询,是长轮询(Long Polling)。 在Nacos2.0中,采用gRPC长连接。

其实就是把长连接和轮询综合了一下,就是说客户端发起轮询,但是不立即返回,而是hold一段时间,这段时间保持着一个有效连接,超时或者变化再返回,然后再发起一次轮询。

长轮询:

大概过程就是客户端向Nacos服务器发起一个长轮询请求,Nacos不会立即返回结果,而是会将请求挂起,直到有配置变化或者超时才会响应。当配置发生变化时,Nacos服务器会把变化后的配置信息响应客户端,并且客户端会再次发起一个新的长轮询请求。这样,客户端就能够实时感知到配置的变化。

这种方式避免客户端对服务端的不断轮询造成压力,也避免了长时间保持连接所带来的负担,同时也可以保证配置的实时性。但是,长轮询的缺点是需要频繁地发起HTTP请求,这会增加网络开销,同时也可能会受到网络延迟等因素的影响,导致配置的实时性不如长连接。  

长轮询和长连接:

长轮询是一种实现异步消息通信的机制,它通常用于客户端向服务器端请求某个资源时,如果服务器端没有即时可用的响应数据,就会将客户端的请求挂起,直到服务器端有了可用的响应数据,再将数据返回给客户端。因此,长轮询的过程是客户端主动发起请求,服务器端被动响应请求。

长连接是指在客户端和服务器端之间建立一条持久连接,通过该连接可以在一定时间内保持通信状态,避免了客户端频繁地建立和关闭连接所带来的额外开销。在长连接中,客户端和服务器端之间会保持一定的心跳机制,以确保连接的有效性。因此,长连接的过程是由服务器端主动维护连接,客户端被动地接受服务器端的消息。

在数据变化感知的实时性上面,长连接比长轮询要更加精准,感知的更快,长轮询也是有可能发生延迟的。

在协议层面上,长连接是基于TCP实现的,长轮询是基于HTTP实现的。

【ps:部分知识点来源网络资料】

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-11-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一:什么是nacos
  • 二:nacos是AP还是CP?
  • 三:nacos同时实现AP和CP的原理是什么?
  • 四:nacos是如何实现配置文件变化云端可以感知到的?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档