アポロ コンフィギュレーション センターとは何ですか?Apollo は、Ctrip のフレームワーク部門が開発したオープンソースの構成管理センターです。さまざまなアプリケーション環境とクラスターの構成を一元管理できます。構成が変更されると、リアルタイムでアプリケーション側にプッシュでき、標準化された権限、プロセスガバナンスなどの機能を備えています。 アポロの特徴
Apollo は、さまざまな環境、クラスター、名前空間の構成を集中管理するための統合インターフェースを提供します。
ユーザーがApolloで設定を変更して公開すると、クライアントは最新の設定をリアルタイム(1秒)で受信し、アプリケーションに通知することができます。
すべての構成リリースにはバージョンの概念があり、構成のロールバックを簡単にサポートできます。
構成のグレースケールリリースをサポートします。たとえば、[リリース] をクリックすると、一部のアプリケーション インスタンスにのみ有効になり、一定期間問題なく観察された後、すべてのアプリケーション インスタンスにプッシュされます。
アプリケーションと構成管理のための完全な権限管理メカニズムがあります。構成管理も編集と公開の 2 つの部分に分かれており、人的エラーが削減されます。
インターフェース上の設定を使用しているインスタンスを簡単に確認できます。
.Netネイティブクライアントは、アプリケーションの統合に便利で、Httpインターフェイスを提供し、非Javaおよび.Netアプリケーションも簡単に使用できます。
Apollo 自体は、複数の環境、複数のデータ センターの構成管理、権限、プロセス ガバナンスなどの機能をサポートする、比較的完全な統合構成管理インターフェイスを提供します。ただし、普遍性のために、Apollo は設定変更にあまり多くの制限を課していません。基本形式に準拠している限り、保存できます。データベースのユーザー名、パスワード、Redis サービス アドレスなど、さまざまな設定値を対象に検証することはありません。このタイプのアプリケーション設定の場合、Apollo は、オープン プラットフォーム API を通じてアプリケーション側が Apollo で設定を変更および公開することをサポートし、完全な認証と権限制御を備えています。
基本サービスとして、構成センターには非常に高い可用性要件があるため、Apollo の外部依存関係をできるだけ少なくする必要があります。現在、外部依存関係は MySQL のみであるため、展開は非常に簡単です。Java と MySQL がインストールされていれば、Apollo を実行できます。 クライアントアーキテクチャアーキテクチャとモジュール1: Config Serviceは、構成の読み取りやプッシュなどの機能を提供し、サービスオブジェクトはApolloクライアントです。
サーバーは Spring DeferredResult を使用して非同期性を実現し、長い接続の数を大幅に増やします。Tomcat 埋め込みの現在のデフォルト構成は、最大 10,000 接続です (調整可能)。4C8G 仮想マシンは 10,000 接続をサポートできるため、要件を満たしています (1 つのアプリケーション インスタンスは 1 つの長い接続のみを開始します)。
2. 管理サービスは、設定変更や公開などの機能を提供し、そのサービスオブジェクトはApollo Portal(管理インターフェース)です。
3. メタサーバー Eurekaのサービス検出インターフェースをカプセル化するために、Eureka上にメタサーバーを構築しました。
4: Eureka Javaのサービス検出コンポーネント
5: ポータル
6. クライアント
展開する
パブリック列挙型Env{ LOCAL、DEV、FWS、FAT、UAT、LPT、PRO、TOOLS、UNKNOWN、DEVMT; パブリック静的Env fromString(String env) { Env 環境 = EnvUtils.transformEnv(env); Preconditions.checkArgument(environment != UNKNOWN、String.format("Env %s が無効です", env)); 環境を返す。 } } パブリックファイナルクラスEnvUtils { パブリック静的Env transformEnv(String envName) { StringUtils.isBlank(envName) の場合 { Env.UNKNOWN を返します。 } スイッチ (envName.trim().toUpperCase()) { ケース「LPT」: Env.LPT を返します。 ケース「FAT」: ケース「FWS」: Env.FAT を返します。 ケース「UAT」: Env.UAT を返します。 ケース「PRO」: case "PROD": //念のため Env.PRO を返します。 ケース「DEV」: Env.DEV を返します。 ケース「LOCAL」: Env.LOCAL を返します。 ケース「TOOLS」: Env.TOOLS を返します。 ケース「DEVMT」: Env.DEVMT を返します。 デフォルト: Env.UNKNOWN を返します。 } } } プライベートvoid初期化() { プロパティ prop = new Properties(); プロパティ = ResourceUtils.readConfigFile("apollo-env.properties", プロパティ); ドメイン.put(Env.LOCAL、getMetaServerAddress(prop、"local_meta"、"local.meta")); ドメインを Env.DEV に渡します。 ドメイン.put(Env.FAT、getMetaServerAddress(prop、"fat_meta"、"fat.meta")); ドメイン.put(Env.UAT、getMetaServerAddress(prop、"uat_meta"、"uat.meta")); ドメイン.put(Env.LPT、getMetaServerAddress(prop、"lpt_meta"、"lpt.meta")); domains.put(Env.PRO, getMetaServerAddress(prop, "pro_meta", "pro.meta")); ドメイン.put(Env.SIT、getMetaServerAddress(prop、"devmt_meta"、"devmt.meta")); } チェックして、JAVA JDKとMavenをインストールし、ソースコードフォルダのスクリプトに入り、ビルドファイルを実行してapolloをコンパイルしてパッケージ化します。 以下に示すように、apollo-configservice/target、apollo-adminservice/target、apollo-portal/target、zipファイル、およびファイルの下のDockerfileを指定されたフォルダーにコピーします。 configservice、adminservice、portal、および Dockerfile ファイルのバージョン番号を、zip ファイルのバージョン番号と一致するように変更します。 ソース コードの Scripts フォルダーの下にある sql デプロイメント スクリプトを見つけて、Mysql で実行します。 apolloconfigdbを変更します。eureka.service.urlのアドレスはConfigserviceがデプロイされているアドレスです。例:http://192.168.xx.xxx:8081/eureka/、 ポータルの apollo.portal.envs を次のように変更します: dev、devmt などの複数環境のデプロイメント用の環境変数 ポータルのapollo.portal.meta.serversを、デプロイされたConfigserviceのアドレスに変更します。例: { "DEV":"http://192.168.xx.xxx:8081", "DEVMT":"http://192.168.xx.xxx:8082" } docker-compose.ymlを書く バージョン: "3" サービス: アポロ構成サービス: コンテナ名: apollo-configservice ビルド: apollo-configservice/ 画像: apollo-configservice ポート: -8081:8080 ボリューム: - /root/apollo/apollocompose/logs:/opt/logs 環境: - SPRING_DATASOURCE_URL= jdbc:mysql://192.168.xx.xxx:3306/apolloconfigdbdev?characterEncoding=utf8&serverTimezone=Asia/Shanghai -SPRING_DATASOURCE_USERNAME=xxxxxx -SPRING_DATASOURCE_PASSWORD=xxxxxx アポロ管理サービス: コンテナ名: apollo-adminservice ビルド: apollo-adminservice/ 画像: apollo-adminservice ポート: -8091:8090 ボリューム: - /root/apollo/apollocompose/logs:/opt/logs 環境: - SPRING_DATASOURCE_URL= jdbc:mysql://192.168.xx.xxx:3306/apolloconfigdbdev?characterEncoding=utf8&serverTimezone=Asia/Shanghai -SPRING_DATASOURCE_USERNAME=xxxxxx -SPRING_DATASOURCE_PASSWORD=xxxxxx アポロ-configservice-uat: コンテナ名: apollo-configservice-uat ビルド: apollo-configservice/ 画像: apollo-configservice ポート: -8082:8080 ボリューム: - /root/apollo/apollocompose/logs:/opt/logs 環境: - SPRING_DATASOURCE_URL= jdbc:mysql://192.168.xx.xxx:3306/apolloconfigdbuat?characterEncoding=utf8&serverTimezone=Asia/Shanghai -SPRING_DATASOURCE_USERNAME=xxxxxx -SPRING_DATASOURCE_PASSWORD=xxxxxx アポロ管理サービスUAT: コンテナ名: apollo-adminservice-uat ビルド: apollo-adminservice/ 画像: apollo-adminservice ポート: -8092:8090 ボリューム: - /root/apollo/apollocompose/logs:/opt/logs 環境: - SPRING_DATASOURCE_URL= jdbc:mysql://192.168.xx.xxx:3306/apolloconfigdbuat?characterEncoding=utf8&serverTimezone=Asia/Shanghai -SPRING_DATASOURCE_USERNAME=xxxxxx -SPRING_DATASOURCE_PASSWORD=xxxxxx アポロポータル: コンテナ名: アポロポータル ビルド: apollo-portal/ 画像: アポロポータル 再起動: 常に 依存: - アポロ管理サービス 環境: - SPRING_DATASOURCE_URL= jdbc:mysql://192.168.xx.xxx:3306/apolloportaldb?characterEncoding=utf8&serverTimezone=Asia/Shanghai -SPRING_DATASOURCE_USERNAME=xxxxxx -SPRING_DATASOURCE_PASSWORD=xxxxxx ボリューム: - /root/apollo/apollocompose/logs:/opt/logs - /root/apollo/apollocompose/apollo-env.properties:/apollo-portal/config/apollo-env.properties ポート: -8071:8070 ローカルの apollo-env.properties 環境変数構成を、カスタム構成または Ctrip によって定義された環境変数と一致するように変更します。 dev.meta = http://localhost:8081 です devmt.meta = http://localhost:8082 です。 docker-composeを実行します。起動に遅延がありますので、もう少しお待ちください。 落とし穴カスタム環境変数には、ソース コードのダウンロード、コンパイル、SQL スクリプト、およびデータベース接続構成が必要です。必ず公式 Web サイトで最新の接続構成を使用してください。バージョンによって SQL スクリプトが一致しない場合があります。デプロイメント マシンには十分な実行メモリが必要です。デプロイメントと起動後、configservice、adminservice、portal、Mata サービス、および Eureka は通信する必要があるため、起動後に遅延が発生します。デプロイメントが成功したかどうかを確認するには、しばらくお待ちください。サーバー ポートについては、ファイアウォールで対応するポート 8080、8090、8071、および指定したポートを開く必要があります。 学習リンク楊波氏のアーキテクチャ分析記事: https://blog.csdn.net/yang75108/article/details/86989524?spm=1001.2014.3001.5501 Apollo 設計ドキュメント: https://www.apolloconfig.com/ Apollo はカスタム環境を構築します: https://www.jianshu.com/p/f84da093944f 上記は、Apolloカスタム環境のdocker-composeデプロイメントの詳細です。Apollo環境のdocker-composeデプロイメントの詳細については、123WORDPRESS.COMの他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: スクロールバーを非表示にしながらもスクロール効果を維持する純粋な CSS (モバイルと PC)
>>: 2008 年の Web デザインにおける 10 の経験
目次デザインコンポーネント通信ライフサイクルイベント処理品格とスタイルクラススタイル条件付きレンダリ...
1. 問題開発中に、他のデータベースから MySQL データベース テーブルにデータを挿入すると、次...
wget や curl ツールを使用して、Linux サーバーで大規模なネットワーク ファイルを直接...
水平方向では、テーブルの配置を左、中央、右に設定できます。基本的な構文<テーブル配置=&quo...
Tomcat は内部的に複数の ClassLoader を定義し、アプリケーションとコンテナーが異な...
注意 ノーブレークスペース = ノーブレークスペース、 iexcl ¡ &...
目次1. 直接譲渡2. 浅いコピー3. ディープコピー1. JSONオブジェクトメソッド2. 再帰コ...
目次1. イメージをプルする2. イメージを実行する3. コンテナ内でアプリケーションをテストする4...
基本的な構文: <input type="hidden" name=&qu...
DockerイメージからDockerfileを取得する docker 履歴 --format {{....
操作中に Docker コンテナの公開ポートを変更または追加する必要がある場合がありますが、実行中の...
a タグは主にページ ジャンプを実装するために使用され、これは href 属性または onclick...
<em></em> などのフレーズ要素を使用すると、意図した視覚スタイルを維...
目次[例を見る]: 【本来の効果は以下の通り】理由は次のとおりです。 【解決】:要約するBootSt...
コードをコピーコードは次のとおりです。 <!--doctype はドキュメント タイプ htm...