Dapr[1]はDistributed Application Runtimeの略語です。マルチランタイムの詳細については、Bilgin Ibryamの「マルチランタイムマイクロサービスアーキテクチャ」[2]を参照してください。英語で読みたくない場合は、私の以前の翻訳を読んでください。 Dapr は、API を提供することでアプリケーションを周辺コンポーネントから分離し、開発者がビジネス ロジックの開発に集中できるようにする分散システム ツールキットです。分離も従来の SDK との大きな違いです。機能は、アプリケーションにライブラリを追加することによって提供されるのではなく、アプリケーションの近くにあるサイドカー ランタイムによって提供されるようになりました (サイドカーは、ポッド内のコンテナーであるよく知られたサービス メッシュ サイドカーではなく、オペレーティング システムの initd、ログ収集コンポーネント、さらには Java のマルチスレッドなど、システム ソフトウェア設計で広く使用されているパターンです)。したがって、ここで言及されている Dapr サイドカーは、独立したプロセスである場合もあれば、ポッド内のコンテナーである場合もあります。 Dapr では、多くの一般的な SDK 機能を見ることができます。
上記の機能は、HTTP および gRPC API を通じてアプリケーションに公開されます。これらのAPIはDaprではビルディングブロック[10]と呼ばれ、抽象化のみを提供します。つまり、アプリケーションコードを変更することなく、基盤となる実装(Daprではコンポーネント[11]とも呼ばれます)を自由に置き換えることができます。 例えば、アプリケーションがストレージに状態を保存する必要がある場合、開発中はメモリ[12]をストレージコンポーネントとして使用し、他の環境ではMysql[13]、Redis[14]などの永続化コンポーネントを使用することができます。 次に、公式の入門ガイドを参考にして Dapr を体験してください。 Daprはさまざまな入門ガイドを提供しています[15]。ここではhello-kubernetes[16]を選択しました。ただし、実際の操作は公式の動作と若干異なる場合があります。これらの違いのおかげで、私は Dapr についてさらに詳しく知ることができます。 環境Dapr CLIをインストールするDapr CLI は Dapr を操作するためのツールです。 Dapr インスタンスのインストール、管理、デバッグの実行に使用できます。公式のインストールドキュメント[17]を参照してください。私はmacOSを使用し、homebrewを選択してインストールしました。 brew インストール dapr - cli 現在の最新バージョンは 1.9.1 です。 dapr バージョン Kubernetes クラスターを作成する実験環境クラスターとして k3s v1.23.8+k3s2 を使用します。 エクスポート INSTALL_K3S_VERSION = v1 .23 .8 + k3s2 Daprをインストールする次のコマンドを実行して、クラスターに Dapr をインストールします。 dapr を初期化します--kubernetes --wait コンポーネントが正常に機能していることを確認します。 Kubernetes 環境では、多くのコマンドで --kubernetes または -k パラメータを使用する必要があります。 dapr ステータス-k サンプルアプリケーション環境がデプロイされたら、使用するサンプル アプリケーションを見てみましょう。 gitクローンhttps://github.com/dapr/quickstarts 例には、pythonapp と nodeapp の 2 つのアプリケーションと Redis が含まれています。
Dapr の 2 つの機能、サービス呼び出しと状態ストレージが使用されます。 アプリケーション名前空間を作成するアプリケーションは dpar-test 名前空間にデプロイされます。 kubectl 名前空間 daprの作成-テスト 状態ストレージ状態の保存には Redis を使用します。まず、Redis を名前空間ストアにデプロイします。簡単にするために、マスター ノードは 1 つだけ使用され、パスワードは changeme に設定されています。 helmリポジトリにbitnamiを追加しますhttps://charts.bitnami.com/bitnami コンポーネントの作成Redis にはパスワードが設定されているため、Secret 経由で渡される Redis にアクセスするためのパスワードを Dapr に提供する必要があります。秘密は dapr-test に保存されます。 kubectl は、ジェネリック redis - n dapr - test シークレットを作成します--from-literal=redis-password=changeme Redisストア仕様[18]に従って、dapr-testの下にコンポーネントstatetoreを作成します。
kubectl 適用-n dapr -テスト-f - << EOF 状態ストアへのアクセスDapr API [20]を介して状態ストアにアクセスします。リクエスト形式:POST http://localhost:<daprPort>/v1.0/state/<storename>。 以下は nodeapp のコードの一部です。 stateStoreName は上記で作成した状態ストアです。アプリケーションとコンポーネントが同じ名前空間にある場合は、statestore を直接使用します。それ以外の場合は、コンポーネントを storeName.storeNamespace と同じ名前空間に作成する必要があります (コンポーネント名 statestore がコード内にハードコードされているため)。 const stateStoreName = `statestore` ; サービスコール呼び出し元 pythonapp のコード。
dapr_port = os .getenv ( "DAPR_HTTP_PORT" , 3500 ) アプリケーションをデプロイするkubectl を適用-n dapr -test -fデプロイ/ノード.yaml ノード コンテナのログを確認すると、pythonapp からのリクエストが受信され、注文が正常に保存されていることがわかります。 kubectl ログ -f -n dapr-test -l app=node -c ノード デバッグ元の公式ガイドでは、Redis とアプリケーションを同じ名前空間にデプロイし、ストレージ コンポーネント名は nodeapp にハードコードされていました。実験していたときは、Redis は別のスペースにデプロイされていました。ノード コンテナのログを確認すると、次の内容が表示されました。 新しい注文が入りました!注文ID : 1 daprd コンテナには、次のログのみがあります。 time = "2023-02-11T02:55:38.166259509Z" level = info msg = "HTTP API が呼び出されました: POST /v1.0/state/statestore" app_id = nodeapp instance = nodeapp - 857 cf6f985 - jnmzw scope = dapr .runtime .http - info type = log useragent = "node-fetch/1.0 (+https://github.com/bitinn/node-fetch)" ver = 1.9 .6 nodeapp ポッドに dapr.io/log-level="debug" アノテーションを追加すると、daprd コンテナはデバッグ ログを出力できます。 time = "2023-02-11T03:05:07.663028821Z" level = debug msg = "{ERR_STATE_STORE_NOT_CONFIGURED 状態ストアが構成されていません}" app_id = nodeapp instance = nodeapp - 59 b754ff54 - c4x4s scope = dapr .runtime .http type = log ver = 1.9 .6 デバッグ方法の詳細については、公式のトラブルシューティングドキュメント[22]を参照してください。 要約するDapr は、従来の SDK アプローチとは異なるシステム統合のアプローチを提供するため、開発者は基盤となる実装を気にすることなくビジネス ロジックに集中できます。組織にとっては、アプリケーションの移植性が向上し、さまざまなクラウド環境を使用できるようになります。 ただし、Dapr 自体はクラウドやクラスターを越えることはできません。コミュニティでは、ハイブリッド マルチクラウド環境でサービス呼び出しを実装するために、サービス メッシュとの統合を検討しています。皆さんも楽しみにしてください。 参考文献[1] ダプル: https://dapr.io [2] マルチランタイムマイクロサービスアーキテクチャ: https://www.infoq.com/articles/multi-runtime-microservice-architecture/ [3] サービス呼び出し: https://docs.dapr.io/developing-applications/building-blocks/service-invocation/ [4] 回復力ポリシー: https://docs.dapr.io/operations/resiliency/policies/ [5] 状態ストレージ: https://docs.dapr.io/developing-applications/building-blocks/state-management/ [6] パブリッシュ/サブスクライブ: https://docs.dapr.io/developing-applications/building-blocks/pubsub/ [7] バインディング: https://docs.dapr.io/developing-applications/building-blocks/bindings/ [8] 分散ロック: https://docs.dapr.io/developing-applications/building-blocks/distributed-lock/distributed-lock-api-overview/ [9] 名前解決: https://docs.dapr.io/reference/components-reference/supported-name-resolution/ [10] ビルディングブロック: https://docs.dapr.io/concepts/building-blocks-concept/ [11] コンポーネント: https://docs.dapr.io/concepts/components-concept/ [12] メモリ: https://docs.dapr.io/reference/components-reference/supported-state-stores/setup-inmemory/ [13] MySQL: https://docs.dapr.io/reference/components-reference/supported-state-stores/setup-mysql/ [14] Redis: https://docs.dapr.io/reference/components-reference/supported-state-stores/setup-redis/ [15] 各種入門ガイド: https://github.com/dapr/quickstarts/tree/master/tutorials [16] hello-kubernetes: https://github.com/dapr/quickstarts/tree/master/tutorials/hello-kubernetes [17] インストールドキュメント: https://docs.dapr.io/getting-started/install-dapr-cli/ [18] Redisストア仕様: https://docs.dapr.io/reference/components-reference/supported-state-stores/ [19] Kubernetes: https://docs.dapr.io/reference/components-reference/supported-secret-stores/kubernetes-secret-store/ [20] 状態ストレージにアクセスするためのDapr API: https://docs.dapr.io/reference/api/state_api/#save-state [21] ドキュメント: https://docs.dapr.io/reference/arguments-annotations-overview/ [22] トラブルシューティングドキュメント: https://docs.dapr.io/operations/troubleshooting/ |
<<: 2023 年のクラウド コンピューティング、サービスとしてのサービス、コスト最適化の予測
>>: グリーンクラウドコンピューティングは持続可能な開発を推進します
初めて見知らぬ街に旅行する人を想像してみてください。トラブルを避けたい、見知らぬ土地に不慣れなため、...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますSEO プ...
WholesaleInternet は、カンザスシティのダウンタウンにあるインターネット サービス会...
最近、正確に言うと、過去 4 か月間、Baidu のアップデートはかなり混乱しています。純粋に手作業...
Tencent CloudのAMDクラウドサーバーグループ購入ギフトイベントが再び登場しました。これ...
みなさんこんにちは。私は梁磊です。百度はここ数日、異常な動きを見せています。皆さんも慣れていると思い...
企業で最適化を行うウェブマスターは、ウェブサイトのタイトルタグを知っておく必要があると思います。英語...
1. ウェブサイトのランキングの基本原則 検索エンジンの「古代」の時代では、検索結果におけるウェブサ...
今日は、「家電」ページを例に、JD.com の 3 階層のカテゴリ ページを見てみましょう。まず頭を...
Ocitysolutions は、Mineocity ゲーム コンソール プロバイダーとして 201...
desivps は、今年のブラックフライデーに VPS プロモーションを開始しました。デフォルトは米...
企業がクラウドやマルチクラウドの展開を運用するにつれて、クラウドの運用やクラウドの運用が解決すべき問...
2003年に設立されたドイツの超老舗企業Contaboが、日本東京にデータセンターを増設し、日本VP...
Hosthatchは英国ロンドンで独自のVPSクラウドサーバー事業を展開しており、安価で費用対効果が...
最近、「スーパーモバイルウイルス」として知られるトロイの木馬が、Android システムのセキュリテ...