CS架构(B/S架构详解)

一、什么是CS架构

CS架构是指Client/Server架构,它是分布式计算中最常用的一种架构。它将计算机系统分为两个部分,即客户端和服务器端。

客户端是用户的操作终端,由于硬件性能限制,只能完成一些简单的业务逻辑,并将这些请求发送给服务器端,等待服务器端返回结果。而服务器端则是主要负责业务逻辑的处理,它能够处理大量的客户端并发请求,并将处理结果返回给客户端。

CS架构最大的优势是服务器端能够快速、准确地处理客户端请求,实现了系统的高并发与高可用性。

二、CS架构的优点

1、高扩展性:由于客户端与服务器端相互独立,服务器端可以通过添加更多的计算机节点来进行扩展,而客户端仅需要更新对应的请求地址即可。这大大提高了系统的可扩展性,可满足不同业务需求的变化。

2、优秀的分布式处理能力:在CS架构中,服务器端能够快速处理客户端请求并返回结果,从而提高了整个系统的处理能力。同时,服务器端还可以将任务分配给多个子节点去执行,以实现并行处理,提高系统的处理效率。

3、高可用性:由于服务器端可以通过添加更多的计算机节点来进行扩展,因此能够支持高并发的请求。同时,在高并发、高负载的情况下,系统还能够进行负载均衡,从而提高系统的可用性。

三、应用场景

1、互联网应用:在互联网应用中,由于访问量比较大,且对于用户访问速度的要求也比较高,因此采用CS架构能够提高系统的响应速度与可扩展性,保证用户访问的质量。

2、大型企业应用:在大型企业应用中,对于业务逻辑的要求比较高,且数据处理并发量也比较大,因此采用CS架构能够提高系统的处理能力,保证数据的实时性与准确性。

四、CS架构示例代码

服务器端代码:

/**
 * 服务器端代码
 */
public class Server {
    public static void main(String[] args) throws IOException {
        // 创建服务器端Socket并绑定端口号
        ServerSocket serverSocket = new ServerSocket(8888);
        System.out.println("服务器已启动,等待客户端连接...");

        // 不断监听客户端的请求
        while (true) {
            // 等待客户端连接,并返回对应的Socket对象
            Socket socket = serverSocket.accept();

            // 创建对应的线程,处理客户端请求
            new ServerThread(socket).start();
        }
    }
}

/**
 * 服务器端线程类
 */
class ServerThread extends Thread {
    private Socket socket;

    public ServerThread(Socket socket) {
        this.socket = socket;
    }

    @Override
    public void run() {
        try {
            // 获取输入流
            BufferedReader brIn = new BufferedReader(new InputStreamReader(socket.getInputStream()));

            // 获取输出流
            PrintStream psOut = new PrintStream(socket.getOutputStream());

            // 不断读取客户端信息,并返回对应的处理结果
            String line;
            while ((line = brIn.readLine()) != null) {
                System.out.println("接收到客户端消息:" + line);

                // 处理客户端请求
                String result = handleRequest(line);

                // 返回处理结果
                psOut.println(result);
            }

            // 关闭流与连接
            psOut.close();
            brIn.close();
            socket.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 处理客户端请求
     *
     * @param request 客户端请求
     * @return 处理结果
     */
    private String handleRequest(String request) {
        // TODO: 处理客户端请求,返回相应的结果
        return "请求已处理";
    }
}

客户端代码:

/**
 * 客户端代码
 */
public class Client {
    public static void main(String[] args) throws IOException {
        // 创建客户端Socket并连接服务器
        Socket socket = new Socket("127.0.0.1", 8888);

        // 获取输出流
        PrintStream psOut = new PrintStream(socket.getOutputStream());

        // 获取输入流
        BufferedReader brIn = new BufferedReader(new InputStreamReader(socket.getInputStream()));

        // 向服务器发送请求并等待处理结果
        psOut.println("你好,服务器");
        String result = brIn.readLine();

        // 输出处理结果
        System.out.println("服务器返回结果:" + result);

        // 关闭流和连接
        psOut.close();
        brIn.close();
        socket.close();
    }
}

Published by

风君子

独自遨游何稽首 揭天掀地慰生平