Kafka と Nginx の統合例

Kafka と Nginx の統合例

背景

nginx-kafka-module は、Kafka を nginx に統合して、Web プロジェクトのフロントエンド ページからのデータ収集を容易にする nginx 用プラグインです。データがフロントエンド ページに埋め込まれている場合、一部のユーザー アクセスおよびリクエスト データは、http リクエストを通じてメッセージ ミドルウェア Kafka に直接送信できます。バックエンドは、プログラムを通じて Kafka 内のメッセージを消費し、リアルタイム計算を実行できます。たとえば、SparkStream を使用すると、Kafka 内のデータをリアルタイムで消費し、ユーザーの PV、UV、一部のユーザー行動、ページのファネル モデルの変換率を分析して、システムをより最適化したり、訪問ユーザーのリアルタイムの動的分析を実行したりできます。

具体的な統合手順

1. gitをインストールする

yum インストール -y git

2. /usr/local/srcディレクトリに切り替えて、Kafka Cクライアントのソースコードをローカルにクローンします。

/usr/local/src をコピーします
git クローン https://github.com/edenhill/librdkafka

3. librdkafkaを入力してコンパイルする

cd librdkafka
yum インストール -y gcc gcc-c++ pcre-devel zlib-devel
./configure
作成 && インストール

4. nginx統合kafkaプラグインをインストールし、/usr/local/srcに入り、nginx統合kafkaソースコードをクローンします。

/usr/local/src をコピーします
Git クローン https://github.com/brg-liuwei/ngx_kafka_module

5. nginxソースパッケージディレクトリに入る(nginxをコンパイルし、同時にプラグインをコンパイルする)

/usr/local/src/nginx-1.12.2 をコピーします
./configure --add-module=/usr/local/src/ngx_kafka_module/
作成 && インストール

6. nginx設定ファイルを変更します。場所とkafkaトピックを設定します。詳細については、現在のディレクトリのnginx.confを参照してください。

#設定を追加(2箇所)
カフカ;
kafka_broker_list f1:9092 f2:9092 f3:9092;

場所 = /kafka/access {
kafka_topic アクセス888;
}

以下のように表示されます。

7. zk および kafka クラスターを起動する (トピックを作成する)

zkServer.sh 開始
kafka-server-start.sh -daemon config/server.properties

8. nginxを起動し、エラーを報告し、kafka.so.1ファイルが見つからない

共有ライブラリのロード中にエラーが発生しました: librdkafka.so.1: 共有オブジェクトファイルを開けません: そのようなファイルまたはディレクトリはありません

9. soライブラリをロードする

#起動時に /usr/local/lib 下のライブラリをロードします echo "/usr/local/lib" >> /etc/ld.so.conf
#ldconfigを手動でロードする

10. テストを行い、データを nginx に書き込み、Kafka コンシューマーがデータを消費できるかどうかを観察します。

curl http://localhost/kafka/access -d "メッセージをkafkaトピックに送信"
curl http://localhost/kafka/access -d "Xiaowei666" テスト

情報を送信するためのページ埋め込みリクエスト インターフェースをシミュレートすることもできます。

バックグラウンドの Kafka 消費情報は次のとおりです。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Spring Boot WebSocket 統合と nginx 構成の詳細な説明
  • FastDFS をインストールして設定し、Nginx-1.13.3 と統合する方法
  • Linux での Nginx + Tomcat 統合のインストールと構成の詳細な説明
  • centos6.4+nginx+mysql+php+phpmyadminの統合プロセスの詳細な説明
  • Linux で Redmine と SVN を Nginx に統合する方法

<<:  検証コード干渉を実装する js (静的)

>>:  検証コード干渉を実装する js (動的)

推薦する

MySQLデータベース監視binlogを有効にする手順

序文多くの場合、ユーザーが自分のデータに対して実行する操作に基づいて何かを行う必要があります。たとえ...

CSS3はNESゲームコンソールのサンプルコードを実装します

成果を達成する実装コードhtml <input type="radio" ...

Ajax responseText による JSON データの解析のケース スタディ

ajax 処理後にサーバーから返される responseText が JSON データであるという問...

Vue 天気予報入門

この記事では、参考までに天気予報を実装するためのVueの具体的なコードを紹介します。具体的な内容は次...

InnoDB がトランザクション分離レベルを巧みに実装する方法

序文前回の記事「MySQL ロック メカニズムの詳細説明」では、InnoDB のロック メカニズムに...

CocosCreator でレイヤー管理に常駐ノードを使用する方法

CocosCreator バージョン: 2.3.4ほとんどのゲームにはレイヤー管理機能があり、例えば...

URLエスケープエンコーディングの特殊文字に基づいて

目次URL 内の特殊文字URL 特殊文字エスケープ、URL 内の一部の文字には特別な意味があり、基本...

MySQL で絵文字表現を挿入できない理由と解決策

失敗のシナリオMySQL データベースに絵文字表現を挿入するために JDBC を呼び出すと、例外ja...

Javascript のスコープとクロージャの詳細

目次1. 範囲2. スコープチェーン3. 語彙の範囲5. 閉鎖の適用6. クロージャの欠陥7. 閉会...

antd ツリーと親子コンポーネント間の値転送問題について (React のまとめ)

プロジェクト要件: 製品ツリー ノードをクリックすると、そのノードのすべての親ノードが取得され、表に...

MySQL 8.0 エラー サーバーがクライアントに不明な認証方法を要求しました 解決策

最新バージョンのMySQL 8.0.11をインストールした後、ユーザーを作成して認証します。認証され...

CSSセレクターでの正規表現の使用

はい、CSS にも正規表現があります (アーメン) CSS で目立つための 2 つの強力なツール: ...

ECMAScriptにおけるプリミティブ値と参照値の詳しい説明

目次序文動的プロパティとは何ですか?値のコピー値の種類を決定する要約する序文これは JavaScri...

CSS3を使用して背景画像の色を変更するさまざまな方法

CSS3 では画像の色を変更できます。これからは複数の絵をデザインする必要がなくなり、いつでも修正で...