AntPickax

AntPickax は、Yahoo! JAPAN がオープンソースとして提供する基礎ライブラリ、コンポーネント、システムのプロダクト群です。

背景

Yahoo! JAPANでは、多くのオープンソースを利用し、また貢献していますが、次のような背景があり、AntPickax の制作を開始しました。

作成されたソフトウエアのうち、既存のOSSと比較しても遜色のない性能を持ち、かつ、既存のOSSにない便利な機能を持つソフトウエアを、AntPickax プロダクトとしてオープンソースとして公開しています。

AntPickax プロダクト一覧

AntPickax Products

AntPickaxは、以下のプロダクトをオープンソースとして公開しています。

K2HDKC DBaaS

K2HDKC DBaaS (Database as a Service for K2HDKC) は、K2HR3を使い、OpenStack と連動して、分散KVSである K2HDKC の環境を構築するDatabase as a Serviceです。

K2HR3

IaaS(Infrastructure as a Service)に対応した RBAC (Role Based Access Control) を提供するシステムです。

K2HDKC

K2HASHCHMPXをベースに作成された高速でオートスケール可能な分散KVSシステムです。

K2HFTFUSE

高速にファイル、テキスト、ログを転送、中継転送、集約できるFUSEベースのコンポーネントです。

CHMPX

クラスタ構築のできる高速な通信ミドルウエアです。

K2HASH

高速、大容量で他にない多彩な機能を持つ Key Value Store(KVS)ライブラリです。

FULLOCK

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) は、2つの方法を提供します。

一つは、OpenStack のプロダクトである Trove(Trove is Database as a Service for OpenStack) を使ったDBaaS(Database as a Service)です。
これは、Trove(Trove is Database as a Service for OpenStack)のひとつのデータベース(分散KVS)として、K2HDKC を組み込み、DBaaSを実現します。

もう一つは、OpenStackの環境を持っていることを前提とし、K2HDKC DBaaS CLI(Command Line Interface)を使って、DBaaS(Database as a Service)が実現できます。 共に、Database as a Serviceとして、K2HDKCクラスターの構築およびスケール、データマージなどを自動化します。

K2HDKC DBaaS は、Troveおよび、Yahoo! JAPANが公開している k2hdkck2hr3chmpx 等を使って構築されています。

詳しくは、以下の詳細を参照してください。

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が公開している k2hashk2htp_dtorchmpxk2hdkc 等を使って構築されています。 k2hr3 は、以下のコンポネーントにより構成されています。

詳しくは、以下の詳細を参照してください。

k2hdkc

k2hdkcK2Hash based Distributed Kvs Cluster)は、k2hash, chmpxをベースとした高速で自動化された分散KVS(Distributed Key Value Store)です。

k2hdkcは、高可用性でスケーラブルな分散型KVSクラスタリングシステムであり、以下の機能・特徴を備えています。

詳しくは、ソースコードドキュメント を参照してください。

k2hdkc nodejs addon

k2hdkc nodejs addonK2HDKC nodejs addon - k2hash based distributed kvs cluster)は、k2hdkcのNode.js addonライブラリです。
このライブラリを利用して、k2hdkcのスレーブ側クライアントアプリケーションを、Node.jsベースのJavaScriptで実装することができます。
k2hdkc nodejs addonは、k2hdkcの分散KVSのスレーブ側クライアントに必要なすべての機能・特徴を提供します。

詳しくは、ソースコードドキュメント を参照してください。

java driver for k2hdkc

K2HDKC Java ドライバK2HDKC Java ドライバ)は、k2hdkcのJavaクライアントライブラリです。
このライブラリを利用して、k2hdkcのスレーブ側クライアントアプリケーションを、Javaで実装することができます。
k2hdkc Java ドライバは、k2hdkcの分散KVSのスレーブ側クライアントに必要なすべての機能・特徴を提供します。

詳しくは、ソースコードプロジェクトのドキュメント を参照してください。

k2hdkc golang

k2hdkc golangK2HDKC golang - k2hash based distributed kvs cluster)は、k2hdkcのGo言語クライアントライブラリです。
このライブラリを利用して、k2hdkcのスレーブ側クライアントアプリケーションを、Go言語で実装できます。
k2hdkc golangは、k2hdkcの分散KVSのスレーブ側クライアントに必要なすべての機能・特徴を提供します。

詳しくは、ソースコードドキュメント を参照してください。

k2hftfuse

k2hftfusek2hash File Transaction by FUSE based file system)とは、FUSE(Filesystem in Userspace) によるユーザースペースでのマウント機能を利用したファイル/メッセージ転送システムです。

k2hftfuseは、 確実高速 なファイル/メッセージ転送を低コストで実現するために開発されたシステムです。 k2hftfuseは、仮想ファイルシステムを提供し、マウントしたディレクトリにファイルを書き込むだけで利用でき、ログファイルやデータなどを集約できます。 既存プログラムの出力ファイルのディレクトリをk2hftfuseでマウントするだけで、既存プログラムの変更なしにファイル/メッセージ転送ができます。

詳しくは、ソースコードドキュメント を参照してください。

chmpx

chmpxConsistent Hashing Mq inProcess data eXchange)は、ネットワークをまたぐプロセス間におけるバイナリ通信を行うための通信ミドルウエアです。

詳しくは、ソースコードドキュメント を参照してください。

chmpx nodejs addon

chmpx nodejs addonCHMPX nodejs addon - Consistent Hashing Mq inProcess data eXchange)は、chmpxのNode.js addonライブラリです。
このライブラリを利用して、chmpxを使った通信プログラムのサーバ側、スレーブ側の両方をNode.jsベースのJavaScriptのプログラムで実装できます。
chmpx nodejs addonは、chmpxのすべての機能・特徴を提供します。

詳しくは、ソースコードドキュメント を参照してください。

k2hash

k2hashは、NoSQL Key Value Store(KVS)libraryです。
k2hashは、基本的なKVSの機能と、以下に示す独自の特徴を備えています。

詳しくは、ソースコードドキュメント を参照してください。

k2hash nodejs addon

k2hash nodejs addonK2HASH nodejs addon - NoSQL Key Value Store(KVS) nodejs library)は、k2hashのNode.js addonライブラリです。
このライブラリを利用して、k2hashをNode.jsベースのJavaScriptのプログラムから操作できます。
k2hash nodejs addonは、k2hashのすべての機能・特徴を提供します。

詳しくは、ソースコードドキュメント を参照してください。

k2hash golang

k2hash golangK2HASH golang - NoSQL Key Value Store(KVS) nodejs library)は、k2hashのGo言語クライアントライブラリです。
このライブラリを利用して、k2hashを操作するプログラムをGo言語で実装できます。
k2hash golangは、k2hashのすべての機能・特徴を提供します。

詳しくは、ソースコードドキュメント を参照してください。

k2htp_dtor

k2htp_dtork2hash Transaction Plugin Distributed Transaction Of Repeater)は、k2hash のトランザクションデータを chmpx を利用して他ホストへ転送を行い、k2hashデータの複製を容易に実現します。
k2hashライブラリに対応したYahoo! JAPANの提供する標準トランザクションプラグインであり、トランザクションをトリガとして独自処理のための一般的な手段を提供します。

詳しくは、ソースコードドキュメント を参照してください。

k2htp_mdtor

k2htp_mdtork2hash Transaction Plugin Multiple Distributed Transaction Of R epeater)は、chmpxを使用してk2hashのトランザクションデータを別のホストに転送することによって、k2hashデータを簡単に複製します。

複数のk2hashトランザクションプラグインをロードするk2htp_mdtorの主な目的は、それらに定義されている任意の関数を呼び出すことです。 各関数を呼び出すとき、k2htp_mdtorはk2hashトランザクションログを関数のパラメータとして渡します。 一般的なk2hashトランザクションプラグインは他のものをロードしません。 複数のk2hashトランザクションプラグインを使用したい場合は、k2htp_mdtorを使用することをお勧めします。

詳しくは、ソースコードドキュメント を参照してください。

fullock

fullockFast User Level LOCK library)は、マルチプロセス、マルチスレッドから安全で、高速なロック機能を提供する低レベルのロックライブラリです。
このライブラリは、k2hash, chmpxなど他の AntPickax プロダクトでも利用されています。

詳しくは、ソースコードドキュメント を参照してください。