分布式键值存储系统代码
时间: 2023-07-02 11:05:25 浏览: 57
以下是一个简单的分布式键值存储系统的代码示例,使用Python编写:
```python
import socket
import threading
class KeyValueStore:
def __init__(self):
self.data = {}
def put(self, key, value):
self.data[key] = value
def get(self, key):
return self.data.get(key)
class Server:
def __init__(self, host, port):
self.host = host
self.port = port
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.sock.bind((self.host, self.port))
self.store = KeyValueStore()
def listen(self):
self.sock.listen(1)
while True:
conn, addr = self.sock.accept()
threading.Thread(target=self.handle_connection, args=(conn, addr)).start()
def handle_connection(self, conn, addr):
while True:
data = conn.recv(1024)
if not data:
break
parts = data.decode().split(' ')
command = parts[0]
if command == 'PUT':
key = parts[1]
value = ' '.join(parts[2:])
self.store.put(key, value)
conn.sendall(b'OK\n')
elif command == 'GET':
key = parts[1]
value = self.store.get(key)
if value is not None:
conn.sendall(value.encode() + b'\n')
else:
conn.sendall(b'NOT FOUND\n')
else:
conn.sendall(b'ERROR\n')
conn.close()
if __name__ == '__main__':
server = Server('localhost', 8000)
server.listen()
```
该代码包括两个类:`KeyValueStore`和`Server`。`KeyValueStore`类代表了一个简单的键值存储,使用Python字典来保存数据。`Server`类实现了一个分布式键值存储系统的服务器,它监听端口并等待客户端连接。一旦有客户端连接,它将在新线程中处理客户端请求。服务器支持两个命令:`PUT`和`GET`。`PUT`命令用于添加或更新一个键值对,`GET`命令用于检索一个键的值。