zoukankan      html  css  js  c++  java
  • koalas-rpc

    koalas-rpc(https://github.com/dromara/koalas-rpc) 是一个RPC 框架, 相比于 dubbo,它足够简单,无论是做二次开发还是想了解 RPC 原理,都有非常好的入手体验。 
     
    项目启动调用过程如下:
    1. 使用注解标注接口。
    2. 使用 zookeeper 作为注册中心。客户端从zk拉取可用的 IP 
    3. 客户端利用 spring 生成 代理类。  最终由代理类完成消息的序列化和发送。
    4. 服务端反射调用。
    5. 可以配置直连,也可以利用注册中心,获取一批的IP,然后进行负载均衡。  
    基本上 JavaRPC 框架都是这个套路:
    1. 先定义协议,一般是一个接口。
    2. 服务端实现这个接口。
    3. 客户端直接调用这个接口。 因为客户端引用的仅仅是一个接口,所以在调用之前,RPC框架要为这个接口生成了一个代理类, 在实际调用的时候,其实调用的是这个代理类,这个代理类代理的方法都是一个实现:就是将调用的信息(调用的类,方法,参数)进行封装。
    4. 然后获取所有的实现这个接口的服务端 IP(对应集群管理模块)。
    5. 从这些IP 中选择一台(对应负载管理模块)。
    6. 对调用信息序列化(序列化模块模块)。
    7. 最后发送(网络通信模块,http/tcp)。
     
    对于服务端
    1. 扫描所有接口实现,将接口信息,连同服务器信息(IP、端口)一起注册到注册中心。
    2. 建立侦听。
    3. 获取到请求。
    4. 反序列化报文 。
    5. 解析出要调用的类,方法,参数,然后通过反射调用目标类和方法,并传递参数进去。 当然出于一定的目的也会对服务端的实现做一定的增强。 
     
    所以一般的 RPC 实现,都是客户端使用代理实现,对应代理的实现方式,dubbo 使用的是Javassist,koalas-rpc使用的是 spring中 的功能。
     
    个人注解版:
  • 相关阅读:
    JS事件
    BOM
    DOM
    常见的SQL字符串函数
    常用的认证方式
    后台代码扫描规则-sonarQube官方
    spring cloud中feign的使用
    常见基于 REST API 认证方式
    Java中连接池
    这是一张心情贴
  • 原文地址:https://www.cnblogs.com/beyondbit/p/15201680.html
Copyright © 2011-2022 走看看