dubbo服务发现

        框架永远不要停留在使用的阶段,阿里代码规约是目的是码出质量码出高效,码是一个动作,需要实际,就我个人而言,无“码”不欢,如果现在给高中生一个demo,他们也能写出一个RPC框架调用的业务实现。这就是为什么要读源(高)码(薪)。

        探究dubbo如下核心:RPC实现原理、RPC从发出请求到收到返回结果这整个过程的详细过程、RPC的负载均衡原理、服务暴露、服务发现的原理以及实现细节、多线程中dubbo是如何做到将返回结果和每个线程一一对应的,事后多想想如何设计一个优秀的RPC业务流程。

       上次服务注册是基于API实现的,这次服务发现是基于spring容器实现的。Spring容器会将ReferenceConfig转为ReferenceBean,

从注册中心获取服务者信息,代码思路跟服务注册一致。

        消费者订阅在注册中心订阅服务者信息。默认使用的FailbackRegistry实现,其中retry是后台的一个定时任务。RegistryProtocol.doRefer中涉及到了zookeeper订阅和cluster集群容错。

        完成了invoker对象的转换,invoker对象包含了服务方的url和消费者的url,路由规则接着就是创建动态代理对象(动态代理对象的创建有jdk,cglib,javassist)。

        在生成的动态代理对象InvokerInvocationHandler进行了RPC的远程调用。return invoker.invoke(new RpcInvocation(method, args)).recreate()。

        dubbo远远不止这些,还有负载均衡算法;网络通信netty非阻塞、阻塞、异步、同步;tcp的粘包、拆包;序列化等。

        后面继续我的springboot系列了。

猜你喜欢

转载自my.oschina.net/29232258/blog/1789647