现在系统是 lnmp 和 golang 的,只是让用 feign 去调服务,没有 ip 和端口,不知道怎么做,求教
1
xliao 2022-12-09 09:21:43 +08:00
golang 有 sdk 。PHP 也有第三方 sdk 。实在不行可以请求直接 nacos 的 api 封装
|
2
ajaxgoldfish 2022-12-09 09:26:12 +08:00
chatGPT 说的:
nacos 是一个用于构建云原生应用的动态服务发现、配置和服务管理平台。它提供了一系列的 RESTful APIs ,可以通过多种语言来调用 nacos 服务。 例如,在 Java 中可以使用以下代码来调用 nacos 服务: Copy code // 创建一个 NacosClient 对象 NacosClient nacosClient = new NacosClient("127.0.0.1", 8848); // 调用 NacosClient 的相关方法来完成对 nacos 服务的操作 String serviceList = nacosClient.getServiceList(); 在其他语言中,比如 Python 、Node.js 或者 Go 等,可以使用 HTTP 协议来调用 nacos 服务,代码示例如下: Copy code // Python 中的示例代码 import requests response = requests.get("http://127.0.0.1:8848/nacos/v1/ns/service") serviceList = response.text // Node.js 中的示例代码 const request = require('request') request.get('http://127.0.0.1:8848/nacos/v1/ns/service', (error, response, body) => { if (!error && response.statusCode === 200) { const serviceList = body } }) // Go 中的示例代码 import "net/http" response, _ := http.Get("http://127.0.0.1:8848/nacos/v1/ns/service") serviceList, _ := ioutil.ReadAll(response.Body) 需要注意的是,上面的代码仅作为示例,实际应用中可能需要根据实际情况进行调整。 Try again |
3
kestrelBright OP @xliao 不是要用 nacos ,是要用 nacos 里的 java 服务
|
4
mango88 2022-12-09 09:27:57 +08:00
调用 nacos 的 api, 根据服务标识 拿到目标服务的 ip 和端口
|
5
kestrelBright OP @ajaxgoldfish 是要用 nacos 里的 其他 java 注册的服务
|
6
kestrelBright OP @mango88 能获取 nacos 里的 java 服务配置,但里面不会有 ip ,也只是告诉你 openfeign 调用
|
7
winglight2016 2022-12-09 09:32:12 +08:00
nacos 本来就有网关服务,设定好路由就能访问其他服务了,不要再多此一举自己去获取 ip 和端口了
|
8
nekomiao 2022-12-09 09:34:03 +08:00
直接 http 调用拿到注册到 nacos 里的服务 ip 和端口不行吗
https://nacos.io/zh-cn/docs/open-api.html |
9
xliao 2022-12-09 10:06:45 +08:00
@kestrelBright 提问还可以更清晰一点。首先你得知道 nacos 服务注册了哪些 ip 和端口,上面已经说了,sdk 或者 api 都能查询到,然后跨语言调用一般需要考虑 Sidecar 中转服务。
|
10
LeegoYih 2022-12-09 10:11:49 +08:00
保证在网络互通的前提下,直接通过实例的 host 和 port 调用就可以了,集群场景一个服务会有多个实例,不知道 nacos-sdk-go 有没有内置的负载均衡实现
|
11
kisick 2022-12-09 11:15:59 +08:00 via iPhone
@kestrelBright 不是拿配置信息,可以拿到实例信息的
|
12
kestrelBright OP |
13
angryfish 2022-12-09 11:46:12 +08:00
go 的 nacos sdk 是没带 http 请求负载均衡的,应该是要每次请求是,通过负载接口 SelectOneHealthyInstance 获取存活的 ip 和 port ,然后根据这两个去请求。其他第三方 sdk 没怎么用过,不知道是否有集成负载均衡请求服务的
|