84 lines
1.2 KiB
Markdown
84 lines
1.2 KiB
Markdown
# bserv
|
|
|
|
*A Boost Based High Performance C++ HTTP JSON Server.*
|
|
|
|
|
|
## Dependencies
|
|
|
|
- [Boost 1.75.0](https://www.boost.org/)
|
|
- [PostgreSQL 13.2](https://www.postgresql.org/)
|
|
- [Libpqxx 7.3.1](https://github.com/jtv/libpqxx)
|
|
- [Crypto++ 8.4.0](https://cryptopp.com/)
|
|
- CMake
|
|
|
|
|
|
## Quick Start
|
|
|
|
### Database
|
|
|
|
You can import the sample database:
|
|
|
|
- Create the database in `psql`:
|
|
```
|
|
create database bserv;
|
|
```
|
|
|
|
- Create the table in the `shell` using a sample script:
|
|
```
|
|
psql bserv < db.sql
|
|
```
|
|
|
|
|
|
### Server & Routing
|
|
|
|
Configure server & routing in [main.cpp](main.cpp).
|
|
|
|
|
|
### Handlers
|
|
|
|
Write the handlers in [handlers.hpp](handlers.hpp)
|
|
|
|
|
|
## Build
|
|
|
|
In the `shell`:
|
|
|
|
- Create a directory `build`, and enter it:
|
|
```
|
|
mkdir build
|
|
cd build
|
|
```
|
|
- Run:
|
|
```
|
|
cmake ..
|
|
```
|
|
- Build:
|
|
```
|
|
cmake --build .
|
|
```
|
|
|
|
|
|
## Running
|
|
|
|
In `build`, run in `shell`:
|
|
```
|
|
./bserv
|
|
```
|
|
|
|
|
|
## Performance
|
|
|
|
This test is performed by Jmeter. The unit for throughput is Transaction per second.
|
|
|
|
|URL|bserv|
|
|
|:-:|:-:|
|
|
|`/login`|139.55|
|
|
|`/find/<user>`|958.77|
|
|
|
|
For `/login`, we intentionally slow down the attacker's speed.
|
|
|
|
|
|
### Computer Hardware:
|
|
- Intel Core i9-9900K x 4
|
|
- 16GB RAM
|