龙空技术网

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

图灵学院诸葛老师 77

前言:

当前各位老铁们对“netty怎么部署”大致比较珍视,兄弟们都需要了解一些“netty怎么部署”的相关内容。那么小编在网络上网罗了一些对于“netty怎么部署””的相关内容,希望咱们能喜欢,小伙伴们快快来学习一下吧!

引言

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

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

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

一,改默认网络设置为host

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

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

二,给docker 容器配置主机同域的ip地址

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

三, 深度修改dubbo源码

dubbo 提供了host 配置来指定dubbo的服务ip,如果把host设为宿主的ip, 会出现netty绑定ip地址失败,应为容器内和宿主不通,如果一定要这样做,需要打通容器和宿主机器的ip,这又回到方案二了。

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

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

思考良久后,决定只在dubbo 注册provider 时,把provider的ip地址替换成宿主机器ip,netty启动服务时绑定的还是内部IP, 外部应用访问时,通过宿主的端口映射访问容器内的服务。

具体做法就是,容器启动时,给容器添加namehost,修改源码(修改不超过20行),替换dubbo注册provider时的ip地址.

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

总结

以 上就是我对 Java开发大型互联网-Dubbo源码下你不知道如何实现应用容器内部署 问题及其优化总结,分享给大家,觉得收获的话可以点个关注收藏转发一波喔,谢谢大佬们支持!

最后,每一位读到这里的网友,感谢你们能耐心地看完。希望在成为一名更优秀的Java程序员的道路上,我们可以一起学习、一起进步!都能赢取白富美,走向架构师的人生巅峰!

想了解学习Java方面的技术内容以及Java技术视频的内容可加群:722040762 验证码:头条(06 必过)欢迎大家的加入哟!

标签: #netty怎么部署