SimpleRPC 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
SimpleRPC 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
授权协议 MIT
开发语言 Java
操作系统 跨平台
软件类型 开源软件
所属分类 服务器软件
开发厂商
地区 国产
提 交 者 mrhades
适用人群 未知
收录时间 2020-03-27

软件简介

SimpleRPC 是具备跨网通信能力的 RPC 通信框架。

基于 WebSocket + Json 底层进行数据交换通信,使用 Netty + Gson 构建实现。

优势

  1. 针对跨网环境进行框架针对性设计
  2. 较完善的断线重连机制(应对多种通信环节的断线重连),有效规避因暂时性断网导致即使网络恢复,服务仍然不可用
  3. 容易上手,简单的 API 便可简单实现 RPC 功能
  4. 多样化初始化及启动,支持 CLI or Code 进行服务启动,配置支持 Code 配置 or Xml 文件加载
  5. 支持验证码验证通信,及 SSL 加密通信。可拒绝非法连接接入,有效避免非法调用以及数据泄露问题


详细介绍

日常工作中可能会遇到一些网络问题。现在有一内部局域网的资源,但是外部网络的设备想要获得该内部资源,甚至期望通过程序代码调用简单的获取相关数据。

RPC 远程调用就与类似的功能场景,RPC 客户端连接 RPC 服务端,进而可以使得客户端远程调取服务端的数据资源。但是,目前的 RPC 程序,基本模式为客户端连接服务端,主流 RPC 在这种连接关系中,前者一般为消费者,后者一般为生产者。

在这种网络情境下,当内网设备需要与外网设备建立 TCP 连接时,只能由内网设备发起连接请求,按照主流 RPC,该内网设备将会作为消费者的角色进行运行,此时期望内网设备作为生产者的角色是相违背的。

于是 SimpleRPC 为此诞生,除了主流 RPC 的运行模式,同时也支持在客户端作为生产者、服务端作为消费者的模式下,进行 RPC 远程调用。

 

特色

客户端(消费者)与服务端(生产者)角色转换。

客户端与服务端为点对点,建立通信连接。




内部通过双向注册实现,所以更准确的是互为生产者和消费者。进而实现内网穿透,并进行自由的数据通信。
客户端与服务端内部代码进行融合,进而使得客户端与服务端内部只有连接关系的差异。




由于应用场景为跨网通信,中间将会通过多层网关(NAT),连接的安全性也尤为重要。至此除了简单的校验码确认建立连接,也支持建立连接进行数据通信,保障连接以及数据的安全性。



内部架构草图

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (0)

加载中
更多评论
暂无内容
2018/06/22 16:01

simpleRpc解析-客户端

上一篇剖析了SimpleRpc的服务端,这里来看看客户端调用 惯例,先看看时序图: 1:spring初始化zk服务发现类ZooKeeperServiceDiscovery和服务代理类,且后者依赖前者 2:获取服务代理类bean,并创建请求代理类(代...

0
0
发表于服务端专区
2018/06/22 14:42

simpleRpc解析-服务端

本文主要是对勇哥的simpleRpc进行了简单的剖析,用来学习rpc,加深对rpc的理解! 源码地址:http://git.oschina.net/huangyong/rpc 勇哥博客:https://my.oschina.net/huangyong/blog/361751 rpc(Remote Proced......

1
0
发表了博客
2018/08/20 19:43

200行代码实现RPC框架

之前因为项目需要,基于zookeeper和thrift协议实现了一个简单易用的RPC框架,核心代码不超过200行。 zookeeper主要作用是服务发现,thrift协议作为通信传输协议, 基于commons pool2构建连接池。 大家感兴趣的话可以参考,具体代码如下: /** * @author zhangkai * 抽象的thrift client,内置socket连接池以及线程池,...

0
0
发表了博客
2018/01/02 11:17

2017我都干了啥?

前言 过完农历新年,我也即将奔入三十而立之年。对于男人来说,三十意味着更多的责任。回头看自己从毕业到现在五年,有进步,但稍稍有些遗憾,当初制定的目标:年薪百万,架构师统统么有实现。这不免让我想到了前段时间的“中兴跳楼事件”,我离他还远么? 想到这里,我不免有些难受,那种无力感就像我深陷泥沼,越挣扎陷...

0
0
发表于服务端专区
2018/09/26 22:21

源码模仿之RPC

源码模仿之RPC RPC - 远程过程调用,概念不多赘述,可自行百度。 场景 统一api接口 生产者(提供远程接口调用方) 使用者(主动调用远程接口) 代码实现 API接口(公共依赖包) DemoEntity (实体类) /** * 测试...

0
0
发表了博客
2018/07/03 11:45

JDK动态代理学习

在之前的博文《simpleRpc解析-客户端》中,提到了客户端通过JDK动态代理获取Service的代理类,然后通过代理类去执行Service中定义的方法。在动态代理类创建的过程中,使用的是InvocationHandler的匿名类。 一开始...

0
0
发表了博客
07/30 15:25

微服务开发及使用

  摘要   假设你已经按照前面分享的文章下载JMicro源码并编译成功。现在开始开发一个JMicro微服务,并通过Java客户端及JS调用此微服务,Java支持同步和异步调用,JS目前只支持异步调用。   服务提供者和消费...

0
0
发表了博客
07/31 16:41

【JMicro】微服务开发及使用

JMicro是一个用Java语言实现的开源微服务全家桶, 源码地址:https://github.com/mynewworldyyl/jmicro, Demo地址:http://124.70.152.7 。 摘要 假设你已经按照前面分享的文章下载JMicro源码并编译成功。现在开始开发一个JMicro微服务,并通过Java客户端及JS调用此微服务,Java支持同步和异步调用,JS目前只支持异步调...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
0 评论
6 收藏
分享
返回顶部
顶部