赞
踩
Nacos(Naming and Configuration Service)是阿里巴巴开源的一款动态服务发现、配置管理和服务管理平台。它主要用于解决微服务架构中服务发现和配置管理的问题,提供了一站式解决方案。以下是 Nacos 的几个关键功能:
服务发现和健康检查:Nacos支持DNS和HTTP两种服务发现模式,帮助服务找到并相互通信,同时提供服务健康检查机制,确保服务的可用性。
动态配置管理:Nacos提供了集中化的配置管理功能,可以动态地对配置进行管理和推送,支持配置的灰度发布,帮助应用实现配置的动态更新而无需重启。
动态DNS服务:Nacos可以作为一个DNS服务,提供微服务名称到IP地址的解析,实现服务的负载均衡和故障转移。
服务管理:Nacos提供了可视化的管理界面,方便用户对服务进行管理和监控,包括服务的注册、发现、配置和元数据管理。
Nacos默认仅支持Java语言,其他语言客户端如python如果也要使用nacos提供的功能,要看官方说明,如下截图自官方文档:
正如上图官方说明,官方仅支持Java版本客户端,其他语音的客户端由社区来开发和维护,不过好在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 有些库不兼容,更高版本估计也有问题。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。