Java开发大型互联网-Dubbo源码下你不知道如何实现应用容器内部署

Posted 三道湾IT那伙人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java开发大型互联网-Dubbo源码下你不知道如何实现应用容器内部署相关的知识,希望对你有一定的参考价值。

引言

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

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

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

一,改默认网络设置为host

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

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

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

三, 深度修改dubbo源码

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

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

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

总结

以 上就是我对Java开发大型互联网-Dubbo源码下你不知道如何实现应用容器内部署问题及其优化总结,分享给大家!


以上是关于Java开发大型互联网-Dubbo源码下你不知道如何实现应用容器内部署的主要内容,如果未能解决你的问题,请参考以下文章

大型互联网公司Java开发岗位面试题归类!

Dubbo Cluster集群那点你不知道的事。

Dubbo 一些你不一定知道但是很好用的功能

dubbo:9个你不一定知道,但好用的功能

Java大型互联网公司经典面试题,论JDK源码的重要性的无限思考

你不知道的线程池构造方法的那些趣事?