nacos-sdk-python——Python版本Nacos客户端

Nacos(Naming and Configuration Service)是阿里巴巴开源的一款动态服务发现、配置管理和服务管理平台。它主要用于解决微服务架构中服务发现和配置管理的问题,提供了一站式解决方案。以下是 Nacos 的几个关键功能:

  1. 服务发现和健康检查:Nacos支持DNS和HTTP两种服务发现模式,帮助服务找到并相互通信,同时提供服务健康检查机制,确保服务的可用性。

  2. 动态配置管理:Nacos提供了集中化的配置管理功能,可以动态地对配置进行管理和推送,支持配置的灰度发布,帮助应用实现配置的动态更新而无需重启。

  3. 动态DNS服务:Nacos可以作为一个DNS服务,提供微服务名称到IP地址的解析,实现服务的负载均衡和故障转移。

  4. 服务管理:Nacos提供了可视化的管理界面,方便用户对服务进行管理和监控,包括服务的注册、发现、配置和元数据管理。

Nacos默认仅支持Java语言,其他语言客户端如python如果也要使用nacos提供的功能,要看官方说明,如下截图自官方文档:

其他语言的SDK

官方说明

正如上图官方说明,官方仅支持Java版本客户端,其他语音的客户端由社区来开发和维护,不过好在Python版本的客户端在社区中已经有人开发了——nacos-sdk-python,进入到这个开源项目中看看。

nacos-sdk-python

nacos-sdk-python

简单说明:Nacos OpenAPI 的 Python 实现。

下面来看看是否实现了 nacos 中最基本的配置中心和服务发现功能。

安装

按照文档中说明进行安装。

注意目前仅支持Python 2.7、Python 3.6、Python 3.7,nacos 版本为0.8.0 ~ 1.3.2。稳妥起见以 python3.6 为例展示。

pip install nacos-sdk-python

并且使用 python 的 requests 进行 http 请求模拟服务调用。

pip install requests

配置创建

这里新建一个命名空间名为 demo-app

配置创建

配置中心

首先测下一下 nacos 提供的配置中心功能,即客户端拉去配置中心的配置功能,提前在配置中心创建 Data Id 为 demo-app的配置,写入配置如图所示:
配置内容

python 客户端读取配置中心配置代码如下:

import nacos

# Both HTTP/HTTPS protocols are supported, if not set protocol prefix default is HTTP, and HTTPS with no ssl check(verify=False)
# "192.168.3.4:8848" or "https://192.168.3.4:443" or "http://192.168.3.4:8848,192.168.3.5:8848" or "https://192.168.3.4:443,https://192.168.3.5:443"
SERVER_ADDRESSES = "http://1.94.xx.xx:8848"
NAMESPACE = "c77472dd-768c-42b0-8755-xxxx"

# no auth mode
client = nacos.NacosClient(SERVER_ADDRESSES, namespace=NAMESPACE)
# auth mode
#client = nacos.NacosClient(SERVER_ADDRESSES, namespace=NAMESPACE, username='nacos', password='nacos-xxxx')

# get config
data_id = "demo-app"
group = "DEFAULT_GROUP"
print(client.get_config(data_id, group))

输出如下图所示,可以拉到配置中心的配置信息:

拉去配置

服务调用

下面来演示下 python 客户端如何通过服务发现调用其他服务提供的能力。如下是一个 Java 客户端提供了服务 open-api,主要是一个接口 /hello,该接口功能为返回传入的数据。

服务发现

python客户端使用以下代码进行服务发现并调用服务提供的接口:

import pprint

import requests
import nacos

# Nacos server address and namespace
SERVER_ADDRESSES = "http://1.94.xx.xx:8848"
NAMESPACE = "c77472dd-768c-42b0-8755-xxxx"

# Create a Nacos client
client = nacos.NacosClient(SERVER_ADDRESSES, namespace=NAMESPACE, username='nacos', password='nacos-xxxx')

# Discover service instance
service_name = "open-api"
service_instance = client.list_naming_instance(service_name)
pprint.pprint(service_instance)

instance = service_instance["hosts"][0]
ip = instance['ip']
port = instance['port']

# Construct the service URL
service_url = f"http://{ip}:{port}/open-api/hello"

# Make an HTTP GET request
data = {
    "data": "Hello, CoderJia"
}
response = requests.post(service_url, json=data, headers={"Content-Type": "application/json"})

# Print the response
print(response.status_code)
print(response.json())

执行之后:

服务发现并调用

总结

nacos-sdk-python 这个项目已经实现了 nacos 的python 版本客户端基本功能,不过项目更新比较慢了,测试过程中发 python3.7 有些库不兼容,更高版本估计也有问题。
BVqc-1720323267655)]

总结

nacos-sdk-python 这个项目已经实现了 nacos 的python 版本客户端基本功能,不过项目更新比较慢了,测试过程中发 python3.7 有些库不兼容,更高版本估计也有问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/780295.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++模板元编程(一)——可变参数模板

这个系列主要记录C模板元编程的常用语法 文章目录 引言语法应用函数模板可变参数的打印可变参数的最小/最大函数 类模板 参考文献 引言 在C11之前,函数模板和类模板只支持含有固定数量的模板参数。C11增强了模板功能,允许模板定义中包含任意个(包括0个)…

保研复习 | 数据结构

目录 CH1 绪论☆ 数据项、数据元素、数据结构☆ 逻辑结构和存储结构的区别☆ 顺序存储结构和链式存储结构的比较☆ 算法的重要特性☆ 算法的复杂度 CH2 线性表☆ 单链表 CH3 栈、队列和数组☆ 栈和堆是什么?☆ 栈在括号匹配中的应用☆ 栈在表达式求值中的应用☆ …

Linux中的管道符‘|‘以及SQL(DQL,DCL)

ls 指令 语法: ls [选项][目录或文件] 功能: 对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。 常用选项: -a 列出目录下的所有文件,包括以 . 开头的隐含文件。 -…

【初阶数据结构】深入解析循环队列:探索底层逻辑

🔥引言 本篇将介绍如何实现循环队列并实现过程需要注意的事项,虽然篇幅较小,但是其中逻辑还是值得引人思考的,循环队列可以采用数组或链表实现,这篇将采用数组实现循环队列 🌈个人主页:是店小二…

Webpack: Loader开发 (1)

概述 如何扩展 Webpack?有两种主流方式,一是 Loader —— 主要负责将资源内容翻译成 Webpack 能够理解、处理的 JavaScript 代码;二是 Plugin —— 深度介入 Webpack 构建过程,重塑 构建逻辑。 相对而言,Loader 的职责…

阶段三:项目开发---搭建项目前后端系统基础架构:任务11:搭建项目后台系统基础架构

任务描述 1、了解搭建民航后端框架 2、使用IDEA创建基于SpringBoot、MyBatis、MySQL、Redis的Java项目 3、以原项目为参照搭建项目所涉及到的各个业务和底层服务 4、以原项目为例,具体介绍各个目录情况并参照创建相关文件夹 任务指导 1、讲框架的选择和原理 …

java信号量(Semaphore)

Java中的信号量(Semaphore)是一种用于控制多个线程对共享资源的访问的同步工具。它可以用来限制可以同时访问某些资源的线程数量。Semaphore 提供了一个计数器来管理许可证的获取和释放,每个许可证代表对资源的一次访问权限。 import java…

DB-GPT-PaperReading

DB-GPT: Empowering Database Interactions with Private Large Language Models 1. 基本介绍 DB-GPT 旨在理解自然语言查询,提供上下文感知响应,并生成高精度的复杂 SQL 查询,使其成为从新手到专家的用户不可或缺的工具。DB-GPT 的核心创新在于其私有 LLM 技术,该技术在…

CIRKD

环境不好满足,不建议复现

CSS【详解】长度单位 ( px,%,em,rem,vw,vh,vmin,vmax,ex,ch )

px 像素 pixel 的缩写,即电子屏幕上的1个点,以分辨率为 1024 * 768 的屏幕为例,即水平方向上有 1024 个点,垂直方向上有 768 个点,则 width:1024px 即表示元素的宽度撑满整个屏幕。 随屏幕分辨率不同,1px …

计网_计算机网络概述

2024.07.03:计算机网络概述 第1节 计算机网络概述 1.1 互连网与互联网1.1.1总结1.1.2 因特网(互联网)发展[自行了解] 1.2 计算机网络组成1.2.1 计算机网络组成方式11.2.2 计算机网络组成方式21.2.3 计算机网络组成方式3 1.3 三种交换方式1.3.1 电路交换(1) 电路交换…

Spring源码十五:Bean的加载

上一篇我们通过Spring源码十四:Spring生命周期介绍了refresh的最后两个方法,至此通过前面大概十篇左右的篇幅介绍完了Spring容器初始化,接下来,将进入Spring另外一个模块Bean相关的知识点。 在Spring框架中,Bean加载过…

人工智能时代打工人摸鱼秘籍(1)- 为啥说大模型像人?

人工智能以势不可挡的方式席卷全球。 所有公司,都在削尖脑袋想,如何在在产品、营销、运营、服务和管理上加持大人工智能的能力。 公司在卷生卷死的时候,有一批人已经偷偷在用大模型提(摸)效(鱼)…

从打印到监测:纳米生物墨水助力3D生物打印与组织监测平台?

从打印到监测:纳米生物墨水助力3D生物打印与组织监测平台? 在 3D 组织工程中,纳米生物墨水是将纳米材料与 ECM 水凝胶结合,以提高其打印性和功能性的重要策略。纳米生物墨水可以增强水凝胶的机械性能、导电性、生物活性&#xff…

2024高考作文题“人工智能”

今年开年到现在,明显的感受就是,咨询人工智能机器人的客户比往年更多了。什么原因,是因为人工成本太高了,今年整体经济环境变差,招不起人,所以想用AI机器人来降低用工成本吗? 还是说因为语音线路…

JVM专题之G1垃圾收集器下

索引(记录)的源码的工作流程图如下: CSet(Collection Set 回收集合) 收集集合(CSet)代表每次GC暂停时回收的一系列目标分区。在任意一次收集暂停中,CSet所有分区都会被释放,内部存活的对象都会被转移到分配的空闲分区中。因此无论是年轻代收集,还是混合收集,工作的机…

PsQuerySystemDllInfo逆向

typedef struct _SYSTEM_DLL_ENTRY {ULONG64 type;UNICODE_STRING FullName;PVOID ImageBase;PWCHAR BaseName;PWCHAR StaticUnicodeBuffer; }SYSTEM_DLL_ENTRY, * PSYSTEM_DLL_ENTRY; 返回值为上面的结构体指针 验证 type: fullname inagebase: pwchar basename PWCHAR …

Spring源码十六:Bean名称转化

在上一篇Spring源码十五:Bean的加载 中我们通过前面的案例方法,找到了Spring真正开始创建Bean的入口,也就是doGetBean方法。该方法是Spring框架中Bean创建与获取的核心逻辑,实现了复杂的Bean生命周期管理。通过单例缓存、合并Bean…

NLP简介

自然语言处理( Natural Language Processing, NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。因此,这一领域的研究将涉及自…

保存在FinalShell服务器登录密码忘记了,如何快速获取到

一、从FinalShell获取服务器基本信息 如图操作会导出一个json文件,可以直接保存在桌面,或者其他位置 json格式如下: {"forwarding_auto_reconnect":false ,"custom_size":false ,"delete_time":0 ,"sec…