一个简单的分布式系统示例代码(Python)

使用socket库进行节点之间的通信。

服务器端代码(节点A)

import socket  
  
# 创建socket对象  
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
  
# 绑定IP地址和端口号  
server_address = ('localhost', 12345)  
print('Starting up on {} port {}'.format(*server_address))  
server_socket.bind(server_address)  
  
# 监听连接  
server_socket.listen(1)  
  
while True:  
    # 等待客户端连接  
    print('Waiting for a connection')  
    connection, client_address = server_socket.accept()  
      
    try:  
        print('Connection from', client_address)  
          
        # 接收数据  
        while True:  
            data = connection.recv(1024)  
            print('Received {!r}'.format(data))  
            if data:  
                # 处理数据(这里只是简单回显)  
                print('Sending data back to the client')  
                connection.sendall(data)  
            else:  
                print('No more data from', client_address)  
                break  
              
    finally:  
        # 清理连接  
        connection.close()

客户端端代码(节点B)

import socket  
  
# 创建socket对象  
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
  
# 连接服务器  
server_address = ('localhost', 12345)  
print('Connecting to {} port {}'.format(*server_address))  
client_socket.connect(server_address)  
  
try:  
    # 发送数据  
    message = 'Hello from client!'  
    print('Sending {!r}'.format(message))  
    client_socket.sendall(message.encode())  
      
    # 接收响应  
    amount_received = 0  
    amount_expected = len(message)  
      
    while amount_received < amount_expected:  
        data = client_socket.recv(16)  
        amount_received += len(data)  
        print('Received {!r}'.format(data))  
  
finally:  
    # 清理连接  
    print('Closing socket')  
    client_socket.close()

运行示例

  1. 首先,运行服务器端代码(节点A)。
  2. 然后,运行客户端端代码(节点B)。
  3. 客户端将发送一条消息给服务器,服务器将接收并回显这条消息。

这个示例非常基础,只展示了简单的客户端-服务器通信模式。在实际的分布式系统中,可能需要处理更复杂的问题,如并发、错误处理、数据一致性、节点间的协作等。此外,还可以使用更高级的框架和工具来构建分布式系统,如Apache Kafka、RabbitMQ用于消息传递,Redis、Memcached用于分布式缓存,以及Kubernetes、Docker用于容器化部署和管理等。

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值