Aegean
The source code for the implementation and evaluation of the Aegean replication framework
Install / Use
/learn @GLaDOS-Michigan/AegeanREADME
Aegean
The source code and scripts for the implementation and evaluation of the Aegean replication framework.
Implementation Source Code
Aegean source code is under src directory. Two important folder under this directory are BFT and Applications.
BFTfolder mainly contains replication infrastructure. Here is explanation of some subfolders underBFT:
|subfolder name | description
|-------------- |------------
| exec | implements executor which executes request in sequential and parallel mode
| filter | implements the module which authenticates incoming client requests
| order | module which orders the client requests before the execution of requests in sequential mode
| verifier | implements verifier process which decides the resulting state after execution in parallel mode
Applicationsdirectory mainly contains experimental applications which runs on top of replication infrastructure. For example,Benchmarkfolder contains implementation of microbenchmarks and folder prefixed withtpcwcontains implementation ofTPC-Wbenchmark such astpcw_webserver(web servers in TPC-W benchmark).
Evaluation Scripts
Experiments are run with the scripts under experiments directory. Here are some scripts with their functions:
|script name | description
|-------------- |------------
| start_client.py | starts requested number of clients which will send requests to middle service for microbenchmarks
| start_sequential_middle.py | starts executor, order and filter nodes to start a replicated middle service in sequential mode for microbenchmarks
| start_sequential_backend.py | starts executor, order and filter nodes to start a replicated backend service in sequential mode for microbenchmarks
| start_middle.py | starts executor, verifier and filter nodes to start a replicated middle service in parallel mode for microbenchmarks
| start_backend.py | starts executor, verifier and filter nodes to start a replicated backend service in parallel mode for microbenchmarks
| start_tpcw_client.py | starts requested number of clients which will send requests to tpc-w web server for TPC-W benchmark
| start_sequential_tpcw_server.py | starts a tpc-w web server in sequential mode which includes starting executor, order and filter nodes
| start_sequential_tpcw_db.py | starts a tpc-w database server in sequential mode which includes starting executor, order and filter nodes
| start_tpcw_server.py | starts a tpc-w web server in parallel mode which includes starting executor, verifier and filter nodes
| start_tpcw_db.py | starts a tpc-w database server in parallel mode which includes starting executor, order and filter node
Other high-level scripts which calls the scripts described above are used to initiate experiments. These high-level scripts also checks for completion and calculate the throughput. Here are some high level scripts with their usage and explanations:
|script and example usage | effect of example usage |-------------------------- | ---------------- |./pipelinedSequential_super.py --mode ps 1 4 seqMicro | runs microbenchmarks in pipelined sequential mode and calculates the performance. Number of clients for this experiments starts from 1 and goes until there is no throughput increase or number of clients is greater than 4 |./super_script_tpcw.py --mode p 128 1024 tpcwTest | runs tpc-w benchmark in parallel mode and calculates the performance. Number of clients for this experiments starts from 128 and goes until there is no throughput increase or number of clients is greater than 1024
Note: Size of the requests(small, medium,large) for microbenchmarks in start_client.py with REQUEST_SIZE variable (100, 1000, 10000).
Other than scripts, this directory also contains configuration files for the nodes will be started. Following are the list of files and their explanations:
|config file | description
|------------|------------
|clients | IP or alias of machines where client process will be run on
|filters | IP or alias of machines where middle service filter nodes will be run on
|orders | IP or alias of machines where middle service order nodes will be run on for sequential mode
|verifiers | IP or alias of machines where middle service verifier nodes will be run on for parallel mode
|execs | IP or alias of machines where middle service executor nodes will be run
|clients.backend| IP or alias of clients of backend (so should be same IPs with execs file)
|filters.backend | IP or alias of machines where backend service filter nodes will be run on
|orders.backend | IP or alias of machines where backend service order nodes will be run on for sequential mode
|verifiers.backend | IP or alias of machines where backend service verifier nodes will be run on for parallel mode
|execs.backend | IP or alias of machines where backend service executor nodes will be run on
Note: The configuration defined in these files should be converted to properties files such as test.properties
and test.properties.backend which will be consumed by the processes while starting. The script calledconfig.sh can be used to ease this conversion.
This script asks some other input regarding mode and number of tolerated failures etc. and reads the config files explained above
to create properties files which define the setting for Java processes.
Related Skills
node-connect
350.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
109.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
350.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
350.1kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
