为什么naming 和 config依赖一致性协议抽象需要做 快照、状态机实现、数据同步这些工作,但是依赖数据存储抽象就不用做这些工作。
在 Kubernetes 中,命名空间(Namespace)和配置(Config)是两个不同的资源类型,它们之间存在依赖关系。为了确保在更改配置时不会引起命名空间的意外更改,需要实现依赖一致性协议抽象。
具体来说,实现依赖一致性协议抽象需要做以下工作:
快照:在更改配置之前,需要先创建一个配置的快照。这可以通过记录当前配置的状态来实现。
状态机实现:当更改配置时,需要使用一个状态机来管理这个过程。状态机应该能够处理各种可能的场景,例如:
如果配置更改导致某些命名空间不可用,则需要将这些命名空间从状态机中删除; 如果配置更改导致某些命名空间重新可用,则需要将这些命名空间添加回状态机中。 数据同步:由于命名空间和配置之间的依赖关系,更改配置可能会影响到多个命名空间。因此,在更改配置之后,需要将新的配置同步到所有相关的命名空间中。这可以通过定期轮询配置来实现。 相比之下,依赖数据存储抽象不需要做这些工作。因为在 Kubernetes 中,数据存储抽象已经实现了数据的版本控制和自动同步功能。因此,当更改配置时,只需要更新存储中的数据即可,无需进行额外的快照、状态机实现和数据同步操作。
naming 和 config 的依赖一致性协议抽象需要做快照、状态机实现、数据同步这些工作的原因是因为它们的数据存储具有一致性要求,而这些工作是保证数据一致性的基础。
快照和状态机实现是为了保证整个系统的数据存储具有一致性。快照是将系统中的数据进行拍照,以便在需要恢复数据时使用。状态机实现则是为了保证在多节点的情况下,系统的状态能够保持一致,通过事务重放等技术来确保数据的强一致性。
数据同步是为了使得多节点之间的数据保持同步,以保证在节点间发生切换等情况时,系统的一致性得以保持。数据同步涉及到数据的复制、传输、分片等技术。
而如果仅依赖数据存储抽象,其实也需要做这些工作,因为数据存储抽象同样需要实现数据的写入、读取、备份和恢复等功能,否则也无法保证数据一致性,只不过这些工作都由数据存储抽象本身来实现,而不需要应用程序自己去实现快照、状态机、数据同步等功能。但是在实际应用中,由于数据存储抽象往往不足以满足应用程序的需求,需要应用程序自己去实现一些定制化的逻辑来实现数据的一致性,这时仍然需要做快照、状态机、数据同步等工作。
因为数据存储抽象通常是由底层的存储系统提供的,这些存储系统已经实现了快照、状态机实现、数据同步等功能。而命名和配置抽象通常是由应用程序自己实现的,因此需要自己处理这些问题。
naming和config是Nacos内部用于实现服务发现和配置中心功能的两个重要组件。
naming和config,它们都需要维护一个分布式的数据存储,用于存储服务的元数据信息和配置信息。因此,为了保证各个节点对存储的操作的一致性,需要使用一致性协议来进行数据同步,以保证各个节点的数据是一致的。
数据存储抽象的目的是为了屏蔽具体的数据存储实现,提供一个统一的接口给上层应用使用,而不需要关心底层实现细节,不需要维护多个节点之间的数据一致性。
因为这是存储层才需要关心
比如你使用 mysql,你只需要关心怎么能够把数据写进去就好,不需要关心他背后是怎么做数据持久化的,怎么做数据同步的
此答案来自钉钉群“Nacos社区群"
在开发过程中都接触过这两类工具:
一类是注册中心,主要负责服务的注册登记与发现。例如Zookeeper,Eureka等。 一类是配置中心,主要负责维护各个微服务的配置文件内容。例如Apollo,SpringCloudConfig等。
现在有了一个集合这两类工具优点于一身的新工具,它就是Nacos。 英文含义是:Naming and Config service,就是动态命名和配置管理的一个服务。
Nacos是阿里的一个开源产品,它是针对微服务架构中的服务发现、配置管理、服务治理的综合型解决方案。
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
Nacos使服务更容易注册,并通过DNS或HTTP接口发现其他服务,Nacos还提供服务的实时健康检查,以防 止向不健康的主机或服务实例发送请求。
动态配置服务允许您在所有环境中以集中和动态的方式管理所有服务的配置。Nacos消除了在更新配置时重新 部署应用程序,这使配置的更改更加高效和灵活。
Nacos提供基于DNS 协议的服务发现能力,旨在支持异构语言的服务发现,支持将注册在Nacos上的服务以 域名的方式暴露端点,让三方应用方便的查阅及发现。
Nacos 能让您从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略。
Nacos是Alibaba开源的中间件,Nacos架构中有2个模块,分别是Config Service和Naming Service。其中Config Service就是Nacos用于实现配置中心的核心模块(Naming Service用于服务注册和发现,他实现了对配置的CRUD,版本管理,灰度管理,监听管理,推送轨迹,聚合数据等功能。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。