小小的IP,大大的耦合,你痛过吗?

简介: 使用内网域名来替换内网IP,只是一个很小的优化点,但对于IP解耦却是非常的有效。

什么是耦合?

耦合,是架构中,本来不相干的代码、模块、服务、系统因为某些原因联系在一起,各自独立性差,影响则相互影响,变动则相互变动的一种架构状态。

感官上,怎么发现系统中的耦合?

作为技术人,每每在心中骂上下游,骂兄弟部门,“这个东西跟我有什么关系?为什么需要我来配合做这个事情?”。明明不应该联动,却要被动配合,就可能有潜在的耦合。

因为IP配置,导致上下游必须联动,就是一个耦合的典型案例。

场景还原

线上有一台数据库服务器,因为某种原因,例如磁盘故障,要进行更换。运维部署了一台新机器,DBA部署好数据库实例,做好了数据,只等调用方切换。

如何切换呢?

原来数据库有个旧IP,现在有个新IP,要通知上游将流量切到新IP上来,怎么办?

一一通知上游切换呗。找到上游,抱歉,IP换了,麻烦修改配置重启一下,连到新的IP上去。

image.png

不知道大家工作中会不会遇到这样的场景,数据库或者服务的IP换了,你作为上游的调用方,需要配合修改配置重启。此时你心里可能就在骂娘了,明明变化IP的是别人,为什么配合修改配置重启的人是我。

特别的,如果变换IP的是一个基础服务或者一个基础数据库,调用它的上游很多,那么可能A部门、B部门、C部门,要全部找一遍,全部配合修改配置重启。

所以这个因为IP配置使得上下游耦合在一起的案例,其耦合范围非常广的,理想的情况是:谁修改IP,只有一处修改,流量就能默默迁移过去,这就是解耦。

如何解除IP耦合?

常见的方法是:使用内网域名替代内网IP,如果没有做这个优化,强烈的建议马上实施,将配置文件中的内网IP全部干掉,全部改为内网域名。

使用内网域名,就不需要上游配合重启了吗?

假设现在不用内网IP,改用内网域名了,一个服务或者数据库的IP变更,只需要一个地方更改,而不是所有上游更改:

image.png

运维修改内网DNS,将内网域名指向新的IP,如果是短连接调用,未来新的请求流量,自然会切到新的IP上;如果是长连接调用,新的长连接会连到新的IP上,但旧的长连接仍然连接的是旧IP

运维统一将旧IP上的连接切断,如无意外,服务或者数据库的连接池都有重连功能,重连后就会自动连到新IP上去

如此这般,只要运维配合就可以完成IP的迁移,对于所有上游的调用方不需要配合修改配置重启。

使用内网域名来替换内网IP,只是一个很小的优化点,但对于IP解耦却是非常的有效。

目录
相关文章
|
人工智能 网络协议 数据安全/隐私保护
【利用AI让知识体系化】简要了解网络七层协议(一)
【利用AI让知识体系化】简要了解网络七层协议
|
JSON 自然语言处理 Java
ElasticSearch快速入门(2)
ElasticSearch快速入门(2)
302 1
|
分布式计算 运维 Serverless
EMR Serverless Spark PySpark流任务体验报告
阿里云EMR Serverless Spark是一款全托管的云原生大数据计算服务,旨在简化数据处理流程,降低运维成本。测评者通过EMR Serverless Spark提交PySpark流任务,体验了从环境准备、集群创建、网络连接到任务管理的全过程。通过这次测评,可以看出阿里云EMR Serverless Spark适合有一定技术基础的企业,尤其是需要高效处理大规模数据的场景,但新用户需要投入时间和精力学习和适应。
7433 43
EMR Serverless Spark PySpark流任务体验报告
【Hexo】butterfly主题添加备案信息
【Hexo】butterfly主题添加备案信息
1025 0
【Hexo】butterfly主题添加备案信息
|
监控 Linux
cento如何查看网口
【6月更文挑战第29天】cento如何查看网口
971 6
|
Python
使用Matplotlib创建不同类型图表的案例
【4月更文挑战第29天】使用Python的matplotlib库创建了四种基本图形:折线图、散点图、柱状图和饼图。代码分别展示了如何绘制这些图表,包括设置X轴和Y轴标签以及标题。这只是matplotlib的基础,更多图表和高级功能可供进一步学习和探索。
255 1
|
机器学习/深度学习 Python
【Python机器学习专栏】时间序列数据的特征工程
【4月更文挑战第30天】本文探讨了时间序列数据的特征工程,强调其在捕捉季节性、揭示趋势、处理异常值和提升模型性能中的重要性。介绍了滞后特征、移动窗口统计特征、时间戳特征、频域特征和波动率特征等方法,并提供了Python实现示例。通过有效特征工程,可提高时间序列分析的准确性和预测可靠性。
1021 0
|
Ubuntu Linux Windows
无需任何启动盘,在windows系统上一键安装linux(ubuntu)双系统的方法!
            (转载请注明出处http://blog.csdn.net/buptgshengod)         随着学习工作的深入,安装学习linux系统显得尤为重要。但是有些人对于安装linux有些恐惧与陌生感,下面介绍一种傻瓜式安装linux作为第二系统的方法,而且无需分区。        使用的是wubi这款软件。点击进去会提示选择选择一个盘进行安装,选择除了c盘,
1974 0
|
Go 开发工具 git
visual studio code 常用快捷键
visual studio code 常用快捷键
504 0
|
关系型数据库 MySQL Java
Datax及Datax-web 下载使用
Datax及Datax-web 下载使用
1997 0