Tweet
AntPickax
AntPickax は、Yahoo! JAPAN がオープンソースとして提供する基礎ライブラリ、コンポーネント、システムのプロダクト群です。
背景
Yahoo! JAPANでは、多くのオープンソースを利用し、また貢献していますが、次のような背景があり、AntPickax の制作を開始しました。
- 自分たちに必要と思われる基本機能が不足している。
- 新しいアーキテクチャーを採用し、運用コストを大幅に削減可能である。
- 性能(主に速度や拡張性)が不足している。
- ライセンス制限があり、自由に導入できない。
作成されたソフトウエアのうち、既存のOSSと比較しても遜色のない性能を持ち、かつ、既存のOSSにない便利な機能を持つソフトウエアを、AntPickax プロダクトとしてオープンソースとして公開しています。
AntPickax プロダクト一覧
AntPickaxは、以下のプロダクトをオープンソースとして公開しています。
K2HDKC DBaaS
K2HDKC DBaaS (Database as a Service for K2HDKC) は、K2HR3を使い、OpenStack および kubernetes と連動して、分散KVSである K2HDKC の環境を構築する Database as a Service です。
K2HR3
K2HR3 (K2Hdkc based Resource and Roles and policy Rules) は、 IaaS(Infrastructure as a Service)に対応した RBAC (Role Based Access Control) を提供するシステムです。
K2HDKC
K2HDKC (K2Hash based Distributed Kvs Cluster) は、K2HASHとCHMPXをベースに作成された高速でオートスケール可能な分散KVSシステムです。
K2HFTFUSE
K2HFTFUSE (K2Hash File Transaction by FUSE based file system) は、高速にファイル、テキスト、ログを転送、中継転送、集約できるFUSEベースのコンポーネントです。
CHMPX
CHMPX (Consistent Hashing Mq inProcess data eXchange) は、クラスタ構築のできる高速な通信ミドルウエアです。
K2HASH
K2HASH は、高速、大容量で他にない多彩な機能を持つ Key Value Store(KVS)ライブラリです。
FULLOCK
FULLOCK (Fast User Level LOCK library) は、K2HASH, CHMPXで利用している高速な排他制御のライブラリです。
AntPickax プロダクト
K2HDKC DBaaS
K2HDKC DBaaS (Database as a Service for K2HDKC) は、K2HR3を使い、OpenStack と連動して、分散KVSである K2HDKC の環境を構築するDatabase as a Serviceです。
K2HDKC DBaaS (Database as a Service for K2HDKC) は、以下の4つの方法を提供します。
-
K2HDKC DBaaS with Trove
Trove(Trove is Database as a Service for OpenStack) プラグインを組み込んだOpenStackを使った DBaaS(Database as a Service)です。
Trove(Trove is Database as a Service for OpenStack)のひとつのデータベース(分散KVS)として、K2HDKC を組み込み、DBaaSを実現します。 -
K2HDKC DBaaS CLI
OpenStackの環境に、Command Line Interface (CLI) を使って、DBaaS(Database as a Service)を実現します。
K2HDKC DBaaS CLI(Command Line Interface) として提供され、Database as a ServiceとしてK2HDKCクラスターの構築およびスケール、データマージなどを自動化します。 -
K2HDKC DBaaS on Kubernetes CLI
kubernetesの環境に、Command Line Interface (CLI) を使って、DBaaS(Database as a Service)を実現します。
K2HDKC DBaaS on kubernetes CLI(Command Line Interface) として提供され、Database as a ServiceとしてK2HDKCクラスターの構築およびスケールなどを自動化します。 -
K2HDKC Helm Chart
kubernetesの環境に、Kubernetes用パッケージマネージャー Helm を使って、DBaaS(Database as a Service)を実現します。
K2HDKC Helm Chart として提供され、Database as a ServiceとしてK2HDKCクラスターの構築およびスケールなどを自動化します。
また、K2HDKC Helm Chart は、RANCHER Helm Chart として RANCHER にリポジトリとして登録し、利用できます。
K2HDKC DBaaS シリーズは、Yahoo! JAPANが公開している K2HDKC、K2HR3、CHMPX 等を使って構築されています。
詳しくは、以下の詳細を参照してください。
-
K2HDKC DBaaS on kubernetes CLI (Command Line Interface) - ソースコード、使い方
-
K2HDKC DBaaS Override Configuration ユーティリティ - ソースコード
K2HR3
K2HR3 (K2Hdkc based Resource and Roles and policy Rules) は、Yahoo! JAPANオリジナルが公開する RBAC (Role Based Access Control) システムのひとつです。
K2HR3 は、RBAC としての機能を、IaaS(Infrastructure as a Service)である OpenStack と連携して動作し、また RBAC を利用する上で便利な +SERVICE機能 を提供します。
K2HR3 は、Yahoo! JAPANが公開している K2HASH、K2HTP_DTOR、CHMPX、K2HDKC 等を使って構築されています。
K2HR3 は、以下のコンポネーントとツールにより構成されています。
-
Web Application - ソースコード、デモンストレーション
-
OpenStack Notification Listener - ソースコード
-
Utilities - ソースコード
-
Container Registration Sidecar - ソースコード
-
K2HR3 Get Resource - ソースコード
K2HDKC
K2HDKC(K2Hash based Distributed Kvs Cluster)は、K2HASH, CHMPXをベースとした高速で自動化された分散KVS(Distributed Key Value Store)です。
K2HDKCは、高可用性でスケーラブルな分散型KVSクラスタリングシステムであり、以下の機能・特徴を備えています。
- 自動マージ (サーバーノード間の自動データ同期)
クラスタ内のノード(サーバー)の障害・復旧に伴うデータの自動マージ機能を提供します。 - 自動スケーリング
クラスタへノード(サーバー)の追加・削除が可能であり、この際のデータの自動マージ機能も提供します。 - ネストされたキー構造
K2HASHの特徴であるキーとサブキーの関連付け機能を分散KVSとして提供します。 - キュー(FIFO/LIFO)
K2HASHの特徴であるキュー機能を分散KVSとして提供します。 - トランザクション
K2HASHの特徴であるデータ更新処理をトランザクションのトリガとして任意の処理ができる機能を提供します。 - 暗号化
K2HASHの特徴である保持するデータの値をキー単位で暗号化機能を分散KVSとして提供します。 - 有効時間設定
K2HASHの特徴であるキーの有効期限機能を分散KVSとして提供します。
K2HDKC nodejs addon
K2HDKC nodejs addon(K2HDKC nodejs addon - K2Hash based Distributed Kvs Cluster)は、K2HDKCのNode.js addonライブラリです。
このライブラリを利用して、K2HDKCのスレーブ側クライアントアプリケーションを、Node.jsベースのJavaScriptで実装することができます。
K2HDKC nodejs addonは、K2HDKCの分散KVSのスレーブ側クライアントに必要なすべての機能・特徴を提供します。
K2HDKC phpext
K2HDKC phpext(K2HDKC PHP拡張 - K2Hash based Distributed Kvs Cluster)は、K2HDKCのPHP拡張ライブラリです。
このライブラリを利用して、K2HDKCのスレーブ側クライアントアプリケーションを、PHPアプリケーションで実装することができます。
K2HDKC phpextは、K2HDKCのすべての機能・特徴を提供します。
K2HDKC java driver
K2HDKC Java ドライバ(K2HDKC Java ドライバ)は、K2HDKCのJavaクライアントライブラリです。
このライブラリを利用して、K2HDKCのスレーブ側クライアントアプリケーションを、Javaで実装することができます。
K2HDKC Java ドライバは、K2HDKCの分散KVSのスレーブ側クライアントに必要なすべての機能・特徴を提供します。
詳しくは、ソースコード、プロジェクトのドキュメント を参照してください。
K2HDKC golang
K2HDKC golang(K2HDKC golang - K2Hash based Distributed Kvs Cluster)は、K2HDKCのGo言語クライアントライブラリです。
このライブラリを利用して、K2HDKCのスレーブ側クライアントアプリケーションを、Go言語で実装できます。
K2HDKC golangは、K2HDKCの分散KVSのスレーブ側クライアントに必要なすべての機能・特徴を提供します。
K2HDKC python
K2HDKC python(K2HDKC python - K2Hash based Distributed Kvs Cluster)は、K2HDKCのPython言語クライアントライブラリです。
このライブラリを利用して、K2HDKCのスレーブ側クライアントアプリケーションを、Python言語で実装できます。
K2HDKC pythonは、K2HDKCの分散KVSのスレーブ側クライアントに必要なすべての機能・特徴を提供します。
K2HFTFUSE
K2HFTFUSE(k2hash File Transaction by FUSE based file system)とは、FUSE(Filesystem in Userspace) によるユーザースペースでのマウント機能を利用したファイル/メッセージ転送システムです。
K2HFTFUSEは、 確実 で 高速 なファイル/メッセージ転送を低コストで実現するために開発されたシステムです。 K2HFTFUSEは、仮想ファイルシステムを提供し、マウントしたディレクトリにファイルを書き込むだけで利用でき、ログファイルやデータなどを集約できます。 既存プログラムの出力ファイルのディレクトリをK2HFTFUSEでマウントするだけで、既存プログラムの変更なしにファイル/メッセージ転送ができます。
- アプリケーションへの追加依存ライブラリはゼロ
新たにK2HFTFUSEを使う場合、アプリケーションへのライブラリの依存関係が増えることはありません。OSレベルでサポートされた標準ライブラリを使うためです。 - 高速で確実なデータ転送
K2HASHとCHMPXの機能を活用し、高速で確実なデータ転送が可能です。 - 多彩なデータフォーマットを転送可能
テキストだけではなく、バイナリデータ、メッセージ(1データを1メッセージとする)の転送が可能です。 - フィルタリング
転送データに対して、任意の加工処理が可能です。 - トリガー
転送データをトリガーにして、任意の処理を実行可能です。
CHMPX
CHMPX(Consistent Hashing Mq inProcess data eXchange)は、ネットワークをまたぐプロセス間におけるバイナリ通信を行うための通信ミドルウエアです。
- 基本機能
CHMPXは、サーバープログラムとクライアントプログラム間の通信を受け持ち、各プログラムからネットワーク通信接続を隠蔽(いんぺい)します。 - クラスタ/多重化/オートスケール
CHMPXは、クラスタ構成を作ることができ、多重化による障害発生時の耐性があり、オートスケール可能な通信ミドルウエアです。 - 通信データ
通信するデータ形式は自由であり、バイナリデータ、大容量の通信ができます。 - 通信暗号化
SSLでの通信をサポートしています。 - 通信多重化・同時並列処理
CHMPXのサーバーとスレーブ間の通信は、全て多重化可能であり、並列通信が可能です。 - 通信データのキューイング
送受信データのキューイングがなされていますので、ある程度の送受信遅延、高負荷にも対応可能です。 - マルチプロセス・マルチスレッド対応
マルチプロセス、マルチスレッドに完全対応できています。
CHMPX nodejs addon
CHMPX nodejs addon(CHMPX nodejs addon - Consistent Hashing Mq inProcess data eXchange)は、CHMPXのNode.js addonライブラリです。
このライブラリを利用して、CHMPXを使った通信プログラムのサーバ側、スレーブ側の両方をNode.jsベースのJavaScriptのプログラムで実装できます。
CHMPX nodejs addonは、CHMPXのすべての機能・特徴を提供します。
CHMPX phpext
CHMPX phpext(CHMPX PHP拡張 - Consistent Hashing Mq inProcess data eXchange)は、CHMPXのPHP拡張ライブラリです。
このライブラリを利用して、CHMPX を使った通信プログラムのサーバ側、スレーブ側の両方をPHPアプリケーションから操作できます。
CHMPX phpextは、CHMPXのすべての機能・特徴を提供します。
K2HASH
K2HASHは、NoSQL Key Value Store(KVS)libraryです。
K2HASHは、基本的なKVSの機能と、以下に示す独自の特徴を備えています。
- 高速
データへのアクセス(リード、ライト)が高速です。 - マルチスレッド/マルチプロセス対応
マルチプロセス、マルチスレッドに完全対応できています。 - バイナリデータ
キー(Key)、値(Value)は、バイナリ(任意の値)を取り扱いでき、可変長のデータとして取り扱いことができます。 - 自動サイズ拡張/低フラグメント
ページングを利用してフラグメントを最低限にします。
動的にデータ領域(データ、Hashテーブル)の拡張をします。 - データ保管/マッピングタイプ
K2HASHは、オンメモリ(揮発性)、永続ファイル(一時ファイル含む)でデータを保管できます。
永続ファイルの場合、ファイル全体(高速を維持して永続化したデータ)、インデックスのみ(大容量)のマッピング方法を提供します。 - キーとサブキー
キーに対して値を保持するKVSの機能に、キーに対してサブキー(他のキー)をひも付けることができます。 - トランザクション
データ更新処理をトランザクションのトリガとして、独自の処理を呼び出せます。 - アーカイブ機能
データ更新処理を組み込みトランザクション処理として、アーカイブファイルとして出力できます。 - キュー(FIFO/LIFO)
K2HASHのデータとして、キュー(FIFO/LIFO)を構成でき、Push/Popができます。 - 属性
キーに対して属性(組み込み、カスタマイズ)を設定できます。 - 暗号化
保持するデータの値をキー単位で暗号化できます。 - 履歴機能
K2HASHに保管するキーの更新ごとに、過去の値を履歴として残せます(バージョニング)。 - 有効時間設定
キーの有効期限を属性として設定できる機能です。
K2HASH nodejs addon
K2HASH nodejs addon(K2HASH nodejs addon - NoSQL Key Value Store(KVS) nodejs library)は、K2HASHのNode.js addonライブラリです。
このライブラリを利用して、K2HASHをNode.jsベースのJavaScriptのプログラムから操作できます。
K2HASH nodejs addonは、K2HASHのすべての機能・特徴を提供します。
K2HASH java driver
K2HASH Java ドライバ(K2HASH Java ドライバ)は、K2HASHのJavaクライアントライブラリです。
このライブラリを利用して、K2HASHのスレーブ側クライアントアプリケーションを、Javaで実装することができます。
K2HASH Java ドライバは、K2HASHの分散KVSのスレーブ側クライアントに必要なすべての機能・特徴を提供します。
詳しくは、ソースコード、プロジェクトのドキュメント を参照してください。
K2HASH golang
K2HASH golang(K2HASH golang - NoSQL Key Value Store(KVS) Go library)は、K2HASHのGo言語クライアントライブラリです。
このライブラリを利用して、K2HASHを操作するプログラムをGo言語で実装できます。
K2HASH golangは、K2HASHのすべての機能・特徴を提供します。
K2HASH phpext
K2HASH phpext(K2HASH PHP拡張 - NoSQL Key Value Store(KVS))は、K2HASHのPHP拡張ライブラリです。
このライブラリを利用して、K2HASHをPHPアプリケーションから操作できます。
K2HASH phpextは、K2HASHのすべての機能・特徴を提供します。
K2HASH python
K2HASH python(K2HASH python - NoSQL Key Value Store(KVS) Pythonライブラリ)は、K2HASHのPython言語クライアントライブラリです。
このライブラリを利用して、K2HASHを操作するプログラムをPython言語で実装できます。
K2HASH pythonは、K2HASHのすべての機能・特徴を提供します。
K2HTP_DTOR
K2HTP_DTOR(k2hash Transaction Plugin Distributed Transaction Of Repeater)は、K2HASH のトランザクションデータを CHMPX を利用して他ホストへ転送を行い、K2HASHデータの複製を容易に実現します。
K2HASHライブラリに対応したYahoo! JAPANの提供する標準トランザクションプラグインであり、トランザクションをトリガとして独自処理のための一般的な手段を提供します。
K2HTP_MDTOR
K2HTP_MDTOR(k2hash Transaction Plugin Multiple Distributed Transaction Of R epeater)は、CHMPXを使用してK2HASHのトランザクションデータを別のホストに転送することによって、K2HASHデータを簡単に複製します。
複数のK2HASHトランザクションプラグインをロードする K2HTP_MDTOR の主な目的は、それらに定義されている任意の関数を呼び出すことです。 各関数を呼び出すとき、K2HTP_MDTOR はK2HASHトランザクションログを関数のパラメータとして渡します。 一般的なK2HASHトランザクションプラグインは他のものをロードしません。 複数のK2HASHトランザクションプラグインを使用したい場合は、K2HTP_MDTORを使用することをお勧めします。
FULLOCK
FULLOCK(Fast User Level LOCK library)は、マルチプロセス、マルチスレッドから安全で、高速なロック機能を提供する低レベルのロックライブラリです。
このライブラリは、K2HASH, CHMPXなど他の AntPickax プロダクトでも利用されています。