Skip to content

Commit

Permalink
add httpserver
Browse files Browse the repository at this point in the history
  • Loading branch information
LLiuJJ committed Aug 26, 2024
1 parent 27fa0f5 commit da83223
Show file tree
Hide file tree
Showing 12 changed files with 11,764 additions and 23 deletions.
12 changes: 6 additions & 6 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -48,15 +48,15 @@ rm-net:
run-demo:
@if [ ! -d "data" ]; then mkdir data; fi;
@if [ ! -d "logs" ]; then mkdir logs; fi;
docker run --name kvserver-node1 --network mytestnetwork --ip 172.18.0.10 --privileged=true -d --rm -v $(realpath .):/eraft eraft/eraftkv:$(IMAGE_VERSION) /eraft/build/example/eraftkv -svr_id 0 -kv_db_path /eraft/data/kv_db0 -log_db_path /eraft/data/log_db0 -snap_db_path /eraft/data/snap_db0 -peer_addrs 172.18.0.10:8088,172.18.0.11:8089,172.18.0.12:8090 -log_file_path /eraft/logs/eraftkv-1.log -monitor_addrs 0.0.0.0:12306
docker run --name kvserver-node1 --network mytestnetwork -p 18080:18080 --ip 172.18.0.10 --privileged=true -d --rm -v $(realpath .):/eraft eraft/eraftkv:$(IMAGE_VERSION) /eraft/build/example/eraftkv -svr_id 0 -kv_db_path /eraft/data/kv_db0 -log_db_path /eraft/data/log_db0 -snap_db_path /eraft/data/snap_db0 -peer_addrs 172.18.0.10:8088,172.18.0.11:8089,172.18.0.12:8090 -log_file_path /eraft/logs/eraftkv-1.log -monitor_port 18080
sleep 2
docker run --name kvserver-node2 --network mytestnetwork --ip 172.18.0.11 --privileged=true -d --rm -v $(realpath .):/eraft eraft/eraftkv:$(IMAGE_VERSION) /eraft/build/example/eraftkv -svr_id 1 -kv_db_path /eraft/data/kv_db1 -log_db_path /eraft/data/log_db1 -snap_db_path /eraft/data/snap_db1 -peer_addrs 172.18.0.10:8088,172.18.0.11:8089,172.18.0.12:8090 -log_file_path /eraft/logs/eraftkv-2.log -monitor_addrs 0.0.0.0:12306
docker run --name kvserver-node3 --network mytestnetwork --ip 172.18.0.12 --privileged=true -d --rm -v $(realpath .):/eraft eraft/eraftkv:$(IMAGE_VERSION) /eraft/build/example/eraftkv -svr_id 2 -kv_db_path /eraft/data/kv_db2 -log_db_path /eraft/data/log_db2 -snap_db_path /eraft/data/snap_db2 -peer_addrs 172.18.0.10:8088,172.18.0.11:8089,172.18.0.12:8090 -log_file_path /eraft/logs/eraftkv-3.log -monitor_addrs 0.0.0.0:12306
docker run --name kvserver-node2 --network mytestnetwork -p 18081:18081 --ip 172.18.0.11 --privileged=true -d --rm -v $(realpath .):/eraft eraft/eraftkv:$(IMAGE_VERSION) /eraft/build/example/eraftkv -svr_id 1 -kv_db_path /eraft/data/kv_db1 -log_db_path /eraft/data/log_db1 -snap_db_path /eraft/data/snap_db1 -peer_addrs 172.18.0.10:8088,172.18.0.11:8089,172.18.0.12:8090 -log_file_path /eraft/logs/eraftkv-2.log -monitor_port 18081
docker run --name kvserver-node3 --network mytestnetwork -p 18082:18082 --ip 172.18.0.12 --privileged=true -d --rm -v $(realpath .):/eraft eraft/eraftkv:$(IMAGE_VERSION) /eraft/build/example/eraftkv -svr_id 2 -kv_db_path /eraft/data/kv_db2 -log_db_path /eraft/data/log_db2 -snap_db_path /eraft/data/snap_db2 -peer_addrs 172.18.0.10:8088,172.18.0.11:8089,172.18.0.12:8090 -log_file_path /eraft/logs/eraftkv-3.log -monitor_port 18082
sleep 1
docker run --name metaserver-node1 --network mytestnetwork --ip 172.18.0.2 -d --rm -v $(realpath .):/eraft eraft/eraftkv:$(IMAGE_VERSION) /eraft/build/example/eraftmeta -svr_id 0 -kv_db_path /eraft/data/meta_db0 -log_db_path /eraft/data/meta_log_db0 -peer_addrs 172.18.0.2:8088,172.18.0.3:8089,172.18.0.4:8090 -monitor_addrs 0.0.0.0:12306
docker run --name metaserver-node1 --network mytestnetwork -p 19080:19080 --ip 172.18.0.2 -d --rm -v $(realpath .):/eraft eraft/eraftkv:$(IMAGE_VERSION) /eraft/build/example/eraftmeta -svr_id 0 -kv_db_path /eraft/data/meta_db0 -log_db_path /eraft/data/meta_log_db0 -peer_addrs 172.18.0.2:8088,172.18.0.3:8089,172.18.0.4:8090 -monitor_port 19080
sleep 3
docker run --name metaserver-node2 --network mytestnetwork --ip 172.18.0.3 -d --rm -v $(realpath .):/eraft eraft/eraftkv:$(IMAGE_VERSION) /eraft/build/example/eraftmeta -svr_id 1 -kv_db_path /eraft/data/meta_db1 -log_db_path /eraft/data/meta_log_db1 -peer_addrs 172.18.0.2:8088,172.18.0.3:8089,172.18.0.4:8090 -monitor_addrs 0.0.0.0:12306
docker run --name metaserver-node3 --network mytestnetwork --ip 172.18.0.4 -d --rm -v $(realpath .):/eraft eraft/eraftkv:$(IMAGE_VERSION) /eraft/build/example/eraftmeta -svr_id 2 -kv_db_path /eraft/data/meta_db2 -log_db_path /eraft/data/meta_log_db2 -peer_addrs 172.18.0.2:8088,172.18.0.3:8089,172.18.0.4:8090 -monitor_addrs 0.0.0.0:12306
docker run --name metaserver-node2 --network mytestnetwork -p 19081:19081 --ip 172.18.0.3 -d --rm -v $(realpath .):/eraft eraft/eraftkv:$(IMAGE_VERSION) /eraft/build/example/eraftmeta -svr_id 1 -kv_db_path /eraft/data/meta_db1 -log_db_path /eraft/data/meta_log_db1 -peer_addrs 172.18.0.2:8088,172.18.0.3:8089,172.18.0.4:8090 -monitor_port 19081
docker run --name metaserver-node3 --network mytestnetwork -p 19082:19082 --ip 172.18.0.4 -d --rm -v $(realpath .):/eraft eraft/eraftkv:$(IMAGE_VERSION) /eraft/build/example/eraftmeta -svr_id 2 -kv_db_path /eraft/data/meta_db2 -log_db_path /eraft/data/meta_log_db2 -peer_addrs 172.18.0.2:8088,172.18.0.3:8089,172.18.0.4:8090 -monitor_port 19082

stop-demo:
docker stop kvserver-node1 kvserver-node2 kvserver-node3 metaserver-node1 metaserver-node2 metaserver-node3
Expand Down
2 changes: 2 additions & 0 deletions example/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ list(APPEND eraftkv_sources src/sequential_file_reader.cc)
list(APPEND eraftkv_sources src/sequential_file_writer.cc)
list(APPEND eraftkv_sources src/log_entry_cache.cc)
list(APPEND eraftkv_sources src/grpc_network_impl.cc)
list(APPEND eraftkv_sources src/client.cc)
list(APPEND eraftkv_sources src/eraftkv.cc)

add_executable(eraftkv ${eraftkv_sources})
Expand All @@ -32,6 +33,7 @@ list(APPEND eraftmeta_sources src/sequential_file_reader.cc)
list(APPEND eraftmeta_sources src/sequential_file_writer.cc)
list(APPEND eraftmeta_sources src/log_entry_cache.cc)
list(APPEND eraftmeta_sources src/grpc_network_impl.cc)
list(APPEND eraftmeta_sources src/client.cc)
list(APPEND eraftmeta_sources src/eraftmeta.cc)

add_executable(eraftmeta ${eraftmeta_sources})
Expand Down
3 changes: 3 additions & 0 deletions example/include/client.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@

#define DEFAULT_METASERVER_ADDRS \
"172.18.0.2:8088,172.18.0.3:8089,172.18.0.4:8090"
#define DEFAULT_SHARD_MONITOR_ADDRS \
"http://172.18.0.10:18088,http://172.18.0.11:18081,http://172.18.0.12:18082"

using eraftkv::ERaftKv;
using grpc::Channel;
Expand All @@ -63,6 +65,7 @@ class Client {
void UpdateKvServerLeaderStubByPartitionKey(std::string partition_key);

bool AddServerGroupToMeta(int64_t group_shard_id,
int64_t leader_id,
std::string group_server_addrs);

std::map<int64_t, eraftkv::ShardGroup> GetServerGroupsFromMeta();
Expand Down
18 changes: 16 additions & 2 deletions example/include/eraftkv_server.h
Original file line number Diff line number Diff line change
Expand Up @@ -96,19 +96,23 @@ class ERaftKvServer : public eraftkv::ERaftKv::Service {
*
* @param config
*/
ERaftKvServer(ERaftKvServerOptions option) : options_(option), op_sign(1) {
ERaftKvServer(ERaftKvServerOptions option, int server_role)
: options_(option), op_sign(1) {
// init raft lib
RaftConfig raft_config;
raft_config.id = options_.svr_id;
svr_role_ = server_role;
auto peers = StringUtil::Split(options_.peer_addrs, ',');
int64_t count = 0;
for (auto peer : peers) {
raft_config.peer_address_map[count] = peer;
count++;
}
if (options_.svr_role == ServerRoleEnum::DataServer) {
if (server_role == 0) {
DirectoryTool::MkDir(options_.snap_db_path);
}
stat_json_str_ = new std::string("");
cluster_stats_json_str_ = new std::string("");
raft_config.snap_path = options_.snap_db_path;
options_.svr_addr = raft_config.peer_address_map[options_.svr_id];
GRpcNetworkImpl* net_rpc = new GRpcNetworkImpl();
Expand Down Expand Up @@ -194,6 +198,10 @@ class ERaftKvServer : public eraftkv::ERaftKv::Service {
*/
EStatus BuildAndRunRpcServer();

static void ReportStats();

static void UpdateMetaStats();

/**
* @brief
*
Expand All @@ -206,6 +214,12 @@ class ERaftKvServer : public eraftkv::ERaftKv::Service {

static bool* is_ok_to_response_;

static std::atomic<std::string*> stat_json_str_;

static std::atomic<std::string*> cluster_stats_json_str_;

static int svr_role_;

private:
/**
* @brief
Expand Down
Loading

0 comments on commit da83223

Please sign in to comment.