dubbo笔记

dubbo笔记,第1张

1,dubbo是什么

dubbo是阿里巴巴开源的,基于JAVA的 RPC (Remote Procedure Call)分布式服务框架。现已成为Apache基金孵化项目

2,为什么要使用dubbo

dubbo内部使用了Netty,zookeeper,保证了应用的高可用性和高性能。使用dubbo可以将核心业务抽取出来,最为独立的服务,并逐渐发展成稳定的服务中心。这样就可以复用灵活拓展,满足前端多变的市场需求,最重要的一点是,分布式架构能够承受更大规模的并发量

3、Dubbo 和 Spring Cloud 有什么区别?

两者没有关联,非要说区别。1,通信方式不同:dubbo使用的是RPC通信,Spring Cloud使用的是>

答案是肯定可以的,我将从下面几点进行说明:

1dubbo 的调用流程

2Dubbo整体设计

3从源码上说明注册中心挂了还是可以继续通信的


Dubbo 调用流程


架构图


流程说明:

1Provider(提供者)绑定指定端口并启动服务

2提供者连接注册中心,并发本机IP、端口、应用信息和提供服务信息发送至注册中心存储

3Consumer(消费者),连接注册中心 ,并发送应用信息、所求服务信息至注册中心

4注册中心根据 消费 者所求服务信息匹配对应的提供者列表发送至Consumer 应用缓存

5Consumer 在发起远程调用时基于缓存的消费者列表择其一发起调用。

6Provider 状态变更会实时通知注册中心、在由注册中心实时推送至Consumer


这么设计的意义:

Dubbo 整体设计

其协作流程如下:

从源码上说明注册中心挂了还是可以继续通信的


首先要把消费者注册到Zookeeper注册中心

然后使用RegistryDirectory 监听一下几个目录(会自动触发一次去获取这些目录上的当前数据)

当前所引入的服务的动态配置目录:/dubbo/config/dubbo/orgapachedubbodemoDemoService:111:g1configurators

比如监控providers 目录:


当有服务提供者注册,zookeeper会自动推动给订阅的消费者,然后转换为invoker存储到缓存中



我们在看调用时的代码:

我们看到 FailoverClusterInvoker 的doInvoke方法

Invoker invoker = select(loadbalance, invocation, copyInvokers, invoked);

此方法根据负载均衡器去缓存中获取一个invoker,

上面的 copyInvokers 就是上面我们缓存进去的 List

invokers = routerChainroute(getConsumerUrl(), invocation);


总结

在我们系统启动时,已经缓存了注册中心上的所有服务,后续的注册中心挂了只会影响到后续则注册,不会影响调用!

Dubbo分布式的RPC,微服务框架,

包括三个关键功能:基于接口的远程调用,容错与负载均衡,服务自动注册与发现。

Dubbo使得调用远程服务就像调用本地java服务一样简单。

参考Dubbo官方文档:包括实现细节,远程调用细节,服务提供者暴露服务。

主要流程。

1、provider向注册中心去注册

2、consumer从注册中心订阅服务,注册中心会通知consumer注册好的服务

3、consumer调用provider

4、consumer和provider都异步的通知监控中心

基于zk作为注册中心:

提供者在启动时,向注册中心zk 注册自己提供的服务。

消费者在启动时,向注册中心zk 订阅自己所需的服务。

所以是可以的,消费者在启动时,消费者会从zk拉取注册的生产者的地址接口等数据,缓存在本地。每次调用时,按照本地存储的地址进行调用,消费者本地有一个生产者的列表,他会按照列表继续工作,倒是无法从注册中心去同步最新的服务列表,短期的注册中心挂掉是不要紧的,但一定要尽快修复,挂掉是不要紧的,但前提是你没有增加新的服务,如果你要调用新的服务,则是不能办到的

1、是否在spring mvc的controller中调用dubbo的service? 如果是从springmvc 的controller调用service,在service中调用dubbo,存在的一个好处是,可以单元测试,并且比较容易,如果不需要在service中单元测试,


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12905045.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-28
下一篇 2023-05-28

发表评论

登录后才能评论

评论列表(0条)

保存