Netty入门(五) --- Netty实现dubbo RPC

本文介绍了如何利用Netty实现Dubbo的RPC调用。首先讲解了RPC的基本概念,接着阐述了RPC调用的原理和流程,并给出了基于Netty的架构设计。详细步骤包括建立服务消费者和服务提供者的包和类,定义服务接口及其实现,实现Netty服务器和客户端的处理器,最后展示了运行截图。
摘要由CSDN通过智能技术生成


往期

十、Netty实现dubbo RPC

10.1 RPC基本介绍

RPC(Remote Procedure Call) — 远程过程调用,是一个计算机通信协议。

一台计算机可以通过RPC调用另一台计算机的子程序

常见的RPC框架有:阿里的Dubbo,谷歌的gRPC,Go语言的rpcx…

10.2 原理图和流程图

原理图:

image-20220126171118694

流程图:

image-20220126171254895

在RPC中,Client叫做服务消费者,Server叫做服务提供者

RPC调用流程说明:

  • 服务消费方(client)以本地调用方式调用服务
  • client stub 接收到调用后负责将方法、参数等封装成能够进行网络传输的消息体
  • client stub 将消息进行编码并发送到服务端
  • server stub 收到消息后进行解码
  • server stub 根据解码结果调用本地的服务
  • 本地服务执行并将结果返回给 server stub
  • server stub 将返回导入结果进行编码并发送至消费方
  • client stub 接收到消息并进行解码
  • 服务消费方(client)得到结果

10.3 基于Netty实现dubbo RPC

架构图:

image-20220126185654734

1、先把包和类建好,customer是消费者,provider是提供者,netty是基于Netty实现的连接

image-20220126185829868

2、HelloService和HelloServiceImpl

public interface HelloService {
   
    public String hello(String msg);
}
public class HelloServiceImpl implements HelloService {
   
    @Override
    public String hello(String msg) {
   
        System.out.println("接收到客户端消息="+msg);
        if (msg!=null){
   
            return "你好客户端,我已经收到你的消息 ["+msg+"]";
        } else {
   
            return "你好客户端,你发来的消息是空的";
        }

    }
}

3、NettyServer和NettyServerHandler,服务器端比较简单

public class NettyServer {
   

    public static void startServer(String host,int port) {
   
        startServer0(host, port);
    }

    private static void startServer0(String host,int port){
   

        EventLoopGroup bossGroup = new NioEventLoopGroup(1);
        EventLoopGroup workerGroup = new NioEventLoopGroup();

        try {
   
            ServerBootstrap serverBootstrap = new ServerBootstrap();

            serverBootstrap.group(bossGroup,workerGroup)
                    .channel(NioServerSocketChannel.class)
                    .childHandler(new ChannelInitializer<SocketChannel>() {
   
                                      @Override
                                      protected void initChannel
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值