Desearchは、分散型の検索エンジンに向けた実験システムです。スケーラビリティとフォールトトレランスを実現するために、Desearchは、ステートレストラストネットワークとステートフルクラウドストアを使用して、計算とストレージを切り離します。ネットワークは目撃者によって追跡され、店舗はブロックチェーンによって規制されています。 Desearchの現在の実装では、Intel SGXを信頼できるハードウェアとして使用し、Redisをストアとして使用しています。
警告:このレポは、アカデミックな概念のプロトタイプをホストしており、慎重なコードレビューを受けていません。
詳細については、OSDI'21論文を参照してください。
@inproceedings{li2021desearch,
author = {Mingyu Li and Jinhao Zhu and Tianxu Zhang and Cheng Tan and Yubin Xia and Sebastian Angel and Haibo Chen},
title = {Bringing Decentralized Search to Decentralized Services},
booktitle = {15th {USENIX} Symposium on Operating Systems Design and Implementation, {OSDI} 2021},
pages = {331--347},
publisher = {{USENIX} Association},
year = {2021},
}
ハードウェア要件:SGX対応のデスクトップまたはSGX対応クラウドマシン。マシンがSGXをサポートするかどうかを確認するには、Intel SGXハードウェアを参照してください。
スケーラブルなSGXをサポートせずにローカルマシンでいくつかのSGXノードを実行したい場合は、暗号化されたメモリ(通常はSGXV1で128MB/256MB)のため、システム全体をブートストラップするのに時間がかかる場合があることに注意してください。
このリポジトリは、 executorフォルダーに非SGXバージョンと、 sgx-executorフォルダーにSGXバージョンを提供します。非SGXバージョンは、Desearchに拡張機能を構築する場合に、より簡単にデバッグするのに役立ちます。 SGXバージョンと同じフォルダー構造を使用します。 SGXバージョンのみにOramベースのクエリエが含まれていることに注意してください。
Ubuntu 20.04では、建物のDesearchエグゼクティブには、次の懸念がインストールされています。
Redis、Hiredis、およびRedis ++の正しいバージョンについては、 depsフォルダーを参照できます。
apt install -y libboost-all-dev
cd deps
tar zxf redis-6.2.6.tar.gz
tar zxf redis-plus-plus-1.2.3.tar.gz
pushd redis-6.2.6/deps/hiredis/
make -j $( nproc ) && make install
popd
pushd redis-plus-plus-1.2.3
mkdir build && cd build && cmake ..
make -j $( nproc ) && make install
popdKanbanは、比較的安価なクラウドストレージを活用する変更されていないRedisです。
Redisサーバーを開始するだけです。
cd Kanban
cd deps && make hdr_histogram linenoise jemalloc
cd - && make all
./src/redis-server ./redis.conf Kanbanからすべての州をクリアするには、 ./src/redis-cli FLUSHALLを発行できます。
マネージャーは、カンバンが改ざんに抵抗する特別な執行者です。
cd manager
make all
./manager執行者は、検索パイプライン全体で構成されています。このリリースは、1つの実行可能ファイル内のすべての検索ロールを統合します。 executor/start.sh自由に変更して、好きなようにより多くの執行者を立ち上げることができます。
cd executor
make all
bash ./start.shクライアントは、Desearchのエントリとして機能するWebサーバーです。
cd client
make all
./client次に、 client/index.htmlダブルクリックするか、ファンシーWebエントリclient/WebUI/index.htmlを使用します。


WANセットアップに拡張するには、いくつかのネットワーク構成を変更する必要があります。
config.hpp : KANBAN_ADDRグローバルパブリックIPに変更しますexecutor/start.sh :クライアントが到達できる公共のアドレスにQuerier IPアドレスを変更するexecutor/readme.mdを参照してください
mulanpsl-2.0(こちらを参照)