V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
kestrelBright
V2EX  ›  程序员

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

  •  
  •   kestrelBright · 2022-12-09 09:19:21 +08:00 · 2292 次点击
    这是一个创建于 740 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    13 条回复    2022-12-09 11:46:12 +08:00
    xliao
        1
    xliao  
       2022-12-09 09:21:43 +08:00
    golang 有 sdk 。PHP 也有第三方 sdk 。实在不行可以请求直接 nacos 的 api 封装
    ajaxgoldfish
        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
    kestrelBright
        3
    kestrelBright  
    OP
       2022-12-09 09:27:29 +08:00
    @xliao 不是要用 nacos ,是要用 nacos 里的 java 服务
    mango88
        4
    mango88  
       2022-12-09 09:27:57 +08:00
    调用 nacos 的 api, 根据服务标识 拿到目标服务的 ip 和端口
    kestrelBright
        5
    kestrelBright  
    OP
       2022-12-09 09:28:01 +08:00
    @ajaxgoldfish 是要用 nacos 里的 其他 java 注册的服务
    kestrelBright
        6
    kestrelBright  
    OP
       2022-12-09 09:30:23 +08:00
    @mango88 能获取 nacos 里的 java 服务配置,但里面不会有 ip ,也只是告诉你 openfeign 调用
    winglight2016
        7
    winglight2016  
       2022-12-09 09:32:12 +08:00
    nacos 本来就有网关服务,设定好路由就能访问其他服务了,不要再多此一举自己去获取 ip 和端口了
    nekomiao
        8
    nekomiao  
       2022-12-09 09:34:03 +08:00
    直接 http 调用拿到注册到 nacos 里的服务 ip 和端口不行吗
    https://nacos.io/zh-cn/docs/open-api.html
    xliao
        9
    xliao  
       2022-12-09 10:06:45 +08:00
    @kestrelBright 提问还可以更清晰一点。首先你得知道 nacos 服务注册了哪些 ip 和端口,上面已经说了,sdk 或者 api 都能查询到,然后跨语言调用一般需要考虑 Sidecar 中转服务。
    LeegoYih
        10
    LeegoYih  
       2022-12-09 10:11:49 +08:00
    保证在网络互通的前提下,直接通过实例的 host 和 port 调用就可以了,集群场景一个服务会有多个实例,不知道 nacos-sdk-go 有没有内置的负载均衡实现
    kisick
        11
    kisick  
       2022-12-09 11:15:59 +08:00 via iPhone
    @kestrelBright 不是拿配置信息,可以拿到实例信息的
    kestrelBright
        12
    kestrelBright  
    OP
       2022-12-09 11:25:42 +08:00
    @nekomiao 好的 谢谢
    @xliao 谢谢 下次注意
    angryfish
        13
    angryfish  
       2022-12-09 11:46:12 +08:00
    go 的 nacos sdk 是没带 http 请求负载均衡的,应该是要每次请求是,通过负载接口 SelectOneHealthyInstance 获取存活的 ip 和 port ,然后根据这两个去请求。其他第三方 sdk 没怎么用过,不知道是否有集成负载均衡请求服务的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1030 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 20:34 · PVG 04:34 · LAX 12:34 · JFK 15:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.