Dubbo入门了解

Dubbo是什么?

Dubbo是阿里巴巴一个开源的分布式RPC框架,Dubbo详解见

Dubbo架构

Provider:服务提供方
Consumer:调用远程服务的消费方
Registry:服务注册和被发现注册中心
Monitor:监控中心统计调用时间和次数
Container:服务运行容器

调用关系:

Container负责启动,加载服务提供者Provider;

Provider启动时,向注册中心注册自己的服务;

Consumer启动向注册中心请求自己需要的服务;

Registry就会把提供者的地址给消费者;

服务的消费者和提供者在内存中累计调用次数和时间,会定时每分钟统计数据发送到Monitor;

Dubbo如何使用?

Dubbo是采用Spring配置方式

发布服务:

<!-- 和本地服务一样实现远程服务 -->
<bean id="xxxService" class="com.xxx.XxxServiceImpl" />
<!-- 增加暴露远程服务配置 -->
<dubbo:service interface="com.xxx.XxxService" ref="xxxService" />

调用服务:

<!-- 增加引用远程服务配置 -->
<dubbo:reference id="xxxService" interface="com.xxx.XxxService" />
</bean>

注册中心:

Dubbo支持4种注册中心:Zookper,Redis,Multcast.Simple

Zooker:

Apache Hadoop下一个子项目,树形目录结构,支持变更推送,适合Dubbo服务的注册中心

优点:

1.当提供者出现断电等异常停机时,注册中心能自动删除提供者信息。

2.当注册中心重启时,能自动恢复注册数据,以及订阅请求。

3.当会话过期时,能自动恢复注册数据,以及订阅请求。

4.当设置<dubbo:registry check=“false” />时,记录失败注册和订阅请求,后台定时重试。

5.可通过<dubbo:registry username=“admin” password=“1234” />设置zookeeper登录信息。

6.可通过<dubbo:registry group=“dubbo” />设置zookeeper的根节点,不设置将使用无根树。

7.支持号通配符<dubbo:reference group="" version="*" />,可订阅服务的所有分组和所有版本的提供者

Redis:通过心跳检测的方式来发现脏数据, 服务器时间必须相同, 会对服务器造成压力

使用 Redis 的 Key/Map 结构存储数据结构:

  • 主 Key 为服务名和类型

  • Map 中的 Key 为 URL 地址

  • Map 中的 Value 为过期时间,用于判断脏数据,脏数据由监控中心删除

使用 Redis 的 Publish/Subscribe 事件通知数据变更:

  • 通过事件的值区分事件类型:register, unregister, subscribe, unsubscribe

  • 普通消费者直接订阅指定服务提供者的 Key,只会收到指定服务的 register, unregister 事件

  • 监控中心通过 psubscribe 功能订阅 /dubbo/*,会收到所有服务的所有变更事件

Multcast:不需要启动任何节点,只要把地址广播出去,服务提供者和服务消费者就可以互相发现.但是广播受网络结构限制,只适合小型项目或者开发阶段使用,广播地址段: 224.0.0.0 – 239.255.255.255
Simple:注册中心本身就是dubbo的一个服务, 可以减少第三方的依赖.只支持demo形式,不支持集群.

监控中心:(笔者现在用)pinpoint

pinpoint基于java开发,应用性能管理工具,大规模分布式系统;特点:低侵入性,不用改代码;低性能影响;ServerMap可以在直观看到分布式系统拓扑机构和节点的事务数量,Realtime Active Thread Chart ,equest/Response Scatter Chart 请求响应散点图可以看到请求数量和响应时间. Pinpoint最酷的就是可以看到 请求响应的每个层级的执行时间.实时监控活动线程

Dubbo 服务暴露的过程。

Dubbo 会在 Spring 实例化完 bean 之后,在刷新容器最后一步发布 ContextRefreshEvent 事件的时候,通知实现了 ApplicationListener 的 ServiceBean 类进行回调 onApplicationEvent 事件方法,Dubbo 会在这个方法中调用 ServiceBean 父类 ServiceConfig 的 export 方法,而该方法真正实现了服务的(异步或者非异步)发布。

Dubbo 服务降级,失败重试怎么做?

可以通过dubbo:reference 中设置 mock=“return null”。mock 的值也可以修改为 true,然后再跟接口同一个路径下实现一个 Mock 类,命名规则是 “接口名称+Mock” 后缀。然后在 Mock 类里实现自己的降级逻辑;(后期更新:利用mock机制,在单元测试时,经常出现RpcException的错误,提示没有远程的提供者,利用mock反射机制,实现相同接口的实现类MockImpl,让系统在启动默认先使用本地MockImpl的服务)

Dubbo 集群容错

集群容错方案说明
Failover Cluster失败自动切换,自动重试其它服务器(默认)
Failfast Cluster快速失败,立即报错,只发起一次调用
ailsafe Cluster失败安全,出现异常时,直接忽略
Failback Cluster失败自动恢复,记录失败请求,定时重发
Forking Cluster并行调用多个服务器,只要一个成功即返回
Broadcast Cluster广播逐个调用所有提供者,任意一个报错则报错
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值