Apache Dubbo怎么还占着两端口,红框这个端口在哪可以关闭?
这个是3.1.0的版,会启三个端口
最下面那个端口,每个启动,都是随机的。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在使用 Apache Dubbo 时,您提到的“占用多个端口”问题,通常与 Dubbo 的服务通信机制和配置有关。以下是详细分析和解决方法:
Dubbo 在运行时会默认启动以下几种类型的端口: - 服务提供者(Provider)端口:用于接收来自消费者的 RPC 请求。 - 注册中心端口:用于与注册中心(如 ZooKeeper、Nacos 等)通信。 - Telnet 管理端口:用于调试和管理 Dubbo 服务。
在您的描述中,提到“随机端口”,这通常是由于 Dubbo 的动态端口分配机制导致的。如果未明确指定端口号,Dubbo 会自动分配一个随机端口。
要关闭或修改 Dubbo 启动的端口,可以通过以下方式进行配置:
服务提供者的端口是 Dubbo 最核心的通信端口。如果您希望关闭或修改该端口,可以在 application.properties
或 dubbo.xml
文件中进行配置。
通过 application.properties
配置:
dubbo.protocol.port=20880
将 20880
替换为您希望使用的固定端口号。如果设置为 -1
,则表示禁用该协议的监听端口。
通过 dubbo.xml
配置:
<dubbo:protocol name="dubbo" port="20880" />
Telnet 端口主要用于调试和管理 Dubbo 服务。如果您不需要该功能,可以通过以下方式关闭: - 通过 application.properties
配置:
dubbo.application.qos-enable=false
dubbo.xml
配置:
<dubbo:application qos-enable="false" />
注册中心的端口由所使用的注册中心(如 ZooKeeper、Nacos 等)决定。如果您希望关闭或修改注册中心的端口,请参考对应注册中心的文档进行配置。
Dubbo 启动时可能会分配随机端口,原因包括: - 未显式指定端口号:Dubbo 默认会分配一个随机端口。 - 多协议支持:如果启用了多个协议(如 dubbo
和 rest
),每个协议可能会占用不同的端口。
解决方法: - 显式指定所有协议的端口号,避免随机分配。例如:
dubbo.protocol.dubbo.port=20880
dubbo.protocol.rest.port=8080
根据阿里云安全公告,Dubbo 的端口暴露可能带来安全风险,尤其是反序列化漏洞(如 CVE-2020-1948、CVE-2021-36162 等)。因此,建议采取以下措施: - 限制端口访问:通过阿里云安全组功能,仅允许可信 IP 访问 Dubbo 服务端口。 - 升级到最新版本:确保 Dubbo 版本为最新稳定版(如 3.1.0 及以上),以修复已知漏洞。 - 更换序列化方式:避免使用 Hessian 序列化,改用更安全的序列化方式(如 JSON)。
application.properties
或 dubbo.xml
文件,显式指定端口号。qos-enable=false
关闭。通过上述步骤,您可以有效控制 Dubbo 启动的端口数量,并降低潜在的安全风险。
阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。