【Python】Python注册微服务到nacos

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
    portint服务实例port
    namespaceId字符串命名空间ID
    weightdouble权重
    enabledboolean是否上线
    healthyboolean是否健康
    metadata字符串扩展信息
    clusterName字符串集群名
    serviceName字符串服务名
    groupName字符串分组名
    ephemeralboolean是否临时实例
  • 返回参数:

    返回代码描述语义
    400Bad Request客户端请求中的语法错误
    403Forbidden没有权限
    404Not Found无法找到资源
    500Internal Server Error服务器内部错误
    200OK正常
  • 请求测试:

    请求接口后,在Nacos页面出现注册的服务,如下:

    查看详细信息

Nacos服务检测接口:

  • 请求地址:/nacos/v1/ns/instance/beat
  • 请求方式:PUT

  • 请求参数:

    名称类型是否必选描述
    serviceName字符串服务名
    ip字符串服务实例IP
    portint服务实例PORT
    namespaceId字符串命名空间ID
    groupName字符串分组名
    ephemeralboolean是否临时实例
    beatJSON格式字符串实例心跳内容
  • 响应参数:

    响应代码描述语义
    400Bad Request客户端请求中的语法错误
    403Forbidden没有权限
    404Not Found无法找到资源
    500Internal Server Error服务器内部错误
    200OK正常
  • 请求测试:

将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 指南

  • 14
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python Nacos 是一个 Python 客户端,用于与 Nacos 注册中心进行交互。Nacos 是一个开源的分布式系统服务发现、配置管理和服务管理平台。它可以帮助开发人员实现微服务架构中的服务注册和发现、配置管理等功能。 Python Nacos 提供了一个简单的接口,使得开发人员可以使用 Python 编写代码来与 Nacos 服务器进行交互。通过 Python Nacos,你可以轻松地从 Nacos 服务器中获取配置信息、注册服务、发现服务等操作。 如果你想在 Python 中使用 Nacos,可以使用 Python Nacos 客户端。你可以通过 pip 安装 Python Nacos: ``` pip install nacos-sdk-python ``` 安装完成后,你可以使用以下代码来连接到 Nacos 服务器: ```python from nacos import NacosClient client = NacosClient('localhost', namespace='test', username='nacos', password='nacos') ``` 这里我们指定了 Nacos 服务器的地址为 `localhost`,命名空间为 `test`,用户名为 `nacos`,密码为 `nacos`。你可以根据自己的实际情况进行修改。 接下来,你可以使用 Python Nacos 提供的 API 来与 Nacos 服务器进行交互。例如,你可以使用以下代码来获取一个配置项: ```python data_id = 'test' group = 'DEFAULT_GROUP' content = client.get_config(data_id, group) print(content) ``` 这里我们指定了配置项的 ID 为 `test`,组名为 `DEFAULT_GROUP`。`get_config` 方法会返回该配置项的内容。 除了获取配置项外,Python Nacos 还提供了注册服务、发现服务等功能。具体使用方法可以参考官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值