微服务与单体应用之间的调用问题

server/2024/9/23 8:14:45/

前言

     本文转自 www.microblog.store,且已获得授权

一、问题背景

     microblog.store微博客使用了微服务架构,并且docker容器化部署; 另有一个独立的单体应用,功能是: 作为ip地址解析中心; 微服务集群以及该单体应用都部署到同一台服务器上面,有需要的时候微服务集群里面某个微服务会通过端口号调用该单体应用解析ip地址。
     由于两套系统都是部署在同一台服务器上面,因此,通过服务器内网地址调用比通过公网域名调用节省了CDN解析这个流程,性能上更加良好。

二、问题描述

     为了提高调用响应性能,我选择了服务器内网ip调用,但是,不管我使用 localhost:端口号 还是 127.0.0.1:端口号,都没办法调通,一直提示:

java.net.ConnectException: Connection refused (Connection refused)at java.net.PlainSocketImpl.socketConnect(Native Method)at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)at java.net.Socket.connect(Socket.java:589)at java.net.Socket.connect(Socket.java:538)at sun.net.NetworkClient.doConnect(NetworkClient.java:180)at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)at sun.net.www.http.HttpClient.<init>(HttpClient.java:242)at sun.net.www.http.HttpClient.New(HttpClient.java:339)at sun.net.www.http.HttpClient.New(HttpClient.java:357)at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1220)at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1156)at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1050)at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:984)at com.microblog.tools.web.HttpUtils.sendGet(HttpUtils.java:59)at com.microblog.tools.web.HttpUtils.sendGet(HttpUtils.java:37)at com.microblog.system.task.AutoTask.lambda$logRecord$3(AutoTask.java:85)

     刚开始以为是因为使用了Nacos服务注册与发现导致的问题,可是转念一想,又不太可能,因为我调用方式并不是 服务名:端口号 这种方式; 思来想去,终于定位到了为题的关键: 我使用了Docker容器化部署 ,这样就导致每个微服务都有自己独立的运行环境,那么,通过 localhost:端口号 / 127.0.0.1:端口号 这样的方式调用时,指向的就是当前微服务所在的容器环境,当然找不到了.

三、解决方法

     上文所述,通过 localhost或者127无法调通,是因为docker容器化部署的原因,那么就好解决了:
我么可以通过 ip addr 查看服务器物理机上面的内网ip,获取到服务器内网ip以后,然后通过 内网ip:端口 这样就能掉通了.


http://www.ppmy.cn/server/21211.html

相关文章

筛选日志并生成序列化文件

1.在idea中创建项目 selectData. 2.添加依赖&#xff0c;插件包&#xff0c;指定打包方式&#xff0c;日志文件 大家可以直接从前面项目复制。 3.本次只需要进行序列化操作&#xff0c;所以不需要Reducer模块&#xff0c;编写Mapper模块 package com.maidu.selectdata;import…

Windows11下Docker使用记录(三)

Docker使用记录&#xff08;三&#xff09; 1. 创建和管理volume2. 创建一个container挂载至本地volume3. docker -v和--mount的区别4. volume driver5. container间共享内容6. 从volume 中恢复container 数据 前天电脑出现了bug&#xff0c; Docker Desktop 里所有的 contai…

【VUE】Vue中实现树状表格结构编辑与版本对比的详细技术实现

Vue中实现树状表格结构编辑与版本对比的详细技术实现 在Vue中&#xff0c;创建一个可编辑的树状表格并实施版本对比功能是一种需求较为常见的场景。在本教程中&#xff0c;我们将使用Vue结合Element UI的el-table组件&#xff0c;来构建一个树状表格&#xff0c;其中包含添加、…

微信小程序 扩展Page页面的Mixins

前景&#xff1a; 在原生小程序的开发过程中&#xff0c;发现有很多页面使用了几乎完全一样的逻辑&#xff0c;例如&#xff1a;我们会遇到有部分功能需要登录之后才能访问&#xff0c;这个登录的逻辑就可以用封装成公共的逻辑&#xff0c;在需要的地方直接引用就可以了。 但…

vivado学习笔记——ROM IP核调用

ROM为只读存储器。可以从任意地址上读取数据&#xff0c;但是不能写入。所以ROM中的数据&#xff0c;就需要提前存放进去。在IP核中&#xff0c;可以通过.coe文件进行数据存放&#xff0c;文件格式可以参考Xilinx官方标准。 使用matlab生成.coe文件&#xff0c;数据为正弦波波形…

【Elasticsearch<三>✈️✈️】常见基本属性的用法以及与MySQL的区别

目录 &#x1f378;前言 &#x1f37b;一、索引 1.1 映射关系 &#xff08;mappings) 1.2 映射关系查看 &#x1f37a;二、文档 2.1 删除文档 2.2 更新文档 2.3 批量操作 &#x1f379;三、高级查询&#xff08;Query 检索) &#x1f377;四、章末 &#x1f378;前言 继本…

stm32_HAL_串口不定长数据接收发送

串口代码思路//不包括初始化 变量 uint8_t tx1[256];//缓冲区uint8_t Tx1_size0;//记录数据的个数 接收 产生第一个数据接收-----进入中断----复制数据-----继续接收----在进入中断----复制数据---在接收直到串口第一次数据全部接收完 中断源码 利用中断经行计算字符个数…

MySQL数据库总结

作者&#xff1a;爱塔居-CSDN博客 专栏&#xff1a;数据库 目录 前言 一、数据库操作 1.1 创建数据库 1.2 显示当前数据库 1.3 使用数据库 1.4 删除数据库 二、表的操作 2.1 查看表结构 2.2 创建表 2.3 删除表 三、表的增删改查操作&#xff08;CRUD) 3.1 新增 3.…