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源码下你不知道如何实现应用容器内部署的主要内容,如果未能解决你的问题,请参考以下文章