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)로 인해 전체 시스템을 부트 스트랩하는 데 시간이 더 걸릴 수 있습니다.
이 repo는 executor 폴더에서 비 SGX 버전과 sgx-executor 폴더에 SGX 버전을 제공합니다. 비 SGX 버전은 Desearch에 대한 확장을 구축하려는 경우 더 쉽게 디버깅하는 데 도움이됩니다. SGX 버전과 동일한 폴더 구조를 사용합니다. SGX 버전 만 ORAM 기반 쿼리를 포함합니다.
Ubuntu 20.04에 따라 Desearch Executors 건물은 다음과 같이 설치해야합니다.
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 집행자는 전체 검색 파이프 라인으로 구성됩니다. 이 릴리스는 하나의 실행 파일 내의 모든 검색 역할을 통합합니다. 귀하는 원하는대로 더 많은 집행자를 시작하려면 executor/start.sh 자유롭게 수정할 수 있습니다.
cd executor
make all
bash ./start.sh클라이언트는 Desearch의 항목 역할을하는 웹 서버입니다.
cd client
make all
./client 그런 다음 client/index.html 두 번 클릭하거나 멋진 웹 엔트리 client/WebUI/index.html 사용하십시오.


WAN 설정으로 확장하려면 몇 가지 네트워크 구성을 수정해야합니다.
config.hpp : KANBAN_ADDR 글로벌 퍼블릭 IP로 변경하십시오executor/start.sh : 고객이 도달 할 수있는 공개 IP 주소로 더 쿼리 IP 주소를 변경Executor/Readme.md를 참조하십시오
mulanpsl-2.0 (여기 참조)