Dapr と Rainbond を統合して、クラウドネイティブの BaaS とモジュール式のマイクロサービス開発を実現

バックグラウンド

Dapr は、オープン ソースの分散アプリケーション ランタイムであり、開発者がスケーラビリティと保守性に優れた疎結合の分散アプリケーションを構築するのに役立ちます。Rainbond は、エンタープライズ レベルのクラウドネイティブ アプリケーション管理プラットフォームであり、開発者がアプリケーションを管理および展開するのを容易にする豊富な機能とツールを提供します。Rainbond と Dapr を組み合わせることで、次の価値を提供できます。

  1. Dapr のクラウド ネイティブ サポートを拡張する: Rainbond は、アプリケーション開発、アプリケーション オーケストレーション、アプリケーション配信、アプリケーションの運用と保守、およびその他のアプリケーション ライフサイクル管理機能を含む、クラウド ネイティブ アプリケーション サポート ソリューションの完全なセットを提供しますが、Dapr はアプリケーション開発にすぎません。アプリケーション開発モデル、サービス検出、イベント駆動型などを含むフレームワーク。Rainbond と Dapr を組み合わせることで、より完全なクラウド ネイティブ アプリケーションのサポートを提供し、開発者がアプリケーションをより迅速に構築およびデプロイできるようになります。
  2. Dapr アプリケーションの移植性の強化: Rainbond はアプリケーション テンプレート機能を提供し、Dapr によって開発されたアプリケーションはテンプレートの形式でパッケージ化され、操作のために他のプラットフォームに簡単に配信および移行できます。
  3. Rainbond のサービス ガバナンス機能の拡張: Rainbond は、プラグインによるサービス ガバナンス機能の拡張をサポートします. Dapr と組み合わせることで、Dapr を介してサービス ガバナンスを実現できます. この 2 つを組み合わせると、より完全なサービス ガバナンス機能が提供され、開発者はアプリケーション内のサービスをより適切に管理および制御できます。
  4. Rainbond に BaaS 機能を追加する: Rainbond でソフトウェアを開発するには、バックエンド データベースとミドルウェアを自分でインストールする必要があり、Dapr は API の形でバックエンド機能を提供します。 BaaS体験を実現するAPI。

つまり、Dapr と Rainbond は、互いの機能の不足を補完することができます.Rainbond は、アプリケーションのライフ サイクル管理の問題を解決します.開発者は、基盤となるテクノロジを理解する必要はありませんが、バックエンド サービスを理解する必要があります.Dapr は、この機能を補完し、開発者はよりビジネスに集中できます。

Rainbond と Dapr の統合のアイデア

Dapr マイクロサービス フレームワークのビジネス システムでは、Daprd がビジネス全体の中核であり、アプリケーションはランタイム API を介して Daprd にリクエストを送信し、Daprd はこれらのリクエストを処理し、基盤となるサービスと対話します。Daprd は Dapr Services の dapr-sidecar-injector サービスによって注入され、Pod が注入条件を満たしたときに注入されます。同時に、Dapr Services の dapr-operator がクラスタ全体の Dapr 構成リソース (CRD) を監視し、Dapr 構成リソースの作成をキャプチャすると、メモリに記録され、再度注入された Daprd が実行されます。 Pod が を宣言する場合は、この構成を使用します。対応する機能が提供されます。

  • Dapr サービスのインストール: Rainbond は、Dapr サービス リソースを統合し、それらをプラグイン アプリケーションとしてアプリ ストアに配置します. インストールにより、クラスターはクラスターに dapr マイクロサービス アーキテクチャ機能をすばやく装備でき、クラスターでコマンドを実行する必要がなくなります。同時に外国の問題を解決する dapr init -k. ミラープルの問題。
  • DaprD インジェクション: 従来のインジェクション方法では、インジェクション条件フィールドを手動で追加する必要があり、これは時間がかかり、維持が難しく、エラーが発生しやすいものでした。Rainbond は、Pod にさまざまな属性フィールドを追加して、さまざまなマイクロサービス アーキテクチャのインジェクションに対応することをサポートしています。バッチ注入、迅速な使用、および簡単な管理を実現するために、アプリケーション条件のガバナンス モードを切り替えます。
  • Dapr 構成: Dapr は、サービス ガバナンス機能を拡張するために Daprd を構成するための 4 つのリソースを提供します, すなわち、構成、コンポーネント、回復力、およびサブスクリプション. これらのリソースを、ビジネス コンポーネントで使用するための Yaml を記述する形式でクラスター内に作成する必要があります. Rainbond プラットフォームアプリケーション内の k8s リソースの管理の入り口では、効果はkubectlやや似ていますが、kubectl管理しやすくなっています。その中で、構成リソースは、接続文字列、キー、証明書などのアプリケーションの構成情報を格納するために使用され、それらを使用する前に Pod 用に構成されたannotationsプロパティ Rainbond のannotationsプロパティ構成が提供されるため、構成プロセスが簡素化されます。
  • Dapr コンポーネントのインストールとドッキング: Rainbond のアプリケーション ストアには、MySQL、Redis などの多くのバックエンド実装が既にあり、ワンクリックで Rainbond にインストールして使用できます。Dapr アプリケーションの K8s リソース管理で Component の yaml を設定し、バックエンド サービスのアドレスをバインドします。
  • **Dapr アプリケーション開発: **Dapr によって開発されたアプリケーションは、ソース コード、イメージ、および yaml を使用して Rainbond プラットフォームにデプロイでき、Dapr の API 仕様に従ってバックエンド サービスにアクセスできます.Rainbond は、継続的な統合、継続的な配信、 Dapr アプリケーションの環境管理、構成管理、ログとパフォーマンスの監視、アクセス ゲートウェイ、アプリケーションの運用と保守、および Dapr アプリケーションの開発と管理を支援するその他の機能。

導入・利用の流れ

Rainbond に基づく Dpar を使用するターゲット:

  • クラスターが Dapr マイクロサービス アーキテクチャの機能を備えているように、Dapr サービスのワンクリック展開。
  • ビジネス コンポーネント用の Daprd を自動的にインジェクトします。
  • Dapr 構成を視覚的に管理します。
  • Daprd 属性パラメーターの構成プロセスを簡素化します。
  • Dapr ビジネスを提供する複数の方法。

Rainbond で Dapr がどのように使用されているかをすばやく理解し、習得できるように、パブリッシュ/サブスクライブの例を展開させてください。

前提条件

  1. Rainbond のバージョンは v5.13 以降です。
  2. Rainbond はすでにオープン ソース アプリケーション ストアを引き継いでおり、プッシュ権限を持っています。

練習手順

1. Rainbond Service Mesh プラグインをインストールします

Rainbond ServiceMesh プラグインは、指定されたガバナンス モードに従ってアプリケーション コンポーネントの処理と調整を行い、マイクロサービス ガバナンス プラグイン インジェクションの基本条件を満たすようにします。を通って平台管理->应⽤市场->开源应⽤商店->搜索 Rainbond-ServiceMesh 并进行安装

2. Dapr アプリケーション プラグインをインストールする

英語で dapr-system という名前のチームを作成し、Dapr Services をインストールします。を介して平台管理->应⽤市场->开源应⽤商店->搜索 Rainbond-Dapr 并进行安装

3. バインディング コンポーネント

Dapr は、Redis、Mysql、Oauth などのさまざまなコンポーネント実装とのドッキングをサポートしています。また、Rainbond プラットフォームへのインストールも非常に簡単です。ほとんどの実装は、Rainbond アプリケーション ストアで見つけることができます。サポートされていないストレージもいくつかあります。アプリの制作に参加し、アプリストアにリリースします。この例では、Redis を からインストールする必要があります平台管理->应⽤市场->开源应⽤商店->搜索 Redis 并进行安装インストールが完了したら应用视图->k8s资源->编写 Component 资源、バインドします。

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: pubsub
spec:
  type: pubsub.redis
  version: v1
  metadata:
  - name: "redisHost"
    value: "YOUR_REDIS_HOST_HERE"
  - name: "redisPassword"
    value: "YOUR_REDIS_PASSWORD_HERE"

MySQL の場合、手順は平台管理->应⽤市场->开源应⽤商店->搜索 MySQL 并进行安装インストールが完了した後にバインドする 应用视图->k8s资源->编写 Component 资源ことです。

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: <NAME>
spec:
  type: state.mysql
  version: v1
  metadata:
  - name: connectionString
    value: "<CONNECTION STRING>"
  - name: schemaName
    value: "<SCHEMA NAME>"
  - name: tableName
    value: "<TABLE NAME>"
  - name: pemPath
    value: "<PEM PATH>"

4. アプリケーション ガバナンス モードを切り替える

ビジネス アプリケーションのガバナンス モデルを Dapr に切り替えます。を介して 应用视图->治理模式->选择 Dapr 治理模式进行切换その中で、dapr ガバナンス モードはコンポーネントのannotations属性dapr.io/enabled: "true"dapr.io/app-id="xxx"xxx はコンポーネントの英語名です.これはdapr.io/app-idDapr システムで唯一の識別子であるため、Rainbond は自己構成をサポートします.この属性フィールドが検出された場合、元の構成が最初に使用されます。インジェクション条件が満たされると、dapr-sidecar-injector サービスが動作を開始し、ビジネス コンポーネントの Daprd をインジェクトします。

5.事業展開

Rainbond は、ビジネス、ミラーリング、Helm、Yaml、ソース コードなどをデプロイするさまざまな方法を提供します。ここでは、ミラー展開を使用することを選択します。具体的な手順は次のとおりです 应用视图->添加组件->指定镜像->填写镜像地址

demo镜像地址:
registry.cn-hangzhou.aliyuncs.com/zhangqihang/pubsub-node-subscriber:latest
registry.cn-hangzhou.aliyuncs.com/zhangqihang/pubsub-react-form:latest
registry.cn-hangzhou.aliyuncs.com/zhangqihang/pubsub-go-subscriber:latest

Dapr のメッセージ キューannotationsdapr.io/app-portコンポーネント プロパティのフィールドを設定する必要があるため、ガバナンス モードの切り替え時に自動的に生成されないため、必要があります组件视图->其他设置->Kubernetes属性->新增属性->选择 annotations->添加 dapr.io/app-port=组件端口字段同様に、他の拡張annotations属性フィールドもここで構成されます。

6.最終エフェクトを展開する

その後、pubsub-react-form 组件的组件视图->端口->打开对外服务メッセージ発行コンポーネントにアクセスして、サブスクリプション A、B、および C にメッセージを発行できます。コンポーネントのログを観察することで、サブスクリプションの内容を確認できます。ログの場所pubsub-node-subscriber: pubsub-go-subscriber组件视图->日志

7. Dapr コンソールで管理する

Dapr ダッシュボードにアクセスして、Dapr のマイクロサービス コンポーネントの登録情報を表示します。

8. アプリケーション テンプレートを公開する

Rainbond は、ワンクリックでアプリケーション テンプレートを公開する機能を提供します. Dapr 開発アプリケーションのアプリケーション ビューで、クリックして发布アプリケーション テンプレートを公開し、アプリケーション テンプレートを介してオンラインおよびオフラインの他の環境にすばやくインストールします. ただし、それ以外の環境で使用する場合は、先に Rainbond と Dapr の基本環境をインストールする必要があります。

Rainbond での Dapr のスケーリング

リンク追跡

リンク トラッキングは、ネットワーク パフォーマンスを最適化し、問題を検出するために、ネットワーク内のデータ パケットのパスとそれらが通過するノードを追跡するために使用されるネットワーク モニタリングおよびトラブルシューティング テクノロジーです。Dapr では、バインディング トラッカーを設定することによって機能しますConfiguration资源以下は、 Zipkin tracker によって実装されたConfigurationリソース構成の例です。詳細については、Dapr 可観測性を参照してください

存在应用视图->k8s资源->编写 Configuration 资源

apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
  name: daprConfig
  namespace: default
spec:
  tracing:
    samplingRate: "1"
    zipkin:
      endpointAddress: "http://localhost:9411/api/v2/spans"

ヒューズ電流制限

1 秒あたりに許可される HTTP 要求の最大数を制限するレート制限は、サービス拒否 (DOS) 攻撃からアプリケーションを保護します。componentリソースをミドルウェアとして構成し、Configuration 资源それらをバインドして、ビジネス コンポーネントでマウントを構成する必要があります。

ミドルウェアで应用视图->k8s资源->编写 Component 资源、1 秒あたりの最大リクエスト数を 10 に設定します。

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: ratelimit
spec:
  type: middleware.http.ratelimit
  version: v1
  metadata:
  - name: maxRequestsPerSecond
    value: 10

バインド应用视图->k8s资源->编写 Configuration 配置资源ミドルウェア。

apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
  name: appconfig
spec:
  httpPipeline:
    handlers:
    - name: ratelimit
      type: middleware.http.ratelimit

バインディング構成で组件视图->其他设置->Kubernetes属性->新增属性->选择annotations->添加 dapr.io/config 属性字段

おすすめ

転載: blog.csdn.net/Mrex326428/article/details/130112283