学自蚂蚁课堂项目
dubbo原理图
搭建dubbo-server
- 自定义rpc注解,在需要注册到zk上的类加,标识此类需要注册到zk上
- 将本地服务注册到zk上
- zk上的节点要支持多个,以备之后的集群情况
- 创建netty的服务器端,并添加相应的handler
- 通过handler去解析相应,并利用反射执行相应的方法
- 获取反射调用的结果,再相应给客户端即可
搭建dubbo-client
- 添加服务发现模块
- 添加负载均衡器模块(采用策略模式)
- 消费端根据依赖的接口获取serviceName,去zk上获取服务列表
- 再根据负载均衡策略选出一个节点
- 封装rpcRequest类,将serviceName,methodName,parameterTypes,args封装好
- 利用NettyClient将封装好的rpcRequest类给NettyServer,等待相应的结果
- 获取到结果以后,再将结果返回给调用处即可
项目难点:
-
netty网络传输对象需要注意什么?
注意对象的序列化与反序列化
-
将服务注册到zk上需要注意什么?
-
resful协议格式和json协议格式的区别?
rpc采用的是restful风格,一般采用的序列化协议为MessagePack,传递时的数据为:[value1, value2, value3],优点在于更加节省空间,缺点在于不够灵活
http采用序列化协议一般为json,json采用的是key-value的形式来存值。优点:可读性高,灵活性高。缺点:占用空间带宽比较大
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。