主要为三点,动态代理、反射、socket网络编程。
-
看过很多讲dubbo原理的文章,总感觉太抽象,偶然间看到一个直播课堂讲dubbo原理。结合了一个订单的例子现场画笔工具画图,直观很多。截屏记录下来。(提供技术直播的为老马的北京尚学堂,感谢)
- 客户端使用动态代理的方式,“假装”实现了createOrder方法。
- 方法相关的数据通过序列化,进入到socket服务器。dubbo的socket实现为Netty。
- 服务端从socket服务器取出数据,通过反射的方式找到“真实”的服务实现。
- 服务端的方法在服务启动时已注入。
- 服务发现层,可用zookeeper。zookeeper保证了CP(一致性,分区容错性)。缺点:master节点挂掉时,需要时间重新选择master,这段时间内注册中心将不可用。
- 注意:服务端可消费端注册成功后,通讯只走socket服务器,不会经过注册中心。