Serverlessノード.JPのURL短縮アプリケーションは、upstashカフカと
12036 ワード
これは単純なノードです.JS URL短縮アプリを使用するCloudflare Workers .
このアプリはCloudflare Workers and Upstash データを保存するためのREDIS、およびMaterialize リアルタイムデータ解析のために.
Upstash Serverless、低レイテンシを提供し、KafkaとRedisのソリューションを行くように支払う.
Materialize リアルタイムアプリケーションのストリーミングデータベースです.具体的には、さまざまなストリーミングソース(KAKKA)、データストア、データベース(S 3とPostgresのような)、およびファイル(CSVとJSONのような)からの入力データを受け取り、SQLを使用して問い合わせをすることができます.
デモアプリケーションには次の構造があります. 短いリンクを追加し、他のURLにそれらをリダイレクトすることができます無制限のCloudFlare労働者. すべてのデータは、Upstash Serverless Redisクラスタにキー値ペア(短いリンク->ロングリンク)として格納されます. あなたが短いリンクを訪問するたびに、それはイベントをトリガし、Uststashカフカにそれを格納します. その後、我々はUststashカフカからデータを取得し、リアルタイムで具体化することを分析します. アプリのデモはここで見つけることができます
https://cf-url-shortener.bobbyiliev.workers.dev/admin
以下はアプリケーション構造の図です.
ここでは、アプリの動作方法の簡単なデモです
始める前に、次のようにする必要があります UpstashのRedisクラスタとKafkaクラスタ upstashというカフカ話題 CloudFlare CLIツールと呼ばれます.
説明したように、ローカルマシン上で実行される実現可能なインスタンスhere またはMaterialize Cloud instance .
すべての前提条件があれば、次の手順を実行できます. リポジトリをクローンし、次のコマンドを実行します.
ディレクトリにアクセスします
インストール
を実行する
それから
以下の秘密をCloudFlareで設定します
次のコマンドを実行してCF Workerを配置します.
一度CFの労働者を配置したら、リアルタイムでUFSTashカフカのデータを分析するために具体化を設定することができます.
実体化されたクラウドで新しい実体化インスタンスを作成することから始めましょう. https://materialize.com/docs/cloud/get-started-with-cloud/ あるいは、ローカルにMaterializeをインストールすることもできます. https://materialize.com/docs/install/ インスタンスを作成した後、
The
新しいカフカソースを作成するには、次のステートメントを実行します
次に、私たちはNON-materialized View , 他の具体化されたビューで使用する再利用可能なテンプレートの種類として考えることができます.
だから我々の具体化されたビューからデータをストリームを使用して
具体的にはPostgresワイヤ互換性があるので、MetabaseのようなBIツールを使用して、Mitiializeインスタンスのリアルタイムデータストリームを使用してビジネスインテリジェンスダッシュボードを作成できます.
Metabase + Materializeの詳細については、公式ドキュメントを参照してください.
短いリンクあたりのクリック数を示すダッシュボードの例
あなたのUpstashカフスServerlessインスタンス内のデータを分析するために材料を使用してデータにリアルタイムの洞察を得るために素晴らしい方法です.
次のステップとして、具体化とupstashについて学ぶいくつかの他の大きなリソースがあります. Materialize Upstash Upstash Kafka Upstash Redis Materialize Docs
このアプリはCloudflare Workers and Upstash データを保存するためのREDIS、およびMaterialize リアルタイムデータ解析のために.
Upstash Serverless、低レイテンシを提供し、KafkaとRedisのソリューションを行くように支払う.
Materialize リアルタイムアプリケーションのストリーミングデータベースです.具体的には、さまざまなストリーミングソース(KAKKA)、データストア、データベース(S 3とPostgresのような)、およびファイル(CSVとJSONのような)からの入力データを受け取り、SQLを使用して問い合わせをすることができます.
アプリ構造
デモアプリケーションには次の構造があります.
https://cf-url-shortener.bobbyiliev.workers.dev/admin
ダイヤグラム
以下はアプリケーション構造の図です.
デモ
ここでは、アプリの動作方法の簡単なデモです
必要条件
始める前に、次のようにする必要があります
visits-log
. wrangler
あなたのローカルマシンでhere このデモの実行
すべての前提条件があれば、次の手順を実行できます.
git clone https://github.com/bobbyiliev/cf-url-shortener.git
cd cf-url-shortener
npm
依存:npm install
wrangler
CloudFlareで認証するコマンドwrangler login
wrangler.toml
ファイル更新account_id
CloudFLASアカウントIDにマッチするには、次の手順に従います.account_id = "YOUR_ACCOUNT_ID_HERE"
wrangler
ツールwrangler secret put UPSTASH_REDIS_REST_URL
wrangler secret put UPSTASH_REDIS_REST_TOKEN
wrangler secret put UPSTASH_KAFKA_REST_URL
wrangler secret put UPSTASH_KAFKA_REST_USERNAME
wrangler secret put UPSTASH_KAFKA_REST_PASSWORD
Make sure to use the REST API URLs and not the Broker details.
wrangler deploy
CFの労働者が配置されている場合は、短いリンクを追加することができますし、他のURLにリダイレクトする管理者のURLを訪問することができます.セットアップ
一度CFの労働者を配置したら、リアルタイムでUFSTashカフカのデータを分析するために具体化を設定することができます.
実体化されたクラウドで新しい実体化インスタンスを作成することから始めましょう.
psql
ドキュメントに示すコマンド.カフカソースを作成する
The
CREATE SOURCE
ステートメントを使用すると、外部のKAFKAデータソースに実体化を接続し、データがSQLテーブルにあるかのように、そのデータと対話できます.新しいカフカソースを作成するには、次のステートメントを実行します
CREATE SOURCE click_stats
FROM KAFKA BROKER 'UPSTASH_KAFKA_BROKER_URL' TOPIC 'visits-log'
WITH (
security_protocol = 'SASL_SSL',
sasl_mechanisms = 'SCRAM-SHA-256',
sasl_username = 'UPSTASH_KAFKA_BROKER_USERNAME',
sasl_password = 'UPSTASH_KAFKA_BROKER_PASSWORD'
)
FORMAT BYTES;
Change the Kafka details to match your Upstash Kafka cluster Broker and credentials.
次に、私たちはNON-materialized View , 他の具体化されたビューで使用する再利用可能なテンプレートの種類として考えることができます.
CREATE VIEW click_stats_v AS
SELECT
*
FROM (
SELECT
(data->>'shortCode')::string AS short_code,
(data->>'longUrl')::string AS long_url,
(data->>'country')::string AS country,
(data->>'city')::string AS city,
(data->>'ip')::string AS ip
FROM (
SELECT CAST(data AS jsonb) AS data
FROM (
SELECT convert_from(data, 'utf8') AS data
FROM click_stats
)
)
);
最後に、作成materialized view Kafkaソースのデータを分析するには、次の手順に従います.CREATE MATERIALIZED VIEW click_stats_m AS
SELECT
*
FROM click_stats_v;
次に標準SQLを使用して実体化されたビューを問い合わせることができますが、サブミリ秒の遅延でデータをリアルタイムで取得できます.SELECT * FROM click_stats_m;
あなたは一緒に具体化された見解を積み重ねることができます、それで、短いリンクにつきクリック数で注文しましょう:CREATE MATERIALIZED VIEW order_by_clicks AS
SELECT
short_code,
COUNT(*) AS clicks
FROM click_stats_m
GROUP BY short_code;
具体化の大きな特徴の一つはTAIL
.TAIL
ストリームは、ソース、テーブル、またはビューからの更新が発生します.だから我々の具体化されたビューからデータをストリームを使用して
TAIL
, 次の文を使用できます.COPY ( TAIL ( SELECT * FROM order_by_clicks ) ) TO STDOUT;
詳しくはTAIL
, このブログ記事をチェックしてください結果を表示する
具体的にはPostgresワイヤ互換性があるので、MetabaseのようなBIツールを使用して、Mitiializeインスタンスのリアルタイムデータストリームを使用してビジネスインテリジェンスダッシュボードを作成できます.
Metabase + Materializeの詳細については、公式ドキュメントを参照してください.
短いリンクあたりのクリック数を示すダッシュボードの例
結論
あなたのUpstashカフスServerlessインスタンス内のデータを分析するために材料を使用してデータにリアルタイムの洞察を得るために素晴らしい方法です.
次のステップとして、具体化とupstashについて学ぶいくつかの他の大きなリソースがあります.
Reference
この問題について(Serverlessノード.JPのURL短縮アプリケーションは、upstashカフカと), 我々は、より多くの情報をここで見つけました https://dev.to/bobbyiliev/serverless-nodejs-url-shortener-app-powered-by-upstash-kafka-and-materialize-3maeテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol