服务应用突然宕机了?别怕,Dubbo 会帮你自动搞定这一切!

楼下小黑哥 小黑十一点半


听说猫猫可以增加点击量~
某日中午,午睡正香的时候,接到系统的报警电话,提示生产某物理机异常宕机了,目前该物理机已恢复,需要重启上面部署的应用。

这时瞬间没有了睡意,登上堡垒机,快速重启了应用,系统恢复正常。本想着继续午睡,但是已经没有了睡意。

旁边的小师弟(我们叫他小灰吧)刚才在我们边上,目睹这一切,然后向我请教个问题。

「小灰:」

黑哥,刚才应用突然宕机,会不会对交易有影响啊?

「小黑:」

影响确实会有,不过也不大,就当时应用正在运行那些那些交易会受到影响。

「小灰:」

不对啊,我们现在系统架构是下面这样。


我们这次宕机的是业务逻辑层,那按照目前使用 Dubbo 轮询的负载均衡方式,不是还会有交易分发到宕机那台应用上,这些交易请求显然会异常。

运气差点,不是会有一半交易请求都会有问题吗?

「小黑:」

没错,我们的系统架构图确实如说的一样。

不过你说的这个问题,它是不存在的。

这是因为 Dubbo 内部会自动帮我们的摘除宕机的应用节点。

「小灰:」

啥?Dubbo 内部还有这功能啊?黑哥你给我讲讲原理呗!

「小黑:」

可以啊,不过讲这个原理之前,我们首先需要了解 Dubbo 服务注册发现流程。

我看你最近一直在看『深入理解 Apache Dubbo 与实战』,这本书确实不错,里面框架原理,代码细节都讲的很透彻。

你应该已经了解了 Dubbo 服务注册发现流程,那你先跟我简单讲讲原理吧。

「小灰拿起纸笔,在上面画了个图:」

Dubbo 服务注册发现流程
恩,我当前了解的还不是很深,那我先聊聊目前我知道的。

我们目前使用 「ZooKeeper」 当做服务注册中心,「ZooKeeper」 可以简单理解成是一个 「KV」系统,内部是一个树形的数据结构。

Dubbo 默认将会在 「ZooKeeper」 中创建一个四层的数据结构,从上到下分别为:

  • Root
  • Service
  • Category
  • URL
    其中 「Root」 层是注册中心分组,默认命名为 dubbo。我们可以通过修改 <dubbo:registry> 中的 group 属性修改默认值,这样修改之后不同分组的 dubbo 服务不会互相影响,也不会互相调用,可以用于环境隔离。

接下来 「Service」 就是服务类的全路径,包括包路径。

「Service」 层下面就是 「Category」 层,这其中总共有四类目录(上面图形只画了两种),分别为:

  • providers:包含服务提供者 URL 元数据信息
  • consumers:包含消费者 URL 元数据信息
  • routers:包含消费者路由策略的 URL 元数据信息
  • configurators:包含动态配置元数据信息
    最后一层就是具体 Dubbo 服务 URL,类似如下:
dubbo://2.0.1.13:12345/com.dubbo.example.DemoService?xx=xx

「小黑:」

没错,这个内部结构你理的还是蛮清晰的么!

平常使用的情况下,我们重点关注 「providers」 以及 「consumers」 就好了。如果我们需要配置服务路由信息以及动态配置,那我们需要在 Dubbo-Admin 服务治理中心下发配置。这时 routers 与 configurators 就会增加相关配置。

「小灰:」

嘿嘿

©著作权归作者所有:来自51CTO博客作者mb5ff59251db416的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 手机没网了,却还能支付,这是什么原理?|原创
  2. 收款神器!解读聚合收款码背后的原理|原创
  3. 从无到有,支付路由系统升级打怪之路|原创
  4. 【前端词典】Vue 响应式原理其实很好懂
  5. Linux基础-14day-Linux系统服务管理
  6. 支付路由系统演进史
  7. 聊聊对账系统的设计方案
  8. 深入剖析 RSA 密钥原理及实践

随机推荐

  1. Android之Handler用法总结
  2. [zz] 分析Android(安卓)根文件系统启动过
  3. Oprofile在Android中的应用
  4. Android shell 系统命令
  5. android常用框架
  6. android attr.xml文件
  7. Android: Linear Layout and weight
  8. Android用户权限大全
  9. ToggleButton
  10. Android 画椭圆