背景現在、新しいサービスのための技術を選定しており、メッセージ ミドルウェアの選定も行っています。実際の状況を踏まえると、以下の要件を満たすことができると期待しています。
もちろん、水平拡張、スループット、低レイテンシなど、詳しく説明する必要のない機能もあります。ほぼすべての成熟したメッセージ ミドルウェアは、これらの要件を満たすことができます。 上記のスクリーニング条件に基づいて、Pulsar が私たちの視界に入りました。 Apache のトップレベル プロジェクトとして、上記の機能は十分にサポートされます。 それでは、何がそんなに特別なのか見てみましょう。 建築公式のアーキテクチャ図から、Pulsar は主に次のコンポーネントで構成されていることがわかります。
一見すると、Kafka が依存するコンポーネントの数よりも多くのコンポーネントがあり、システムの複雑さが増しているように見えます。しかし、そのメリットも明らかです。 Pulsar はストレージとコンピューティングが分離されているため、容量の拡張が必要な場合でも非常に簡単です。他の精神的な負担なしに、新しいブローカーを直接追加できます。 ストレージがボトルネックになった場合は、BookKeeper を拡張するだけで済みます。 BookKeeper が自動的に負荷を処理するため、手動で再バランス調整する必要はありません。 同じ操作でも、Kafka ははるかに複雑です。 特性マルチテナント マルチテナント機能も厳密に必要な機能であり、異なるビジネスやチームのデータを同じクラスター内で分離できます。
このトピック名を例にとると、コア テナントの下に order 名前空間があり、最後に create-order トピック名があります。 実際の使用では、テナントは一般的にビジネス チームごとに分割され、名前空間は現在のチームの下にある異なるビジネスです。これにより、トピックを明確に管理できるようになります。 通常、比較しなくても害はありません。マルチテナントのないメッセージミドルウェアでは、このような問題にどのように対処しますか?
上記は、マルチテナンシーの重要性を明確に示しています。 関数Pulsar は、特定のメッセージを別のトピックに公開する前にクリーンアップして変換する必要があるなどの軽量関数コンピューティングもサポートしています。 このタイプの要件に対しては、単純な関数を記述できます。 Pulsar は、データを簡単に処理し、最終的に公式ツールを使用してブローカーに公開できる SDK を提供します。 これまでは、このような単純な要件でも、ストリーム処理エンジンを自分で処理する必要があったかもしれません。 応用これらを除けば、プロデューサーやコンシューマーなどの上位レベルのアプリケーションの概念と使用法は、すべての人にとって同様です。 たとえば、Pulsar は次の 4 つの消費モードをサポートしています。
3 番目の共有消費モードが最も一般的に使用されるはずです。 KeyShared モードは、メッセージにシーケンス要件がある場合に使用できます。 開発キット公式にサポートされている SDK は非常に豊富です。公式 SDK をベースに内部で使用する SDK もカプセル化しました。 dig のような軽量の依存性注入ライブラリを使用するため、次のようになります。
2 つの container.Provide() 関数は、コンシューマー オブジェクトを挿入するために使用されます。 container.Invoke(StartConsumer) は、コンテナーからすべてのコンシューマー オブジェクトを取り出し、同時に消費を開始します。 当時、私の限られた Go 開発経験から、次のような疑問も考えていました。Go では依存性注入は必要なのか? まず、Dig のようなライブラリを使用する利点を見てみましょう。
同様の欠点も存在します:
Spring を使用したことがある Java 開発者にとっては、Spring は本当に優れていると間違いなく言うでしょう。結局のところ、それはまだ馴染みのある味です。しかし、同様のニーズに遭遇したことのない Gopher にとっては、それは緊急のニーズではないようです。 市場にはさまざまな Go 依存性注入ライブラリが登場しており、その中には大手メーカーが制作したものも多く、依然として大きな市場があることがわかります。 多くの Gopher は、Java のいくつかの複雑な概念が Go に導入されることに非常に嫌悪感を抱いていると思いますが、依存性注入自体は言語によって制限されるものではなく、さまざまな言語にも独自の実装があると思います。 Java の Spring は単なる依存性注入フレームワークではなく、多くの開発者を困惑させる複雑な機能も多数備えています。 依存性注入だけであれば、実装は複雑ではなく、それほど複雑にはなりません。時間をかけてソースコードを読むと、概念を理解した上ですぐに習得できるようになります。 SDK 自体に戻ると、Go の SDK は現在 Java バージョンよりも機能が少ない (正確には、Java バージョンのみが最も多くの機能を備えています) ですが、コア機能はすべて備えており、日常的な使用には影響しません。 要約するこの記事では、Pulsar の基本的な概念と利点を紹介し、Go の依存性注入について説明します。私たちと同じようにテクノロジーの選択をする場合は、Pulsar を検討してみてはいかがでしょうか。 |
<<: オンライン問題レビュー、JVM Fast Throw のストーリー
>>: 2021年の世界クラウドストレージ業界の現状と発展の見通しに関する分析
ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスインターネットが発展して...
意図的かどうかに関わらず、ウェブサイトのランキングは常に SEO に外部リンクを継続的にリリースする...
[[404296]]みなさんこんにちは、私は悟空です。前回の記事では、MySQL と NoSQL の...
[[374276]]この記事はWeChatの公開アカウント「bugstack」から転載したもので、著...
ウェブサイトの収益性は、ウェブマスターがウェブサイトを運営する上で常に基盤となってきました。ウェブサ...
[51CTO.com からのオリジナル記事] Ceph 分散ストレージは、スケーラビリティ、信頼性、...
最近、アメリカの有名な経済雑誌「フォーブス」が「SEOは死に絶え、ソーシャルリアルタイムコンテンツが...
網易科技ニュース、5月23日、昨日、中国インターネット金融グループとその子会社であるクラウドファンデ...
調査によると、IT プロフェッショナルの約 80% が、クラウド プラットフォームへの移行によって生...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています「筋肉も顔...
私が初めて SEO 業界に入ったとき、多くのことについてまだ無知でした。ウェブサイトの最適化能力を向...
あなたのウェブサイトのトラフィックはどれくらいですか? かなり多いかもしれませんが、ウェブサイトのリ...
あなたは自分の努力を妨害していませんか?アン・ハンドリーマーケティングの無駄は非常に深刻です。評判を...
インターネット技術には 2 つの主要な支点があり、その 1 つはキャッシュです。分散キャッシュ シス...
「商品に自信があるなら、百度入札プロモーションをやろう!」これは、ロビン・リーが百度入札商品を位置づ...