日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Apollo分布式配置中心入门

發(fā)布時(shí)間:2025/3/20 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Apollo分布式配置中心入门 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一.概述

1.什么是配置

應(yīng)用程序在啟動(dòng)和運(yùn)行的時(shí)候往往需要讀取一些配置信息,配置基本上伴隨著應(yīng)用程序的整個(gè)生命周期,比如:數(shù)據(jù)庫(kù)連接參數(shù)、啟動(dòng)參數(shù)等。

配置主要有以下幾個(gè)特點(diǎn):

  • 配置是獨(dú)立于程序的只讀變量

    • 配置首先是獨(dú)立于程序的,同一份程序在不同的配置下會(huì)有不同的行為

    • 其次,配置對(duì)于程序是只讀的,程序通過讀取配置來改變自己的行為,但是程序不應(yīng)該去改變配置

  • 配置伴隨應(yīng)用的整個(gè)生命周期

    • 配置貫穿于應(yīng)用的整個(gè)生命周期,應(yīng)用在啟動(dòng)時(shí)通過讀取配置來初始化,在運(yùn)行時(shí)根據(jù)配置調(diào)整行為。 比如:啟動(dòng)時(shí)需要讀取服務(wù)的端口號(hào)、系統(tǒng)在運(yùn)行過程中需要讀取定時(shí)策略執(zhí)行定時(shí)任務(wù)等。

  • 配置可以有多種加載方式

    • 常見的有程序內(nèi)部硬編碼,配置文件,環(huán)境變量,啟動(dòng)參數(shù),基于數(shù)據(jù)庫(kù)等

  • 配置需要治理

    • 權(quán)限控制:由于配置能改變程序的行為,不正確的配置甚至能引起災(zāi)難,所以對(duì)配置的修改必須有比較完善的權(quán)限控制

    • 不同環(huán)境、集群配置管理:同一份程序在不同的環(huán)境(開發(fā),測(cè)試,生產(chǎn))、不同的集群(如不同的數(shù)據(jù)中心)經(jīng)常需要有不同的配置,所以需要有完善的環(huán)境、集群配置管理

2.什么是配置中心

傳統(tǒng)單體應(yīng)用存在一些潛在缺陷,如隨著規(guī)模的擴(kuò)大,部署效率降低,團(tuán)隊(duì)協(xié)作效率差,系統(tǒng)可靠性變差,維護(hù)困難,新功能上線周期長(zhǎng)等,所以迫切需要一種新的架構(gòu)去解決這些問題,而微服務(wù)架構(gòu)正是當(dāng)下一種流行的解法。

不過,解決一個(gè)問題的同時(shí),往往會(huì)誕生出很多新的問題,所以微服務(wù)化的過程中伴隨著很多的挑戰(zhàn),其中一個(gè)挑戰(zhàn)就是有關(guān)服務(wù)(應(yīng)用)配置的。當(dāng)系統(tǒng)從一個(gè)單體應(yīng)用,被拆分成分布式系統(tǒng)上一個(gè)個(gè)服務(wù)節(jié)點(diǎn)后,配置文件也必須跟著遷移(分割),這樣配置就分散了,不僅如此,分散中還包含著冗余,如下圖:

?

配置中心將配置從應(yīng)用中剝離出來,統(tǒng)一管理,優(yōu)雅的解決了配置的動(dòng)態(tài)變更、持久化、運(yùn)維成本等問題。

應(yīng)用自身既不需要去添加管理配置接口,也不需要自己去實(shí)現(xiàn)配置的持久化,更不需要引入“定時(shí)任務(wù)”以便降低運(yùn)維成本。

總得來說,配置中心就是一種統(tǒng)一管理各種應(yīng)用配置的基礎(chǔ)服務(wù)組件。

在系統(tǒng)架構(gòu)中,配置中心是整個(gè)微服務(wù)基礎(chǔ)架構(gòu)體系中的一個(gè)組件,如下圖,它的功能看上去并不起眼,無非就是配置的管理和存取,但它是整個(gè)微服務(wù)架構(gòu)中不可或缺的一環(huán)。

?

集中管理配置,那么就要將應(yīng)用的配置作為一個(gè)單獨(dú)的服務(wù)抽離出來了,同理也需要解決新的問題,比如:版本管理(為了支持回滾),權(quán)限管理等。

總結(jié)一下,在傳統(tǒng)巨型單體應(yīng)用紛紛轉(zhuǎn)向細(xì)粒度微服務(wù)架構(gòu)的歷史進(jìn)程中,配置中心是微服務(wù)化不可缺少的一個(gè)系統(tǒng)組件,在這種背景下中心化的配置服務(wù)即配置中心應(yīng)運(yùn)而生,一個(gè)合格的配置中心需要滿足:

  • 配置項(xiàng)容易讀取和修改

  • 添加新配置簡(jiǎn)單直接

  • 支持對(duì)配置的修改的檢視以把控風(fēng)險(xiǎn)

  • 可以查看配置修改的歷史記錄

  • 不同部署環(huán)境支持隔離

二.Apollo簡(jiǎn)介

1.主流配置中心

目前市面上用的比較多的配置中心有:

  • Disconf 2014年7月百度開源的配置管理中心,專注于各種「分布式系統(tǒng)配置管理」的「通用組件」和「通用平臺(tái)」, 提供統(tǒng)一的「配置管理服務(wù)」。目前已經(jīng)不再維護(hù)更新。 https://github.com/knightliao/disconf

  • Spring Cloud Config 2014年9月開源,Spring Cloud 生態(tài)組件,可以和Spring Cloud體系無縫整合。 https://github.com/spring-cloud/spring-cloud-config

  • Apollo 2016年5月,攜程開源的配置管理中心,能夠集中化管理應(yīng)用不同環(huán)境、不同集群的配置,配置修改后能夠?qū)?時(shí)推送到應(yīng)用端,并且具備規(guī)范的權(quán)限、流程治理等特性,適用于微服務(wù)配置管理場(chǎng)景。 https://github.com/ctripcorp/apollo

  • Nacos 2018年6月,阿里開源的配置中心,也可以做DNS和RPC的服務(wù)發(fā)現(xiàn)。 https://github.com/alibaba/nacos

  • 2.功能特性對(duì)比

    由于Disconf不再維護(hù),下面主要對(duì)比一下Spring Cloud Config、Apollo和Nacos。

    功能點(diǎn)Spring Cloud ConfigApolloNacos
    配置實(shí)時(shí)推送支持(Spring Cloud Bus)支持(HTTP長(zhǎng)輪詢1s內(nèi))支持(HTTP長(zhǎng)輪詢1s內(nèi))
    版本管理支持(Git)支持支持
    配置回滾支持(Git)支持支持
    灰度發(fā)布支持支持不支持
    權(quán)限管理支持(依賴Git)支持不支持
    多集群支持支持支持
    多環(huán)境支持支持支持
    監(jiān)聽查詢支持支持支持
    多語言只支持Java主流語言,提供了Open API主流語言,提供了Open API
    配置格式校驗(yàn)不支持支持支持
    單機(jī)讀(QPS)7(限流所致)900015000
    單機(jī)寫(QPS)5(限流所致)11001800
    3節(jié)點(diǎn)讀 (QPS)21(限流所致)2700045000
    3節(jié)點(diǎn)寫 (QPS)5限流所致()33005600

    總的來看,Apollo和Nacos相對(duì)于Spring Cloud Config的生態(tài)支持更廣,在配置管理流程上做的更好。Apollo相對(duì)于Nacos在配置管理做的更加全面,Nacos則使用起來相對(duì)比較簡(jiǎn)潔,在對(duì)性能要求比較高的大規(guī)模場(chǎng)景更適合。但對(duì)于一個(gè)開源項(xiàng)目的選型,項(xiàng)目上的人力投入(迭代進(jìn)度、文檔的完整性)、社區(qū)的活躍度(issue的數(shù)量和解決速度、Contributor數(shù)量、社群的交流頻次等),這些因素也比較關(guān)鍵,考慮到Nacos開源時(shí)間不長(zhǎng)和社區(qū)活躍度,所以從目前來看Apollo應(yīng)該是最合適的配置中心選型。

    3.Apollo簡(jiǎn)介

    Apollo(阿波羅)是攜程框架部門研發(fā)的分布式配置中心,能夠集中化管理應(yīng)用的不同環(huán)境、不同集群的配置,配置修改后能夠?qū)崟r(shí)推送到應(yīng)用端,并且具備規(guī)范的權(quán)限、流程治理等特性,適用于微服務(wù)配置管理場(chǎng)景。

    Apollo包括服務(wù)端和客戶端兩部分:

    服務(wù)端基于Spring Boot和Spring Cloud開發(fā),打包后可以直接運(yùn)行,不需要額外安裝Tomcat等應(yīng)用容器。

    Java客戶端不依賴任何框架,能夠運(yùn)行于所有Java運(yùn)行時(shí)環(huán)境,同時(shí)對(duì)Spring/Spring Boot環(huán)境也有較好的支持。

    4.特性

    基于配置的特殊性,所以Apollo從設(shè)計(jì)之初就立志于成為一個(gè)有治理能力的配置發(fā)布平臺(tái),目前提供了以下的特性:

    • 統(tǒng)一管理不同環(huán)境、不同集群的配置

      • Apollo提供了一個(gè)統(tǒng)一界面集中式管理不同環(huán)境(environment)、不同集群(cluster)、不同命名空間(namespace)的配置。

      • 同一份代碼部署在不同的集群,可以有不同的配置,比如zookeeper的地址等

      • 通過命名空間(namespace)可以很方便地支持多個(gè)不同應(yīng)用共享同一份配置,同時(shí)還允許應(yīng)用對(duì)共享的配置進(jìn)行覆蓋

    • 配置修改實(shí)時(shí)生效(熱發(fā)布)

      • 用戶在Apollo修改完配置并發(fā)布后,客戶端能實(shí)時(shí)(1秒)接收到最新的配置,并通知到應(yīng)用程序

    • 版本發(fā)布管理

      • 所有的配置發(fā)布都有版本概念,從而可以方便地支持配置的回滾

    • 灰度發(fā)布

      • 支持配置的灰度發(fā)布,比如點(diǎn)了發(fā)布后,只對(duì)部分應(yīng)用實(shí)例生效,等觀察一段時(shí)間沒問題后再推給所有應(yīng)用實(shí)例

    • 權(quán)限管理、發(fā)布審核、操作審計(jì)

      • 應(yīng)用和配置的管理都有完善的權(quán)限管理機(jī)制,對(duì)配置的管理還分為了編輯和發(fā)布兩個(gè)環(huán)節(jié),從而減少人為的錯(cuò)誤。

      • 所有的操作都有審計(jì)日志,可以方便地追蹤問題

    • 客戶端配置信息監(jiān)控

      • 可以在界面上方便地看到配置在被哪些實(shí)例使用

    • 提供Java和.Net原生客戶端

      • 提供了Java和.Net的原生客戶端,方便應(yīng)用集成

      • 支持Spring Placeholder, Annotation和Spring Boot的ConfigurationProperties,方便應(yīng)用使用

      • 同時(shí)提供了Http接口,非Java和.Net應(yīng)用也可以方便地使用

    • 提供開放平臺(tái)API

      • Apollo自身提供了比較完善的統(tǒng)一配置管理界面,支持多環(huán)境、多數(shù)據(jù)中心配置管理、權(quán)限、流程治理等特性。不過Apollo出于通用性考慮,不會(huì)對(duì)配置的修改做過多限制,只要符合基本的格式就能保存,不會(huì)針對(duì)不同的配置值進(jìn)行針對(duì)性的校驗(yàn),如數(shù)據(jù)庫(kù)用戶名、密碼,Redis服務(wù)地址等

      • 對(duì)于這類應(yīng)用配置,Apollo支持應(yīng)用方通過開放平臺(tái)API在Apollo進(jìn)行配置的修改和發(fā)布,并且具備完善的授權(quán)和權(quán)限控制

    總結(jié)

    以上是生活随笔為你收集整理的Apollo分布式配置中心入门的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。