Apache Pekkoはオープンソースのフレームワークであり、並行、分散、回復力、伸縮性のあるアプリケーションの開発を簡素化するように設計されている。アクターモデルを活用することで、Pekko は並行処理のための高レベルな抽象化を提供し、開発者は低レベルな実装の詳細よりもビジネスロジックに集中できるようになる。Pekkoは、Akka2.6.xのフォークとして誕生し、Akkaのビジネス・ソース・ライセンス採用に先行していた。2年前、PekkoはApache Software Foundationでインキュベーション段階に入り、昨年バージョン1.0をリリースし、最新のリリースは1.0.2である。
現代のコンピュータ・アーキテクチャは、適切に管理されたデータセンター環境であっても、コンポーネントのクラッシュ、メッセージの紛失、変動するネットワーク遅延といった課題をもたらす。Pekkoは、アトミックやロックのような低レベルの並行処理を必要としないマルチスレッド動作を提供することで、これらの課題に対処している。また、透過的なリモート通信機能を提供することで、システムとコンポーネント間の通信を効率化する。これにより、開発者は複雑なネットワーキング・コードを書いて保守する必要がなくなり、需要に応じて動的にスケールするクラスタ化された高可用性アーキテクチャを提供することで、回復力のあるスケーラブルなアプリケーションの作成が可能になる。
Pekkoの基盤となっているアクター・モデルは、正しい並行・並列・分散システムの開発を単純化する抽象化レベルを提供する。Pekkoにおける計算の基本単位であるアクターは、状態、振る舞い、メールボックス、子アクター、そしてアクター参照の背後にあるスーパーバイザ戦略をカプセル化する。この抽象化により、開発者はアクター間のコミュニケーションという観点からコードを考えることができ、大規模な組織でのやりとりに似ている。
アクター・モデルでは、アクターは実行スレッドを転送することなく、互いにメッセージを送信することで通信を行う。このノンブロッキング通信により、アクターは従来のメソッド呼び出しと比較して、同じ時間でより多くのことを達成できる。アクターは、メッセージに反応し、現在のメッセージの処理を終えると実行を返すという点で、オブジェクトに似た振る舞いをする。メッセージを受信すると、アクターは次の3つの基本的な動作を行うことができる。知っているアクターに有限数のメッセージを送信する。有限数の新しいアクターを作成する。次のメッセージに適用する動作を指定する。
下の図は、Pekkoのアクター階層を説明したものである。
Pekkoはモジュール型アプリケーションとして設計されており、拡張性を提供するさまざまなモジュールを包含している。主なコンポーネントは次のとおりである。Pekko Persistence を使用すると、アクターは障害発生時やクラスター内の移行中に回復するためにイベントを永続化でき、イベントソースアプリケーションの開発に抽象化を提供する。 Pekko Streamsモジュールは、バックプレッシャー処理をシームレスに組み込み、他のReactive Streams実装との相互運用性を確保するストリーム処理のソリューションを提供する。connectors modulesには、KafkaやCassandraなどの他のシステムと統合するためのコネクタが含まれている。HttpおよびgRPCモジュールは、HTTP および gRPC機能と、Pekkoクラスターを操作および管理するための一連のさまざまなユーティリティを提供する。