求教大佬其他语言如何调用 nacos 服务

2022-12-09 09:19:21 +08:00
 kestrelBright

现在系统是 lnmp 和 golang 的,只是让用 feign 去调服务,没有 ip 和端口,不知道怎么做,求教

2276 次点击
所在节点    程序员
13 条回复
xliao
2022-12-09 09:21:43 +08:00
golang 有 sdk 。PHP 也有第三方 sdk 。实在不行可以请求直接 nacos 的 api 封装
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
kestrelBright
2022-12-09 09:27:29 +08:00
@xliao 不是要用 nacos ,是要用 nacos 里的 java 服务
mango88
2022-12-09 09:27:57 +08:00
调用 nacos 的 api, 根据服务标识 拿到目标服务的 ip 和端口
kestrelBright
2022-12-09 09:28:01 +08:00
@ajaxgoldfish 是要用 nacos 里的 其他 java 注册的服务
kestrelBright
2022-12-09 09:30:23 +08:00
@mango88 能获取 nacos 里的 java 服务配置,但里面不会有 ip ,也只是告诉你 openfeign 调用
winglight2016
2022-12-09 09:32:12 +08:00
nacos 本来就有网关服务,设定好路由就能访问其他服务了,不要再多此一举自己去获取 ip 和端口了
nekomiao
2022-12-09 09:34:03 +08:00
直接 http 调用拿到注册到 nacos 里的服务 ip 和端口不行吗
https://nacos.io/zh-cn/docs/open-api.html
xliao
2022-12-09 10:06:45 +08:00
@kestrelBright 提问还可以更清晰一点。首先你得知道 nacos 服务注册了哪些 ip 和端口,上面已经说了,sdk 或者 api 都能查询到,然后跨语言调用一般需要考虑 Sidecar 中转服务。
LeegoYih
2022-12-09 10:11:49 +08:00
保证在网络互通的前提下,直接通过实例的 host 和 port 调用就可以了,集群场景一个服务会有多个实例,不知道 nacos-sdk-go 有没有内置的负载均衡实现
kisick
2022-12-09 11:15:59 +08:00
@kestrelBright 不是拿配置信息,可以拿到实例信息的
kestrelBright
2022-12-09 11:25:42 +08:00
@nekomiao 好的 谢谢
@xliao 谢谢 下次注意
angryfish
2022-12-09 11:46:12 +08:00
go 的 nacos sdk 是没带 http 请求负载均衡的,应该是要每次请求是,通过负载接口 SelectOneHealthyInstance 获取存活的 ip 和 port ,然后根据这两个去请求。其他第三方 sdk 没怎么用过,不知道是否有集成负载均衡请求服务的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/901246

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX