第1章 全体の需要
1.1. トピックの背景
ある証券取引機関がオンライン取引プラットフォームを立ち上げ、登録ユーザー数は 1,000 万人近くに達し、全国の支店ユーザーからの取引リクエストを毎日受け付けています。同社の開発およびプラットフォーム管理要件を考慮して、株式取引ビッグデータ情報をリアルタイムで観察し、一部の重要なパフォーマンスデータを表示できるオンラインリアルタイムビッグデータシステムの開発を委託する予定です。
1.2.データソース
より現実的なテスト環境を提供するために、同社の技術部門は関係者に株式取引データ シミュレーターの設計を依頼し、プラットフォーム上で注文を行う顧客に関する情報をシミュレートして生成することができ、データはテキスト ファイルに自動的に保存されます。指定されたフォルダー内にあります。
シミュレーターを使用すると、プロセスの数を調整し、さまざまなレベルの同時実行をシミュレートして、システムのパフォーマンスを完全にテストできます。データの特定のフィールドの説明については、次の表で詳しく説明します。
1.3.要件
リアルタイム コンピューティング テクノロジを使用して、さまざまなデータ アクセスとリアルタイム コンピューティング方法を使用して、リアルタイム株式取引用のビッグ データ ダッシュボードを構築し、次の機能を実現します。
(1) 成熟したデータ ダッシュボードのオープン ソース コンポーネントを使用することも (Alibaba の DataV プラットフォームなど、ライセンスが必要です)、またはローカル表示プラットフォームを独立して開発することもできます。インターフェイスは 1 秒に 1 回更新する必要があります。
(2) インターフェイスは美しく、簡潔な情報が含まれている必要があります。
(3) 表示される情報には少なくとも次のものが含まれている必要があります。
a) 注文の処理速度 (「アイテム/秒」単位)。
b) 過去 1 分間およびその日の累計取引金額および取引件数。
c) 過去 1 分および当日の累積売買高。
d) 直近1分間の上位10銘柄情報とその日の累計取引金額。
e) 過去 1 分および当日の累積取引高の上位 10 位の取引プラットフォーム。
f) 全国(州ごと)の累積注文顧客数を表示し、地図上に視覚的に表示します。
g) さまざまな種類の株式の取引高分布を表示します。
h) [オプション] 単一銘柄の取引高の爆発的な増加について早期警告を提供します
(4) データの統計的誤差 (データ損失、統計的誤差) は 1% を超えてはならず、データ誤り率を計算するように実験を設計する必要があります。
(5) 表示されるデータの遅延は 30 秒を超えてはならず、更新されるたびに取得されたデータの最新の時刻が表示される必要があります。
(6) システムの最大負荷容量をテストします。これは、システムが 1 秒あたりに処理できる注文の最大数です。
(7) 特殊機能、ビジネスシーンや表示ニーズに応じて追加される特殊機能。
- 事例分析
この記事では、リアルタイム コンピューティング関連テクノロジを組み合わせて、プロジェクトの要件を満たす 2 つのソリューションを定式化します。
2.1.オプション 1
オプション 1 のアーキテクチャを図 1 に示します。kafka を使用して株式データ シミュレーターによって生成されたデータを直接読み取り、ストリーム コンピューティング プラットフォームとして Strom を使用して統計情報を mysql データベースに直接保存します。datav は、mysql クラウド データベース内のデータを直接読み取り、大画面に表示します。
図 1 解決策 1
このプログラムの利点は次のとおりです。
- Kafka は、大量のリアルタイム データを迅速に処理して配信できる、高スループット、低遅延の分散メッセージ キューです。株式データシミュレーターで生成されたデータを直接Kafkaに書き込むことで、リアルタイムのデータストリーム処理を実現し、データの適時性を確保します。
- Storm は、大規模なデータ ストリームの高速かつ信頼性の高い処理をサポートする、分散型のフォールト トレラントなリアルタイム コンピューティング システムです。Stormをストリームコンピューティングプラットフォームとして利用することで、Kafkaから読み込んだ株式データに対してリアルタイムの統計・計算を行うことができ、瞬時のデータ分析・予測機能を提供します。
- Alibaba Cloud のデータベースを使用すると、他の操作を行わずに Datav に直接接続できます。
2.2. オプション 2
図 2 解決策 2
オプション 2 のアーキテクチャを図 2 に示します。kafka を使用して株式データ シミュレーターによって生成されたデータを直接読み取り、ストリーム コンピューティング プラットフォームとして Flink を使用し、flinkjdbc を使用して統計情報を mysql データベースに直接保存します。datav は、mysql クラウド データベース内のデータを直接読み取り、大画面に表示します。
このプログラムの利点は次のとおりです。
- Flink はウィンドウ トランザクションを比較的完全にサポートしており、データ統計を実装するための独自のウィンドウ集計メソッドが付属しています。
- Flink が提供する MySQL データベースとの統合接続方法。
- Flink は、ミリ秒レベルの低遅延処理を実現でき、リアルタイム データ ストリームの処理に適した高スループットのイベント駆動型ストリーム処理モデルを提供します。
- 全体計画
ソリューションの全体的なアーキテクチャを図3に示します。これは主に、データ ソース、メッセージ ミドルウェア、ストリーム コンピューティング システム、リアルタイム データ ストレージ、およびリアルタイム データ アプリケーションの 5 つの主要コンポーネントで構成されます。
株データシミュレータは株データを継続的に生成しており、メッセージミドルウェアはKafkaであり、Kafkaは株シミュレータが生成したデータを順次読み込み、1秒に1回Excelテーブルを読み込み、新しく生成されたデータをKafkaコンシューマに送信します。ストリーム コンピューティング システムは flink を選択します。flink は、kafka によって生成されたデータを flink 経由で消費し、マルチスレッドを使用して計算結果を Alibaba Cloud の Mysql データベースに保存します。最後に、datav は Alibaba Cloud の mysql データベースに直接接続するために使用されます。
画像3
- ユニット実装
4.1.データ収集
株式データ シミュレーターはリアルタイムでデータをExcelに保存するため、この記事では、 Kafka プロデューサーのExcel テーブルとの接続を確立し、最新のデータを順番に読み取り、読み取ったデータをトピック内の Kafka トピックに送信することを選択します。
図 4 プロデューサーの構成情報
図 5 各 csv ファイルを読み取るループ
4.2. データの配布と購読
Kafka プロデューサーは、ストック データ シミュレーターからデータを生成した後、flink をコンシューマーとして使用して、kafka によって生成されたコンテンツを消費します。Flink コンシューマーの構成を図 6 に示します。図 7 に示すように、Flink のシンクを使用して、消費されたデータに対してリアルタイム計算が実行されます。
図6 フリンク構成