dubbo总结

dubbo官网配置
https://dubbo.apache.org/docs/v2.7/user/references/protocol/rest/

底层使用netty框架,解决了jdk nio中空轮询问题。简化jdk nio 复杂操作。屏蔽selector channel buffer 难于理解的API操作。
Dubbo内置了4种负载均衡策略:
RandomLoadBalance:随机负载均衡。随机的选择一个。是Dubbo的默认负载均衡策略。
RoundRobinLoadBalance:轮询负载均衡。轮询选择一个。
LeastActiveLoadBalance:最少活跃调用数,相同活跃数的随机。活跃数指调用前后计数差。使慢的 Provider 收到更少请求,因为越慢的 Provider 的调用前后计数差会越大。
ConsistentHashLoadBalance:一致性哈希负载均衡。相同参数的请求总是落在同一台机器上。

参照:https://mp.weixin.qq.com/s/gJ4L2o8fAXnTTxBdyxMJWA
Dubbo的核心功能主要包含:

1.远程通讯:dubbo-remoting模块, 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。

2.集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。

3.自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。

调用过程图:

•1.Proxy持有一个Invoker对象,使用Invoker调用
•2.之后通过Cluster进行负载容错,失败重试
•3.调用Directory获取远程服务的Invoker列表
•4.负载均衡
◾用户配置了路由规则,则根据路由规则过滤获取到的Invoker列表
◾用户没有配置路由规则或配置路由后还有很多节点,则使用LoadBalance方法做负载均衡,选用一个可以调用的Invoker
•5.经过一个一个过滤器链,通常是处理上下文、限流、计数等。
•6.会使用Client做数据传输
•7.私有化协议的构造(Codec)
•8.进行序列化
•9.服务端收到这个Request请求,将其分配到ThreadPool中进行处理
•10.Server来处理这些Request
•11.根据请求查找对应的Exporter
•12.之后经过一个服务提供者端的过滤器链
•13.然后找到接口实现并真正的调用,将请求结果返回

posted @ 2021-06-16 19:33  倔强的老铁  阅读(54)  评论(0编辑  收藏  举报