run the given test file directly
Among the three topics given in Phase 2, we choose the third one, which is implementing a Sharded Key/Value Service base on the given codebase in Go. In the Project Phase 1 we have done, we used hashicorp /raft, db_badger, and other packages to implement lightweight, fast, easy-to-use raft-based key-value storage system. However, in practical application, when the data grows to a certain extent, if we still use a single cluster to serve all the data, a large number of accesses will be squeezed on the leader, increasing the pressure on cluster and extending the response time to requirements. Dividing different data into different groups by database sharding is a good way to solve the problem. Each subset of the database that mutually disjoints each other is called a Shard, and the complete database is made up by the database subsets together. As time goes by, some new groups are added or some existing groups are removed, the Shards need to migrate between the different groups. In the Phase 2, we will base on the raft-based key-value Storage system implemented by calling packages in phase 1 and the raft and fault-tolerant Key/Value service implemented in the labs to implement the Sharded key/value Service. Finally, we will get a relatively efficient, optimized distributed database. In the future, we may try to set up the distributed database onto the internet and connect to the multiple actual servers.