读梁飞-RPC框架几行代码就够了 有感

梁飞-dubbo框架的设计者,是一位阿里的资深架构师

RPC框架几行代码就够了,这篇文章十分适合不是很了解RPC的人看一遍,最好是自己敲一遍。注释,对入参的处理,对流用后进行关闭,动态代理的使用。
这边文章地址:
https://javatar.iteye.com/blog/1123915

首先将一下,为什么用RPC(Remote Procedure Call)远程工程调用。
什么情况下会用到,一个公司的项目可能大可能小,小的项目,可能一个项目,而有些项目,可能光代码和jar就能有1G大小,这时候就会设计到分布式,会将原本的项目进行拆分,拆分成多个小项目,让不同的团队去负责不同的模块。项目中如果用到别的项目的接口,这个时候就用到了RPC。
当然,这是拆分项目,也可以在创建项目的时候,就是分布式的。

那么我们就具体谈谈这篇博文中的如何实现的RPC

首先有两个项目(举例),分别为:生产者,消费者。
生产者:一直启动服务,为消费者提供服务,并暴露服务
消费者:启动应用,通过host,port,service.class三个参数去确定具体调用的是那个接口
host,port是为了锁定生产者是哪台机器那个端口,servcice.class为了锁定调用接口的class。

消费者和生产者之间是使用java中自带的socket进行通信的。
消费者:

 HelloService service = RpcFramework.refer(HelloService.class, "127.0.0.1", 1234);  

这里面具体用到了是我上一篇博客中提到的动态代理技术,在运行中动态生成的,而这边这个动态代理里面,会用到socket进行远程通信,将调用的接口,方法,参数,通过socket写过去,然后用一个ObjectInputStream(阻塞式的)来接收从生产者返回的数据

生产者:
先提供一个socketServer并确定端口,可以接收socket传过来的数据。
这是一个while true的方式。因为是可以不断循环,查看是否有人连接的这个socketServer服务器,如果接收的数据,就开一个线程来接收数据,并返回数据。这里面不是真正的调用,而是通过反射的方式,直接method.invoke()的方式获得这个方法的返回值,并将返回值通过socket写回去,返回给消费者。。
这边的开线程的好处,更多的是让程序可以并行的处理数据,而不是处理了一个方法,在处理中,第二个方法来了,而无法对其进行服务,增加服务能力。

当然,这篇博文里面更多的是一种示范,这边连接的时候,可以使用netty,当然只是道听途说

刚刚去看了dubbo在github里面的issue,https://github.com/apache/incubator-dubbo/issues/3088
我对里面的问题进行了截图
在这里插入图片描述

都是国人吧,但是一般都会使用英文交流,这就是一种氛围吧,而且一个公司敢于将自己的产品开源出去,就是一种态度。我还记得这里面就有一些同样是互联网公司

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值