云原生应用配置中心简述

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
简介: 【2月更文挑战第22天】

在传统巨型单体应用纷纷转向细粒度微服务架构的历史进程中,构造云原生应用配置中心是微服务化不可缺少的一个系统组件,在这种背景下中心化的配置服务即配置中心应运而生。


配置中心概述

配置中心,是用来统一管理项目中所有配置的系统,保存应用运行过程与环境、业务规则相关的一些变量。这些变量一般和业务侧的服务逻辑无关,而只和当前的环境和特定场景有关,比如不同环境的数据库账号密码以及连接串、第三方服务的调用地址端口、监控系统的采样率、在线商品的基准折扣、特殊功能开关、业务规则参数等。


配置中心的思路是把项目中各种配置、参数、开关全部都放到一个集中的地方进行统一管理,并提供一套标准的接口。当各个服务需要获取配置时,就到配置中心的接口拉取。当配置中心中的各种配置项有更新时,也能通知各个服务实时同步最新的信息,使其动态更新。


配置中心架构

配置中心一般采用C/S模式,服务器端负责配置信息的管理运维和配置推送;客户端SDK面向不同的应用场景,负责配置信息的订阅及拉取。

配置中心服务器端一般采用分布式架构,其包括以下部分:

  • 服务协议层:用于进行协议转换、鉴权验证等。
  • 一致性管理层:用于配置的一致性管理和配置推送。
  • 配置缓存层:通过分布式缓存提高配置查询和推送效率。
  • 存储层:后台是一个分布式存储,用于存放配置,并具备高性能和高扩展性。
  • 控制台:分布式配置控制台,用于配置管理。


配置中心客户端既提供Java语言的SDK,也提供RESTful API,以实现跨语言的配置访问。在某些场景下,配置中心提供agent来动态替换应用主机上的配置文件,此时配置中心的配置项和配置文件的对应关系需手动指定。


配置中心功能

配置中心的功能大概如下:

1、配置信息的增删改查。

2、配置的导入或导出,方便用户在多环境间同步配置。

3、通过命名空间隔离不同环境配置(开发、测试、预发布、灰度/生产)。

4、变更历史版本管理,让一切操作有据可查,并提供历史版本的回滚。

5、配置推送,可实时或定时推送配置项到所有的集群应用节点。

6、数据安全性,配置中心的访问授权,以及提高敏感配置数据的安全保护。

7、高性能、高可用性,一旦配置中心不能正常提供服务,就可能会导致项目整体故障,因此“高可用”是配置中心一个非常关键的指标。

8、高并发支持,可容纳百万级的配置及网络连接。


配置中心开源组件

  • ZooKeeperZooKeeper 是一个分布式应用程序协调服务,是谷歌Chubby 的开源实现。它是一个为分布式应用提供一致性服务的软件,提供的功能包括配置维护、域名服务、分布式同步、组服务等。Dubbo微服务框架使用ZooKeeper作为其服务注册中心;在Hadoop集群等场景下,ZooKeeper同时充当应用配置管理的角色。但是由于它是CP[Consistency(一致性),Partition Tolerance(分区容错性)]类应用,因此在可用性和性能上都会受到一定的影响。
  • etcd是一个高可用的键值存储系统,主要用于配置共享和服务发现。etcd内部采用Raft协议作为一致性算法,它的灵感来自ZooKeeper和Doozer,它使用Go语言编写,并通过Raft一致性算法处理日志复制,以保证强一致性。etcd和ZooKeeper类似,同样可以用于应用管理配置。但是由于它是强一致的管理类应用,因此其可用性和性能在某些场景会受到一定影响。
  • Consul用于实现分布式系统的服务发现、服务隔离、服务配置。每一个功能既可以根据需要单独使用,也可以同时使用所有功能。Consul既可以用来做分布式服务注册中心,也可以用来做分布式配置中心。Consul是一个用来实现分布式系统的服务发现与配置的开源工具。
  • Spring Cloud Config Server为服务器端和客户端提供了分布式系统的外部配置支持。配置服务器为各应用的所有环境提供了一个中心化的外部配置,配置服务器默认采用Git来存储配置信息,Spring Cloud Config Server不提供可视化的操作界面,配置也不是实时生效的,需要重启或刷新,所以比较适用于小型项目。
  • Nacos是目前应用较为广泛的开源配置中心产品。Nacos除了提供配置中心的功能,还提供动态服务发现、服务共享与管理的功能,以降低服务化改造过程的难度。Nacos注册中心分为服务器端与客户端,服务器端采用Java语言编写,为客户端提供注册发现服务与配置服务;而客户端可以用多语言实现,客户端与微服务嵌套在一起,Nacos提供SDK和OpenAPI,如果没有SDK也可以根据OpenAPI手动编写服务注册与发现和配置拉取的逻辑。Nacos使用起来相对比较简洁,更适用于对性能要求比较高的大规模场景。
  • Disconf是百度开源的一个分布式配置中心,是一套完整的基于ZooKeeper的分布式配置统一解决方案,依靠ZooKeeper的watch机制来做配置修改的实时推送。Disconf包含了客户端disconf-Client和管理端disconf-Web两个模块,均由Java语言实现。Disconf支持两种开发模式:基于XML配置或者基于注解,可完成复杂的配置分布式化。配置信息持久化存储在MySQL数据库上。
  • Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器。Java客户端不依赖任何框架,能够运行于所有Java运行时环境,同时对Spring/Spring Boot环境也有较好的支持。.Net客户端 不依赖任何框架,能够运行于所有.Net运行时环境。


至于这些开源组件该如何选择,需要根据企业自己的项目及团队人员来做最优的评估而后用。

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
26天前
|
Cloud Native 安全 物联网
云原生技术在现代软件开发中的应用与挑战####
云原生,这一词汇如同一股强劲的科技风暴,席卷了整个信息技术领域,它不仅重塑了软件的开发模式,还引领了一场关于效率、可扩展性和弹性的深刻变革。本文旨在深入探讨云原生技术的核心概念,分析其在现代软件开发中的广泛应用,并直面伴随其发展而来的挑战,为读者勾勒出一幅既充满机遇又不乏考验的云原生技术图景。 ####
|
7天前
|
Kubernetes Cloud Native 持续交付
云原生技术在现代软件开发中的应用与挑战
【10月更文挑战第37天】随着云计算技术的不断演进,云原生技术已经成为推动软件开发现代化的重要力量。本文将深入探讨云原生技术的核心概念、优势以及面临的挑战,并通过一个实际的代码示例,展示如何在云原生环境中部署一个简单的应用。我们将从云原生的基础架构出发,逐步引导读者理解其在现代软件开发中的关键作用。
18 1
|
1月前
|
运维 监控 Cloud Native
构建行业应用生态:云原生应用市场简化企业软件安装
在移动互联网时代,尽管手机应用市场为用户带来了极大的便利,但企业级软件的安装和管理仍面临诸多挑战,包括安装复杂、交付效率低、应用兼容性差等问题。为此,基于云原生技术的企业级应用市场Rainstore应运而生,旨在简化企业软件的安装和管理,提升交付效率,增强应用兼容性,支持远程管理和个性化定制,构建开放的行业应用生态,助力企业数字化转型。
构建行业应用生态:云原生应用市场简化企业软件安装
|
20天前
|
敏捷开发 Cloud Native 持续交付
云原生技术在现代企业中的应用与实践
【10月更文挑战第23天】本文将深入探讨云原生技术在现代企业中的广泛应用,并结合具体案例分析其对企业数字化转型的推动作用。我们将从云原生技术的基本原理出发,逐步揭示其在提高业务敏捷性、降低成本和增强系统可靠性方面的优势。同时,文章还将分享一系列成功实施云原生技术的企业案例,为读者提供实践中的参考和启示。最后,我们将讨论云原生技术面临的挑战及未来的发展趋势,为企业在这一领域的进一步探索提供指导。
|
21天前
|
Cloud Native 持续交付 云计算
云原生技术深度探索:构建现代化应用的基石####
【10月更文挑战第21天】 本文将深入探讨云原生技术的核心概念、关键技术及其在现代软件开发中的应用。我们将从容器化、微服务架构、持续集成/持续部署(CI/CD)、无服务器架构等关键方面展开,揭示这些技术如何共同作用,帮助企业实现高效、弹性且易于维护的应用部署与管理。通过实例分析,展现云原生技术在实际项目中的显著优势,为读者提供一套全面理解并应用云原生技术的指南。 ####
31 2
|
27天前
|
运维 Cloud Native 持续交付
云原生技术在现代IT架构中的深度应用与挑战####
【10月更文挑战第17天】 本文深入剖析了云原生技术的精髓,探讨其在现代IT架构转型中的核心作用与面临的挑战。云原生不仅是一种技术实现,更是企业数字化转型的重要推手,通过容器化、微服务、持续集成/持续部署(CI/CD)等关键要素,重塑软件开发、部署与运维模式。文章首先概述了云原生的基本原则与核心组件,随后分析了其如何促进企业敏捷性、可扩展性和资源利用率的提升,同时也指出了在安全性、复杂性管理及人才技能匹配等方面存在的挑战,并提出了相应的对策建议。 ####
66 6
|
28天前
|
运维 监控 Cloud Native
云原生技术在现代企业中的应用与挑战####
【10月更文挑战第15天】 本文深入探讨了云原生技术如何重塑企业的IT架构,并分析了其带来的机遇与面临的挑战。通过案例分析,揭示了云原生技术在提升业务敏捷性、降低运维成本方面的显著优势,同时也指出了在安全性、多云管理等方面的潜在难题,为企业决策者提供了有价值的参考。 ####
25 3
|
1月前
|
运维 Cloud Native 持续交付
云原生技术:构建现代应用的基石
【10月更文挑战第9天】在数字化转型的浪潮中,云原生技术如同一股清流,引领着企业走向更加灵活、高效的未来。本文将深入探讨云原生的核心概念,揭示其在现代应用开发与部署中的重要作用,并通过实际案例分析,展现云原生技术如何助力企业实现敏捷开发和自动化运维,最终提升业务竞争力。
77 3
|
1月前
|
运维 Kubernetes Cloud Native
云原生技术:构建现代应用的新范式
【10月更文挑战第9天】 云原生是一种通过云计算环境优化的软件开发和运行方法论,旨在最大化利用云平台的灵活性、可扩展性和弹性。本文将深入探讨云原生技术的基本原理、核心组件以及其在实际项目中的应用。我们将从Kubernetes的容器编排机制入手,逐步探讨如何通过自动化工具实现持续集成与持续部署(CI/CD),最终展示如何构建一个高效、可靠的云原生应用。
52 2
|
1月前
|
Cloud Native Devops 持续交付
云原生技术:构建现代应用的新范式
【10月更文挑战第4天】 在当今数字化时代,云原生技术正迅速成为构建现代应用的主流方法。它不仅改变了开发和部署的方式,还为企业带来了前所未有的灵活性和效率。本文将深入探讨云原生的核心概念、关键技术以及其在实际应用中的优势,揭示这一技术变革背后的本质与内涵。
52 6

热门文章

最新文章