当前位置:   article > 正文

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

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

前言

     本文转自 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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

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

三、解决方法

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/499564
推荐阅读
相关标签
  

闽ICP备14008679号