分布式系列Dubbo源码下实现应用容器内部署

Posted 程序猿小秘圈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分布式系列Dubbo源码下实现应用容器内部署相关的知识,希望对你有一定的参考价值。


Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring 框架无缝集成。

使用docker默认的网络设置bridge,启动dubbo时,会在注册中心zookeeper上把provider注册成为的docker的内部IP,同一宿主上的容器互访没有问题,但是这样宿主外的机器却无法访问.解决这个问题过程如下

【分布式系列】Dubbo源码下实现应用容器内部署开心每一天

Dubbo源码实现应用容器内部署

一,改默认网络设置为host

聪明的读者看到这,已经能很快知道通过 docker run --net=host ... 实现容器绑定宿主ip可以解决外部访问的问题,在bing上搜到的仅有的两篇关于dubbo在docker内部署的文章,也是这么描述的。

但是,这满足不了我的要求,容器内应用要暴露的不仅仅只有dubbo的端口,还有些其它的端口,绑定了主机ip,会造成同一台宿主上的其它容器为了避免端口冲突,不得不修改暴露的端口号,问题扩散,所以放弃,当然,如果你打算一台宿主只部署一个容器,这个还是可以采用的

通过第三方工具pipework给容器分配固定ip,这个需要给容器配置网卡,并且需要对容器做些设置,操作过于复杂,考虑到部署以后要移交给公司的运维人员,并且移植性差,所以没有采用

三, 深度修改dubbo源码

通过深度修改dubbo源码,可以实现用宿主的ip注册到zookeeper上,然后让netty启动服务时绑定容器内部ip,但考虑到dubbo已经是个相对稳定的工程,且代码量庞大,过度修改风险太大,我也不想改动太多,造成一些隐藏的bug,给产品带来风险。

【分布式系列】Dubbo源码下实现应用容器内部署

四,配合docker,部分修改源码

最后,这个问题终于解决了。




以上是关于分布式系列Dubbo源码下实现应用容器内部署的主要内容,如果未能解决你的问题,请参考以下文章

解密 Dubbo 三大中心的部署架构

性能测试二十八:环境部署之Dubbo部署

解密 Dubbo 三大中心的部署架构

dubbo源码分析系列——项目工程结构介绍

dubbo系列dubbo启动过程源码解析

分布式RPC架构:Dubbo应用架构解析!使用Dubbo实现负载均衡