`
nepxion
  • 浏览: 37237 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

(五) Nepxion-Thunder分布式RPC集成框架 - 通信协议框架

阅读更多

Nepxion-Thunder(QQ 群 471164539)发布在https://github.com/Nepxion/

 

  •  1 ServerExecutor.java - 服务端运行器接口
        interfaze :接口名(例如com.nepxion.thunder.test.service.UserService)
        applicationEntity包含四个参数:application(应用名),group(组名),host(服务地址),port(端口)。应用名和组名的作用,一是为了管理方便,二是防止同名接口的出现
       
    ServerExecutor.java作用是根据接口名+应用名+组名+服务地址+端口发布一个服务
  • 2 AbstractServerExecutor.java - ServerExecutor.java的抽象实现,具体逻辑到各个通信中间件的去实现
  • 3 ServerExecutorAdapter.java - 继承AbstractDominationExecutor.java,服务端处理逻辑的封装适配,分为三部分:处理结果(安全访问的拦截),处理异常,处理监控。服务端的处理是异步多线程
  • 4 ClientExecutor.java - 调用端运行器接口
       ClientExecutor.java作用是根据接口名+应用名+组名+服务地址+端口获取一个服务,对服务上下线后的回调
  • 5 AbstractClientExecutor.java - ClientExecutor.java的抽象实现,具体逻辑到各个通信中间件的去实现
  • 6 ClientExecutorAdapter.java - 继承AbstractDominationExecutor.java,调用端处理逻辑的封装适配,分为四部分:处理同步/异步返回结果(异步心跳和广播忽略),处理异常,处理监控。同步模式下,用CyclicBarrier做异步模拟同步等待
  • 7 ClientInterceptor.java - 调用端代理拦截器
      
    ClientInterceptor.java作用是提供异步调用,同步调用,广播调用三种方式接口
  • 8 AbstractClientInterceptor.java - 调用端代理拦截器的抽象实现,具体逻辑到各个通信中间件的去实现
  • 9 ClientInterceptorAdapter.java - 调用端代理拦截器的处理逻辑封装适应。主要是同步的处理逻辑,异步不同通信中间件方式不一样,不做封装
  • 10 DominationExecutor.java - 服务治理器接口
  • 11 AbstractDominationExecutor.java - DominationExecutor.java的抽象实现,主要处理监控和事件输出
  • 12 ProtocolException - 协议异常类

    Thunder在通信过程中,以序列化的对象为消息载体,基础消息类是ProtocolMessage,派生类ProtocolRequest为请求载体,派生类ProtocolResponse为响应载体
  • 13 ProtocolMessage.java - 序列化类
        private String messageId;            // UUID.randomUUID()的随机字符串,作为消息的唯一ID
        private String traceId;              // 全局跟踪ID
        private String interfaze;            // 接口名
        private String metho;                // 方法名
        protected Class<?>[] parameterTypes; // 参数类型
        protected Object[] parameters;       // 参数值
        private boolean async;               // 异步或者同步请求
        private String callback;             // 回调接口名(只用于异步方法)
        private long timeout;                // 超时时间(只用于同步方法)
        private boolean broadcast;           // 广播模式(广播模式前提必须是异步请求)
        private boolean heartbeat;           // 心跳模式
        private boolean feedback;            // 是否需要服务端反馈结果(只用于异步方法,有一种调用方式,客户端只把请求发送出去,不需要服务端返回)
        private long processStartTime;       // 调用的业务处理起始时间 
        private long processEndTime;         // 调用的业务处理结束时间    
        private long deliverStartTime;       // 调用的网络传输起始时间    
        private long deliverEndTime;         // 调用的网络传输结束时间
        private String fromCluster;          // 消息从哪个集群发出
        private String fromUrl;              // 消息从哪个Url发出
        private String toCluster;            // 消息发往哪个集群
        private String toUrl;                // 消息发往哪个Url
        private Object requestSource;        // 请求Source(一般是IP:Port格式的字符串),只作为消息队列MQ Selector用
        private Object responseSource;       // 响应Source(一般是(IP:Port格式的字符串),只作为消息队列MQ Selector用
  • 14 ProtocolRequest.java - 调用端发送到服务端的请求类,继承于ProtocolMessage.java,序列化类
        private ReferenceConfig referenceConfig; // 包含secretKey(密钥),version(版本)等,发送到服务端,用于匹配
  • 15 ProtocolResponse.java - 服务端返回到调用端的响应类,继承于ProtocolMessage.java,序列化类
        private Object result; // 调用的结果
    
  • 大小: 18.2 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics