栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

一文聊透 Dubbo 优雅上线,nginx原理及应用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

一文聊透 Dubbo 优雅上线,nginx原理及应用

延迟暴露:http://dubbo.apache.org/zh-cn/docs/user/demos/delay-publish.html

方案二:QOS 命令上线


Dubbo 还为服务提供了另一个配置项:

该配置项配置后,服务将不会发布到注册中心,可能很多 Dubbo 用户不会注意到这个配置,它的作用恰恰是 QOS 指令使用的。

Dubbo 2.5.8 及以上的版本,还提供了一些在线运维命令。为了演示该命令,我们准备一个 GreetingService 的 demo:

public class DubboProvider {

public static void main(String[] args) throws Exception {

ServiceConfig service = new ServiceConfig<>();

service.setApplication(new ApplicationConfig(“dubbo-provider”));

ser

《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享

vice.setRegistry(new RegistryConfig(“nacos://127.0.0.1:8848”));

service.setInterface(GreetingsService.class);

service.setRef(new GreetingsServiceImpl());

service.setRegister(false);

service.export();

System.out.println(“dubbo service started”);

new CountDownLatch(1).await();

}

}

注意我们配置了不发布:service.setRegister(false),由于 QOS 配置是默认打开的,在本地的 22222 端口,可以进入 QOS 控制台。

krito git:(master) ✗ telnet localhost 22222

Trying ::1…

Connected to localhost.

Escape character is ‘^]’.


/ _ / / / // _ ) / _ ) / __

/ // // // // _ |/ _ |/ // /

// _///// ___/

dubbo>ls

As Provider side:

±------------------------------------±–+

| Provider Service Name |PUB|

±------------------------------------±–+

|com.alibaba.edas.api.GreetingsService| N |

±------------------------------------±–+

As Consumer side:

±--------------------±–+

|Consumer Service Name|NUM|

±--------------------±–+

dubbo>online

OK

dubbo>ls

As Provider side:

±------------------------------------±–+

| Provider Service Name |PUB|

±------------------------------------±–+

|com.alibaba.edas.api.GreetingsService| Y |

±------------------------------------±–+

As Consumer side:

±--------------------±–+

|Consumer Service Name|NUM|

±--------------------±–+

dubbo>

如上图所示,我们首先查看到 com.alibaba.edas.api.GreetingsService 服务是未发布的,通过 online 命令手动将服务发布,再使用 ls 查看服务列表时,已经显示服务处于发布状态了。

除了使用 telnet,还可以通过 HTTP 访问:

curl localhost:22222/online

小 tips:在使用 SpringBoot 注解式声明一个 Service 时,register 属性会失效,在 xml 或者 API 方式下声明则运行正常,怀疑是 dubbo-spring-boot-starter 的一个 bug。

大家在 SpringBoot 下使用 Dubbo 需要留意类似的问题,之前有过一些属性在 SpringBoot 注解中未解析或为提供注解配置的案例,在使用时需要注意。

本节参考 Dubbo 官方文档

服务配置说明:http://dubbo.apache.org/zh-cn/docs/user/references/xml/dubbo-service.html

QOS:http://dubbo.apache.org/zh-cn/docs/user/references/qos.html

最佳实践


本文介绍了两种 Dubbo 的机制:

  • 方案一:延迟发布(delay=5000)

  • 方案二:不发布 + QOS 指令发布(register=false)

想要实现优雅上线,可以采取适合你系统的方式。方案一延迟发布的优势在于实现简单,但具体 delay 多少秒,比较依赖系统维护者的经验。方案二使用 QOS 指令,一般依靠于发布系统,当发布系统检测到固定的资源加载完毕这样一个信号时,自动触发上线命令,更加灵活。

当你系统遇到应用启动时流量有所损失时,就应该考虑一下优雅上线的问题了。

读者福利


感谢你看到了这里!

我这边整理很多2021最新Java面试题(含答案)和Java学习笔记,如下图

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/644153.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号