JavaScript: 単純なコールバックから Kafka とイベント駆動型アーキテクチャの複雑な世界への私の旅。 私は当初、ブラウザと Node.js の両方で console.log
を使用できるため、フルスタック開発者になれると信じていましたが、その後その考えは修正されました。 私の経験には、React、Node.js、Sequelize、および async/await のトライアルが含まれます。しかし、イベント駆動型アーキテクチャでは真の課題が到来しました。
好奇心 (そしてもっとデバッグしたいという自虐的な欲求!) に駆られて、私は飛び込んでみました。
?私とつながってください
- ウェブサイト: elvissautet.com – 私のプロジェクトとポートフォリオを探索してください!
- LinkedIn: linkedin.com/in/elvissautet
- Twitter: twitter.com/elvisautte
- Facebook ページ: fb.me/elvissautet
協力して素晴らしいものを作りましょう! ?
?従来のシステムの限界
私の過去のアプリケーションは、ユーザーのアクション、フロントエンドのリクエスト、バックエンドの処理、データベースの対話、そして (できれば) 成功したレスポンスという、標準的なリクエストとレスポンスのパターンにほぼ従っていました。 理論的には単純です。 ただし、スケーリングによって次のような欠陥が明らかになりました。
- 大量のリクエスト: 1 秒あたり数千のリクエストをどのように処理しますか?
- タスクの所要時間は変動します: 一部のタスクに他のタスクよりも大幅に時間がかかる場合はどうなりますか?
- 同時操作: 支払い、通知、ログ記録、およびシステム全体の安定性を同時に管理するにはどうすればよいですか?
イベント駆動型システムはソリューションを提供します。 逐次処理の代わりに、独立したコンポーネントがイベントを通じて通信できるようになります。 賑やかなレストランのキッチンを思い浮かべてください。誰もが自分の役割を理解し、注文 (イベント) が効率的に流れる、組織化されたカオスです。
⚡ イベント、キュー、Pub/Sub
オンラインの自動車マーケットプレイスを考えてみましょう。 ユーザーが車をリストすると、データベースの更新、通知、検索インデックスの変更を処理するバックエンドの代わりに、car.posted
イベントが発行されます。 その後、さまざまなシステム部分がこのイベントに非同期的に反応します。
?メッセージキュー (BullMQ)
- 遅延処理に最適です。
- 例: 高解像度画像のアップロード。 BullMQ は、即時の処理とユーザーの待ち時間の代わりに、画像圧縮タスクをキューに入れます。後でワーカーが画像を処理し、リストを更新します。
?イベントストリーミング (Apache Kafka)
- 毎秒数百万のイベントを処理するために不可欠です。
- 例: ユーザーのクリック、検索、購入の追跡。 リアルタイムのデータベース書き込みの代わりに、このデータを Kafka にストリーミングして、効率的な処理とストレージを実現します。
? Pub/Sub (Redis、RabbitMQ、Kafka)
- リアルタイムの更新に最適です。
- 例: 購入者と販売者のチャット。 サーバーを定期的にポーリングする代わりに、チャット システムは新しいメッセージ イベントをリッスンし、即座に更新します。
?スケーラビリティと復元力
イベント駆動型システムは本質的に拡張性に優れています。 ストレスがかかると障害が発生しやすいモノリシック システムの代わりに、モジュール式でフォールト トレラントな分散型アーキテクチャが得られます。 さらに処理が必要ですか?労働者をさらに追加してください!
ウーバーはその代表的な例です。 配車リクエストにより、ドライバーのマッチング、運賃計算、位置情報の更新、通知などの多数のイベントがトリガーされます。 イベント駆動型アーキテクチャがなければ、Uber のシステムは崩壊する可能性があります。
?イベント駆動型システムによるスケーリング
<code>graph LR A[User Action] -->|Emit Event| B[Event Bus] B -->|Queue Job| C[Worker 1] B -->|Queue Job| D[Worker 2] B -->|Queue Job| E[Worker 3] C -->|Processes Task| F[Database Update] D -->|Processes Task| G[Send Notification] E -->|Processes Task| H[Log Activity]</code>
?私のモチベーション
主に好奇心です。 従来の Web アプリは機能しますが、スケーリングの制限にぶつかります。 長い API リクエストとデータベースのボトルネックとの絶え間ない格闘により、より良いアプローチを模索するようになりました。 イベント駆動型のアーキテクチャは、JavaScript の超大国であるように感じられ、より高速で復元力が高く、将来性のあるシステムを作成できます。
私の旅には、Kafka、BullMQ、WebSocket、そしてリクエストベースからイベントベースの考え方への移行が含まれています。 難しいですが、やりがいがあります。
バックエンドの制限にうんざりしている場合は、イベント駆動型アーキテクチャを検討してください。 注意してください – 中毒性があります!
? 次: 実践的な Node.js イベント駆動型システムの実装。乞うご期待!
以上が私の JavaScript の旅: コールバックから Kafka まで – イベント駆動型システムのカオスを受け入れるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

はい、JavaScriptのエンジンコアはCで記述されています。1)C言語は、JavaScriptエンジンの開発に適した効率的なパフォーマンスと基礎となる制御を提供します。 2)V8エンジンを例にとると、そのコアはCで記述され、Cの効率とオブジェクト指向の特性を組み合わせて書かれています。3)JavaScriptエンジンの作業原理には、解析、コンパイル、実行が含まれ、C言語はこれらのプロセスで重要な役割を果たします。

JavaScriptは、Webページのインタラクティブ性とダイナミズムを向上させるため、現代のWebサイトの中心にあります。 1)ページを更新せずにコンテンツを変更できます。2)Domapiを介してWebページを操作する、3)アニメーションやドラッグアンドドロップなどの複雑なインタラクティブ効果、4)ユーザーエクスペリエンスを改善するためのパフォーマンスとベストプラクティスを最適化します。

CおよびJavaScriptは、WebAssemblyを介して相互運用性を実現します。 1)CコードはWebAssemblyモジュールにコンパイルされ、JavaScript環境に導入され、コンピューティングパワーが強化されます。 2)ゲーム開発では、Cは物理エンジンとグラフィックスレンダリングを処理し、JavaScriptはゲームロジックとユーザーインターフェイスを担当します。

JavaScriptは、Webサイト、モバイルアプリケーション、デスクトップアプリケーション、サーバー側のプログラミングで広く使用されています。 1)Webサイト開発では、JavaScriptはHTMLおよびCSSと一緒にDOMを運用して、JQueryやReactなどのフレームワークをサポートします。 2)ReactNativeおよびIonicを通じて、JavaScriptはクロスプラットフォームモバイルアプリケーションを開発するために使用されます。 3)電子フレームワークにより、JavaScriptはデスクトップアプリケーションを構築できます。 4)node.jsを使用すると、JavaScriptがサーバー側で実行され、高い並行リクエストをサポートします。

Pythonはデータサイエンスと自動化により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、データ処理とモデリングのためにNumpyやPandasなどのライブラリを使用して、データサイエンスと機械学習でうまく機能します。 2。Pythonは、自動化とスクリプトにおいて簡潔で効率的です。 3. JavaScriptはフロントエンド開発に不可欠であり、動的なWebページと単一ページアプリケーションの構築に使用されます。 4. JavaScriptは、node.jsを通じてバックエンド開発において役割を果たし、フルスタック開発をサポートします。

CとCは、主に通訳者とJITコンパイラを実装するために使用されるJavaScriptエンジンで重要な役割を果たします。 1)cは、JavaScriptソースコードを解析し、抽象的な構文ツリーを生成するために使用されます。 2)Cは、Bytecodeの生成と実行を担当します。 3)Cは、JITコンパイラを実装し、実行時にホットスポットコードを最適化およびコンパイルし、JavaScriptの実行効率を大幅に改善します。

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









