脚本宝典收集整理的这篇文章主要介绍了Dubbo 学习(一),脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
简介
apache Dubbo是一款微服务开发框架,它提供了RPC通信与微服务治理两大关键能力。这意味着,使用Dubbo开发的微服务,将具备相互之间的远程发现与通信能力,同时利用Dubbo提供的丰富服务治理能力,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。同时Dubbo是高度可扩展的,用户几乎可以在任意功能点去定制自己的实现,以改变框架的默认行为来满足自己的业务需求。
作为一站式微服务解决方案,Dubbo提供了从服务定义、服务发现、服务通信到流量管控等几乎所有的服务治理能力,我们的学习也将主要聚焦在服务发现、通信协议以及流量管理这三个方面。
服务发现
官网上的图足够清晰,服务提供者PRovider将服务注册到注册中心Registry,消费者Consumer通过向注册中心发起订阅获取到Provider的地址清单,之后即可发起调用。Container作为服务运行的容器,而MonITor则是统计服务的调用次数和调用时间的监控中心。
Dubbo支持对接的注册中心有ZooKeePEr、Nacos、redis等等,不过从官网上可以看到Dubbo推荐使用ZooKeeper作为注册中心。
通信协议
Dubbo支持原生的Dubbo协议。除此之外,gRPC、hessian、Http等第三方协议Dubbo也有进行集成并纳入Dubbo的编程与服务治理体系。
协议是RPC的核心,它规范了数据在网络中的传输内容和格式。除必须的请求、响应数据外,通常还会包含额外控制数据,如单次请求的序列化方式、超时时间、压缩方式和鉴权信息等。
协议的内容包含三部分
RPC 协议的设计需要考虑以下内容:
Dubbo缺省协议采用单一长连接和NIO异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。反之,Dubbo缺省协议不适合传送大数据量的服务,比如传文件,传视频等,除非请求量很低。
流量管理
流量管理的本质是将请求根据制定好的路由规则分发到应用服务上,如下图所示:
其中:
Dubbo将整个流量管理分成VirtualService和DestinationRule两部分。当Consumer接收到一个请求时,会根据VirtualService中定义的DubboRoute和DubboRouteDetail匹配到对应的DubboDestination中的subnet,最后根据DestinationRule中配置的subnet信息中的labels找到对应需要具体路由的Provider集群。其中:
这种设计理念很好的解决流量分流和目标地址之间的耦合问题。不仅将配置规则进行了简化有效避免配置冗余的问题,还支持VirtualService和DestinationRule的任意组合,可以非常灵活的支持各种业务使用场景。
参考资料:
http://dubbo.apache.org/zh/
以上是脚本宝典为你收集整理的Dubbo 学习(一)全部内容,希望文章能够帮你解决Dubbo 学习(一)所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。