zoukankan      html  css  js  c++  java
  • 轻量级RPC框架整理

    (1)代码目录

    (2)代码书写顺序:

    1. rpc-sample-api:服务接口, 对外提供访问的名称。目前只写了HelloService一个接口。

    2.rpc-sample-server:(服务)接口的实现类。

    目前写了两个实现类。这两个类均用RpcService注解标注     (涉及知识点:用注解发布服务)

    一个RpcBootStrap类,用来启动server。具体为加载本模块下的Spring.xml文件和rpc.properties 文件(service_address和registry_address)。

    3. rpc-server:RPC服务器(使用Netty实现的一个支持NIO的RPC服务器)

    RpcServer:做一些channel、channelPipeline的配置,启动Netty服务器

    RpcServerHandler:handler,处理器。RPC 服务端(实际的)处理器(用于处理 RPC 请求)。

       --channelRead0():创建并初始化响应对象->调用handle()方法处理请求->将请求结果设置到响应对象中->调用writeAndFlush()写入channel中,即服务端把响应消息发送给客户端

       --handle():根据反射调用实际的服务【重点编写的关键函数】。根据request中所请求的服务名字,获得服务对象;执行反射,调用该对象的方法,完成真正的服务端方法调用。

    RpcService:自定义RPC 服务注解。目的是为了采用注解进行服务发布。参考:只需要在类上使用该注解就可以申明一个服务,dubbo后来才支持该功能,最开始是基于xml文件配置的

     4.rpc-sample-client:

    java:测试代码

    resources:配置客户端的代码。spring.xml:配置服务发现组件、RPC代理

     5.rpc-client

    RpcProxy:使用动态代理(可用jdk的动态代理或者cglib)实现RPC代理。

      创建动态代理对象包括:

      创建 RPC 请求对象并设置请求属性
      获取 RPC 服务地址
      从 RPC 服务地址中解析主机名与端口号
      创建 RPC 客户端对象并发送 RPC 请求(new RpcClient(),Rpc客户端的作用就是发送Rpc请求)
      返回 RPC 响应结果

    RpcClient:使用Netty实现RPC客户端(发送Rpc请求)

    创建并初始化 Netty 客户端 Bootstrap 对象
        编码 RPC 请求
        解码 RPC 响应
        处理 RPC 响应
    连接 RPC 服务器
    写入 RPC 请求数据并关闭连接
    返回 RPC 响应对象

    6.zookeeper:服务注册和服务发现

    ZookeeperServiceDiscovery:

    创建 ZooKeeper 客户端
    获取 service 节点
    获取 address 节点
    获取 address 节点的值 返回地址

    ZookeeperServiceRegistry:

    创建 ZooKeeper 客户端
    创建 registry 节点(持久)
    (如果不存在的话才创建)
    创建 service 节点(持久)
    创建 address 节点(临时)

    7.Common:一些工具类

    bean:Request和Response对象

    util:序列化方法(ProtoStuff实现)、字符串处理工具

    codec:RpcEncoder(先in,再序列化后out)和RpcDecoder(先in,再反序列化后out)。调用了上述序列化和反序列化工具。

  • 相关阅读:
    java 或者 js 获取项目访问路径(域名)
    jquery validate 使用示例
    项目中调试SQLServer 方便的查看SQL语句的执行时间的方法
    Oracle Replace函数的简单使用
    LINE_NO in format of XXXX example -> Line 10 is 0010
    Oracle序列使用:建立、删除、使用
    Oracle 存储过程创建及调用
    char、varchar、varchar2区别
    missing equal sign
    [转]Windows中的句柄(handle)
  • 原文地址:https://www.cnblogs.com/JohnTeslaaa/p/12392972.html
Copyright © 2011-2022 走看看