DUICUO

Tencent オープンソース クラウドネイティブ サービス ディスカバリーおよびガバナンス センター - Polaris

Polarisは、Tencentのオープンソースのサービス検出およびガバナンスセンターであり、分散型またはマイクロサービスアーキテクチャにおけるサービスの可視性、フォールトトレランス、トラフィック制御、セキュリティ問題の解決に特化しています。業界にはこれらの問題の一部を解決できるコンポーネントがいくつか存在しますが、標準的で多言語対応かつフレームワークに依存しない実装が不足しています。

テンセントは膨大な数の分散型サービスを抱えており、事業ラインとテクノロジースタックの多様性と相まって、規模の異なる数十の関連コンポーネントが存在します。2019年から、Polarisを活用してこれらのコンポーネントを抽象化・統合し、統合されたサービスディスカバリおよびガバナンスソリューションを構築することで、企業の研究開発効率と運用品質の向上を支援しています。

現在、Polarisはテンセント内で100万以上のサービスが登録されており、1日のAPI呼び出し数は10兆回を超えています。これは、Polarisの汎用性と安定性を大規模に実証しています。そのため、Polarisをオープンソースコミュニティに提供することで、他の企業にもメリットをもたらし、より多くの開発者が開発に参加してくれることを期待しています。

特徴

  • Polaris の機能はプラグイン方式で実装されており、企業はニーズに応じて使用する機能を選択でき、拡張も非常に簡単です。
  • アクセス方法はSDKとSidecarの2種類が用意されています。SDKは高パフォーマンスが求められるビジネスシナリオに適しており、Sidecarは非侵入型開発モデルに適しています。
  • SDK 統合では、Java、Go、C++、NodeJS などの複数の言語のクライアントが提供されており、同じ機能を備えています。
  • Polaris SDK は、Spring Cloud、gRPC、Nginx などの一般的に使用されるフレームワークやゲートウェイに統合できます。
  • Kubernetes に適しており、K8s サービスと Polaris サイドカーの自動挿入をサポートします。
  • Tencent の百万レベルのサービス ガバナンス センターのオープン ソース バージョンには、分散型サービス ガバナンスにおける Tencent の長年の経験が組み込まれています。

操縦面

North Star コントロール プレーンの実現には、次の 3 つの特徴があります。

  • コンピューティングとストレージが分離されているため、クライアント ノードが追加されるときにコンピューティング レイヤー ノードを並行して拡張でき、数百万のノードのアクセスを簡単にサポートできます。
  • コントロールプレーンは1つのプロセスのみで構成され、アクセス層、ロジック層、ストレージ層、キャッシュ層に分かれています。構造が明確で、保守が容易です。
  • アクセス層、ストレージ層、キャッシュ層はプラグイン設計を採用しており、拡張性が高く、さまざまなアプリケーション シナリオに適しています。

ポラリスとK8s

k8sサービス

Kubernetes は、サービスを通じてサービス検出および負荷分散機能を提供します。

  • ユーザーはサービスを作成し、タグを介して対応するポッドにバインドします。各サービスはクラスターIPアドレスに関連付けられます。
  • Kubernetes はまず、kubedns、coredns、またはその他の DNS プラグインに依存して、サービスをクラスター IP に解決します。
  • 次に、iptables または IPVS を使用して、クラスター IP への要求が対応するポッドに転送されます。

現在の Kubernetes サービスの実装には欠点があります。

  • サービスの数が一定の制限を超えると、iptables と IPVS ではパフォーマンスの問題が発生し、大規模な運用には適さなくなります。
  • iptables と IPVS は限られた数の負荷分散アルゴリズムをサポートしており、カーネルに実装されており、アプリケーション層で拡張することはできません。
  • 動的ルーティング、回路遮断と劣化、アクセス レート制限、アクセス認証などの一般的に使用されるサービス ガバナンス機能は提供されません。
  • サービス登録および検出方法は Spring Cloud などのマイクロサービス フレームワークと互換性がないため、接続を確立できません。

Kubernetes で Polaris を使用する

Polaris を使用して、Kubernetes のサービス検出およびガバナンス機能を補完します。

  • Kubernetes サービスの自動登録と SDK およびフレームワークを使用した登録の両方をサポートし、両方を統合的に管理します。
  • Kubernetes のオリジナルの DNS アクセス方法に加えて、高パフォーマンスと非侵入型の 2 つのサービス メッシュ ソリューションもサポートします。
  • 高性能サービス メッシュは、多言語 SDK を提供し、一般的なフレームワークや Polaris SDK との統合も提供します。
  • 非侵入型サービス メッシュはサイドカーを提供するため、ビジネス アプリケーションは SDK やフレームワークに依存する必要がありません。

クイックスタート

準備作業

データベースを準備する

MySQL(バージョン番号5.7以上)をダウンロードしてインストールする必要があります。こちらからダウンロードできます:https://dev.mysql.com/downloads/mysql/5.7.html

インポートデータベーステーブル作成スクリプト

テーブル作成スクリプトは ./store/defaultStore/polaris_server.sql で、mysql コマンドラインまたは管理クライアント経由でインポートできます。

Goコンパイル環境の準備

Polaris サーバーには、Go ビルド環境バージョン 1.12 以上が必要です。これは、https://golang.org/dl/#featured からダウンロードできます。

コンパイルとビルド

  1. chmod +x ビルド.sh
  2. ./build.sh

ビルドが完了すると、現在のディレクトリにパッケージ polaris-server-release_${version}.tar.gz が表示されます。

インストール

ソフトウェアパッケージを解凍する

polaris-server-release_${version}.tar.gz を入手して解凍します。

データベース構成の変更

抽出したディレクトリに移動し、polaris-server.yaml を開いて、DB 構成変数を実際のデータベース パラメータに置き換えます: ##DB_USER## (データベース ユーザー名)、##DB_PWD## (データベース パスワード)、##DB_ADDR## (データベース アドレス)、##DB_NAME## (データベース名)。

インストールスクリプトを実行する

  1. chmod +x ./tool/*.sh
  2. #インストール
  3. ./tool/install.sh
  4. #プロセスが正常に開始されたかどうかをテストする
  5. ./tool/p.sh

最後のステップで p.sh を実行すると、起動が成功したことを示す Polaris Server が返されます。

インストールを確認する

  1. カール http://127.0.0.1:8080

Polaris サーバーに戻ると、機能が正しく動作していることが確認されます。

経験

公式サイトは https://polarismesh.cn/ で、オンラインデモ版も http://159.75.195.18/ で利用可能です。

リポジトリアドレス: https://github.com/polarismesh/polaris