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

        其中包含一个服务器(节点A)和一个客户端(节点B)。在这个例子中,服务器会监听来自客户端的连接请求,并接收客户端发送的消息。客户端会连接到服务器并发送一条消息。

服务器端代码(节点A)

import java.io.*;
import java.net.*;

public class DistributedServer {

    public static void main(String[] args) throws IOException {
        // 创建一个ServerSocket对象,监听本地的12345端口
        ServerSocket serverSocket = new ServerSocket(12345);
        System.out.println("Server started and listening on port 12345");

        while (true) {
            // 等待客户端连接
            Socket clientSocket = serverSocket.accept();
            System.out.println("Client connected: " + clientSocket.getInetAddress());

            // 获取输入和输出流
            BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);

            // 读取客户端发送的消息
            String message = in.readLine();
            System.out.println("Received message from client: " + message);

            // 向客户端发送响应
            out.println("Message received and processed by server.");

            // 关闭连接
            clientSocket.close();
        }
    }
}

客户端端代码(节点B)

import java.io.*;
import java.net.*;
public class DistributedClient {
    public static void main(String[] args) throws IOException {
        // 创建一个Socket对象,连接到服务器的12345端口
        Socket clientSocket = new Socket("localhost", 12345);
        System.out.println("Connected to server");

        // 获取输出和输入流
        PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
        BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

        // 向服务器发送消息
        out.println("Hello from client!");

        // 读取服务器响应
        String response = in.readLine();
        System.out.println("Server response: " + response);

        // 关闭连接
        clientSocket.close();
    }
}

运行示例

  1. 首先,编译并运行服务器端代码。
  2. 然后,在另一个终端或命令行窗口中,编译并运行客户端端代码。

客户端会连接到服务器,并发送一条消息。服务器会接收消息,处理它(在这个简单的例子中只是打印出来),然后发送一条响应回客户端。客户端会接收并打印服务器的响应。

请注意,这个示例是一个同步阻塞的模型,即客户端在发送消息后会等待服务器的响应。在更复杂的分布式系统中,你可能需要考虑使用异步通信、消息队列、并发处理、容错机制等高级特性。此外,为了处理节点间的大规模通信和协作,你可能会使用专门的分布式系统框架,如Apache Hadoop、Apache Spark或Kubernetes等。

运行结果

启动服务端A

启动客户端B

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
好的,以下是一个简单分布式系统代码示例,实现了一个基于Java RMI的RPC调用过程: 服务端代码: ```java import java.rmi.Remote; import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; import java.rmi.server.UnicastRemoteObject; public interface MyService extends Remote { public String hello(String name) throws RemoteException; } public class MyServiceImpl extends UnicastRemoteObject implements MyService { public MyServiceImpl() throws RemoteException { super(); } public String hello(String name) throws RemoteException { return "Hello, " + name + "!"; } public static void main(String[] args) throws Exception { MyService service = new MyServiceImpl(); Registry registry = LocateRegistry.createRegistry(1099); registry.rebind("MyService", service); System.out.println("Server is ready."); } } ``` 客户端代码: ```java import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; public class MyServiceClient { public static void main(String[] args) throws Exception { Registry registry = LocateRegistry.getRegistry("localhost", 1099); MyService service = (MyService) registry.lookup("MyService"); String name = "World"; System.out.println(service.hello(name)); } } ``` 在这个示例中,服务端实现了MyService接口,并将其注册到RMI Registry中。客户端通过RMI Registry查找MyService,并调用其hello方法。 这个示例只是一个简单的RPC调用示例,实际的分布式系统需要更加复杂的逻辑和处理机制,例如数据分布、容错处理、负载均衡等。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值