梁飞-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
我对里面的问题进行了截图

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

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

  1. RPC框架几行代码就够了

    转于作者梁飞在公司的Blog:  http://pt.alibaba-inc.com/wp/experience_1330/simple-rpc-framework.html 因为要给百技上实训课,让 ...

  2. 还发愁项目经验吗?基于Netty实现分布式RPC框架[附完整代码]

    写给大家的话 最近我收到很多读者的来信,对如何学习分布式.如何进行项目实践和提高编程能力,存在很多疑问. 分布式那么难,怎么学?为什么看了那么多书还是掌握不了? 开源的框架比如Dubbo代码太多了,完 ...

  3. awvs 13使用_如何解密AWVS?15行代码就够了!

    项目介绍 AWVS一直以来在圈子中都比较火,以速度快和高准确性深受大家喜爱.很多人想研究其运作机制却因闭源而不得其解. 今天这里通过一个极其简单的方式,只用几行代码就能让你一见其核心代码.这是最新解码 ...

  4. 5行代码秀碾压,比Keras还好用的fastai来了,尝鲜PyTorch 1.0必备伴侣

    休假栗 问耕 假装发自 凹非寺 量子位 出品 | 公众号 QbitAI PyTorch 1.0来了~ 在今天的F8(Facebook开发者大会)上,深度学习框架PyTorch 1.0 rc1版如期发布 ...

  5. 读懂python代码_读懂花里胡哨的14行Python代码!

    最近在项目里发现一段代码,初看比较难看懂,细看,也还是比较难看懂.遂研究了一下,证实了这段代码确实,没啥作用,遂删之.记录在下. 去掉几个用于封装的函数,保留最小代码后,剩下以下14行代码.你能说出这 ...

  6. python split函数 空格_python上手--10行代码读懂红楼梦

    取名10行代码看懂红楼梦,是将介绍使用python代码来读红楼梦获取其主要人物.这里的思想就是词频统计,通过分析红楼梦小说文字中出现最多的词语,来概括说明红楼梦的核心人物和事情.实际上如果你能跟着往下 ...

  7. JAVA5000行代码什么概念_GitHub - catstiger/mvc: 一个不超过5000行代码的,快速,简单,易用的MVC框架。...

    一个不超过5000行代码的,快速,简单,易用的MVC框架. 我们的目的是: 让MVC回归其最初的目的. 因简单而快速,超过目前各种主流MVC. 零侵入,零配置,易于测试,并且让开发者感觉不到MVC的存 ...

  8. 100 行代码透彻解析 RPC 原理

    欢迎关注方志朋的博客,回复"666"获面试宝典 文章来源:https://sourl.cn/HpZHvy 引 言 本文主要论述的是"RPC 实现原理",那么首先 ...

  9. 4行代码,让app自动化框架支持 webview 混合应用操作

    移动端 app 自动化框架很多,但是有一些框架因为不支持混合应用测试,一直没有完全流行.比较典型的是经典的 Python 框架 uiautomator2, 这个框架简单好用,没有 appium 那样复 ...

最新文章

  1. 超大数据下大批量随机键值的查询优化方案
  2. Part8 多态性 8.2虚函数
  3. sql server2016里面的json功能 - 转
  4. js操作json数据的一些感受
  5. linux cordova安装教程,mac怎么安装cordova?
  6. 1018.eclipse工具使用记录
  7. 立足共赢 | 开宸引领绿色会展经济新形式
  8. Mysql的存储过程(以Mysql为例进行讲解)
  9. 基于springboot的社区物业管理系统(完美运行,包含数据库源代码,可完美运行)
  10. 服务器装凤凰系统,凤凰系统装在云服务器
  11. 谷歌宣布退出中国 google.cn已经关闭
  12. 谈中国分布式数据库商业之路:OSM与DB-Inside
  13. recovery 工作流程
  14. DQN玩Atari游戏安装atari环境bug指南
  15. java-net-php-python-jsp学生社团信息演示录像2019计算机毕业设计程序
  16. 重磅!这可能是史上最全的AI产业链地图了
  17. 在k8s上部署cerebro访问集群外部署的es
  18. 消费机 mysql_消费机软件主要构成
  19. 中小企业存储集群系统建设方案
  20. 12月5日计算机考试浙江卷英语答案,英语b级试卷?2019年12月b级真题试卷。

热门文章

  1. 8月11日 集训测试
  2. linux、windows中ping大数据包的命令格式
  3. Pandas Tips: 关于列(名)的各种妖娆操作
  4. 设计模式(Java随笔)—备忘录模式
  5. 曲线积分、曲面积分、二重积分、三重积分、定积分之间的转换
  6. 所谓的“哑巴英语”对中国是利大于弊(收藏)
  7. 《动手学深度学习》(四) -- LeNet、AlexNet、VGG、NiN、GoogLeNet、ResNet、DenseNet 实现
  8. linux小红帽实验心得,小红帽读书心得(精选4篇)
  9. html验证座机号码_JS校验手机号 座机 邮箱 微信号详解
  10. 基于腾讯开源的msec来进行php开发模块