从0开始手写dubbo框架
文章平均质量分 78
通过netty从0开始编写dubbo框架。最终实现RPC框架必有的功能。例如:负载均衡、注册中心、自定义协议等等。在本专栏,你可以学到:更加深入的学习netty、更好的理解dubbo框架、设计模式的使用。
叁滴水
人生就是一边拥有一边失去,一边选择一边放弃...
展开
-
【手写dubbo-7】手撸了自定义协议、远程调用、服务动态扩容,梳理一下吧!
目前为止,笔者已经编写了一个基本的rpc框架,完成了rpc框架核心的一些功能: 自定义协议、远程调用、服务动态扩容等。虽然已经可以基本调用,但是还是有dubbo的很多点,很多概念没有合理的引用出来。例如集群容错、线程模型、直连提供者、多协议、SPI等等,稍后会逐步引入。此工程主要目的是为了更好的理解dubbo框架,如果有严重bug,或者不对的地方,大家可以指出来。原创 2021-05-17 15:17:04 · 4595 阅读 · 4 评论 -
【手写dubbo-6】rpc调用引入注册中心实现服务动态扩容
一个不能动态扩容的rpc框架是一个残缺的框架。本次优化:引入注册中心概念、实现服务的动态扩容、负载均衡等功能。原创 2021-05-17 14:11:26 · 5142 阅读 · 15 评论 -
【手写dubbo-5】rpc调用异步转同步
一般情况下每个service的调用的过程都是同步的,例如在一个service中通过RestTemplate调用一个接口,这样也可以认为是一个远程调用,这种是同步进行的,整个调用的思路如下图。调用线程只需要等待调用结果,并且返回即可。这是一种简单的调用方式。但是,在使用netty时,整个调用过程是一个异步的过程,上图那种思路就无法达到预期效果。整个调用过程如下图。结果响应之后,selector不知道将结果交给哪个线程处理。原创 2021-05-13 17:25:37 · 4598 阅读 · 10 评论 -
【手写dubbo-4】想了解dubbo的Invocation模型?先创造个私有协议吧!
上个版本只是为了实现简单的远程调用,只能请求指定类,并且返回字符串。本次优化,使得可以请求服务端开放的任意服务,并且返回任意对象。 优化请求信息,请求信息中携带消息id(作用很大,稍后会有介绍)、接口名、方法名、参数信息等。响应信息中有消息id、响应信息等。对象序列化方式暂时采用jdk自带序列化,因序列化不影响使用,因此暂不优化,以后版本提供扩展入口。原创 2021-05-12 20:38:11 · 4794 阅读 · 18 评论 -
【手写dubbo-3】rpc框架起源——远程调用最开始的样子!
第一个版本,使用netty完成一个RPC调用,使得在开发时通过调用本地方法即可完成远程调用。主要设计内容netty、自定义协议、反射等。原创 2021-05-08 21:56:53 · 3936 阅读 · 1 评论 -
【手写dubbo-2】超详细!netty实现群聊、私聊
巩固netty知识,使用netty完成一个聊天系统,通过该聊天系统更加深入的了解netty。设计知识点:nio、reactor模型、tcp粘包拆包、自定义协议等等。原创 2021-05-08 20:07:25 · 4361 阅读 · 1 评论 -
【手写dubbo-1】谈一谈dubbo的前世今生
就目前来看,dubbo框架是一个目前位置非常优秀的RPC框架, 一个必须要学的一个框架。也许以后它会更加优秀,也许会落寞。但是其设计思想,非常值得开发者去学习。原创 2021-05-08 15:42:14 · 5225 阅读 · 8 评论