首页 > Python资料 博客日记
【Python】Python注册微服务到nacos
2024-07-15 15:00:05Python资料围观113次
Python资料网推荐【Python】Python注册微服务到nacos这篇文章给大家,欢迎收藏Python资料网享受知识的乐趣
Python注册微服务到Nacos
1.Nacos部署
-
github 的nacos项目的发布页(Releases · alibaba/nacos · GitHub ),选择所要下载的nacos版本,在nacos下方的assets中选择安装包进行下载。
-
解压nacos安装包到指定目录。
tar -zxvf nacos-server-2.0.3.tar.gz
-
初始化Nacos数据库。
-- 需要先选择数据库 -- 初始化sql脚本位于解压的 nacos/conf 目录下 use nacosdb; source /euansu/apps/nacos/conf/nacos-mysql.sql;
-
修改nacos配置文件。
# nacos/conf/application.properties # 默认的web路由 server.servlet.contextPath=/nacos # web服务端口 server.port=8848 # 数据库配置 db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC db.user.0=nacos db.password.0=nacos
-
启动Nacos服务,这里只是以单机模式启动Nacos。
bin/startup.sh -m standalone
启动完成之后,访问页面进行验证。
如果没有在配置文件中修改密码,这里的用户名和密码是:nacos/nacos,直接登录即可。
2.Nacos验证
Nacos注册接口(注册一个实例服务到Naocs上)
- 请求地址:/nacos/v1/ns/instance
-
请求方式:POST
-
请求参数:
名称 类型 是否必选 描述 ip 字符串 是 服务实例IP port int 是 服务实例port namespaceId 字符串 否 命名空间ID weight double 否 权重 enabled boolean 否 是否上线 healthy boolean 否 是否健康 metadata 字符串 否 扩展信息 clusterName 字符串 否 集群名 serviceName 字符串 是 服务名 groupName 字符串 否 分组名 ephemeral boolean 否 是否临时实例 -
返回参数:
返回代码 描述 语义 400 Bad Request 客户端请求中的语法错误 403 Forbidden 没有权限 404 Not Found 无法找到资源 500 Internal Server Error 服务器内部错误 200 OK 正常 -
请求测试:
请求接口后,在Nacos页面出现注册的服务,如下:
查看详细信息
Nacos服务检测接口:
- 请求地址:/nacos/v1/ns/instance/beat
-
请求方式:PUT
-
请求参数:
名称 类型 是否必选 描述 serviceName 字符串 是 服务名 ip 字符串 是 服务实例IP port int 是 服务实例PORT namespaceId 字符串 否 命名空间ID groupName 字符串 否 分组名 ephemeral boolean 否 是否临时实例 beat JSON格式字符串 是 实例心跳内容 -
响应参数:
响应代码 描述 语义 400 Bad Request 客户端请求中的语法错误 403 Forbidden 没有权限 404 Not Found 无法找到资源 500 Internal Server Error 服务器内部错误 200 OK 正常 -
请求测试:
将Python服务注册到Nacos上至少需要两个接口,一个是实例注册接口,另一个则是心跳接口,只进行了注册,则会出现如下的情况:
时间稍长之后,注册的服务也会消失。
因此,需要按照心跳时间请求nacos服务检测接口,默认是5s。
3.Python注册Nacos服务
Python这里可以通过写一个脚本实现Nacos服务的注册,实现代码如下:
import time
import requests
# 心跳时间
HEARTBEATS_TIME = 5
# Nacos地址
NACOS_URL = 'http://xx.xx.xx.xx:8848/nacos'
# 服务注册路由
NACOR_REGISTER_URL = 'v1/ns/instance'
# 心跳检测路由
NACOS_HEARTBEATS_URL = 'v1/ns/instance/beat'
# Nacos服务注册
def service_register():
"""
Nacos服务注册的接口有以下参数:
ip 服务实例IP
port 服务实例port
namespaceId 命名空间ID
weight 权重
enabled 是否上线
healthy 是否健康
metadata 扩展信息
clusterName 集群名
serviceName 服务名
groupName 分组名
ephemeral 是否临时实例
:return:
"""
# 返回参数
result = {
"code": 200,
"message": "success"
}
# 构造请求参数
params = {
'serviceName': 'python-service',
'ip': 'xx.xx.xx.xx',
'port': 8845
}
response = requests.post(
"{NACOS_URL}/{NACOR_REGISTER_URL}".format(NACOS_URL=NACOS_URL, NACOR_REGISTER_URL=NACOR_REGISTER_URL),
params=params)
if response.status_code != 200:
result["code"] = response.status_code
result["message"] = "服务注册Nacos失败,失败原因:{error_message}".format(error_message=response.text)
return result
if response.text != 'ok':
result["code"] = 500
result["message"] = "服务注册Nacos失败,失败原因:{error_message}".format(error_message=response.text)
return result
return result
def service_beat():
"""
服务心跳,默认是5s一次
:return:
nacos的服务心跳接口有以下参数
serviceName 服务名
ip 服务实例IP
port 服务实例PORT
namespaceId 命名空间ID
groupName 分组名
ephemeral 是否临时实例
beat 实例心跳内容
"""
# 构造请求参数
params = {
"serviceName": "python-service",
'ip': 'xx.xx.xx.xx',
'port': 8845
}
while True:
response = requests.put(
"{NACOS_URL}/{NACOS_HEARTBEATS_URL}".format(NACOS_URL=NACOS_URL, NACOS_HEARTBEATS_URL=NACOS_HEARTBEATS_URL),
params=params)
print("已注册服务,执行心跳服务,续期服务响应状态: {status_code}".format(status_code=response.status_code))
time.sleep(HEARTBEATS_TIME)
def main():
# 注册服务
service_register()
# 服务检测
service_beat()
if __name__ == '__main__':
main()
实现效果:
4.参考文档
nacos文档:Open API 指南
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Anaconda版本和Python版本对应关系(持续更新...)
- Python与PyTorch的版本对应
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python pyinstaller打包exe最完整教程