このプロジェクトについて
本プロジェクトはインターネット向けJavaエンジニアのスキルアップを目的とした知識習得リポジトリで、内容は主に中華石杉氏によるもの。高並発アーキテクチャ、分散システム、高可用性アーキテクチャ、マイクロサービスアーキテクチャ、大量データ処理の5つの中核分野をカバーしている。
高並発アーキテクチャでは、メッセージキュー(Kafka、ActiveMQ、RabbitMQ、RocketMQの長所短所、HA、冪等性、信頼性のあるデータ転送などの設計)、検索エンジン(Elasticsearchの分散アーキテクチャ、読み書き原理、大規模データクエリ最適化、本番環境クラスタ構築)、キャッシュ(Redisのスレッドモデル、データ型、有効期限ポリシー、マスター-スレーブレプリケーション、sentinelクラスタ、永続化メカニズム、クラスタモード、キャッシュアバースト・パン・バイの問題と二重書き込み整合性など)、データベース分割・テーブル分割(ミドルウェア選定、動的スケールアウト・スケールイン、グローバルID生成)、読み書き分離および高並発システム全体の設計について深く掘り下げている。
分散システムについては、システム分離、Dubboの動作原理とシリアライズプロトコル、ロードバランシングとクラスターフェイルオーバー、SPI思想、サービスガバナンスとディグレーデーション、インタフェースの冪等性と順序性、RPCフレームワーク設計、CAP定理、分散ロック(RedisとZookeeperの比較)、分散トランザクション、分散セッションなどのトピックを含む。
高可用性アーキテクチャはHystrixを中心に、スレッドプール分離、セマフォメカニズム、リクエストキャッシュ、Fallbackディグレーデーション、サーキットブレーカーの原理、インタフェースのレート制限とタイムアウト保護を解説し、レート制限、サーキットブレーカー(SentinelとHystrixの選定)、ディグレーデーション戦略についても触れている。
マイクロサービスアーキテクチャでは、モノリスからマイクロサービスへの移行、イベント駆動型データ管理、デプロイ戦略、Spring CloudとDubboの違い、Eurekaによるサービスディスカバリなどを扱う。
大量データ処理部分は、大規模データシーンにおけるアルゴリズム実戦に焦点を当て、同一URLの検索、頻出語、人気IP、中央値、TopK問題などよくある套路を解説している。
本プロジェクトはオフラインPDF文書(283ページ)も提供し、Doocsコミュニティのleetcode、ソースコード分析、JVM原理などの関連プロジェクトとも連携している。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.