zoukankan      html  css  js  c++  java
  • java rpc

    这两天看公司的一个server的源码。

    然后看了下里面的rpc实现,感觉很有意思。

    大概实现一个rpc工具需要做如下工作:

    1、定义序列化的对象,用于在client和server之间传递(接口的参数可以是序列化的,也可以把所有信息封装到一个可序列化对象当中进行传递)

    比如:有接口ISample,方法有test(T1 x1, T2 x2)

    你可以选择设置T1和T2为可序列化的,client端就可以直接通过代理调用这个方法

    也可以如下:test(Invocation invo)->test(T1 X1,T2 X2)

    传递的是封装好的可序列化的对象

    2、选择io模式,是bio还是nio。当然现在大部分都是nio了

    3、定义client和server的结构。这时候涉及动态代理。

    4、server端要存储一个map:保存接口和对应的实现类的hash关系。

    5、在server初始化的时候,需要传递被代理的对象,同时放到4中的map中

    6、client获取动态代理的时候只需要传递接口的class就行,server会通过map去查询被代理实例

    7、client中要实现以下socket,在执行代理的时候,连接到remote server

    当然,其实通过http直接调用也是一种rpc,这里不做介绍了

  • 相关阅读:
    Maven项目文档
    Maven外部依赖
    Nexus使用
    android -chrome 调试
    gradle问题 cordova
    OTS parsing error: invalid version tag woff和ttf文件被Filter拦截
    生产者和消费者模式--java设计模式
    Procedure-Function oracle
    ImageIO(图像处理)
    wpf表单验证
  • 原文地址:https://www.cnblogs.com/cane/p/5219671.html
Copyright © 2011-2022 走看看