【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          服务实例IPport        服务实例portnamespaceId 命名空间IDweight      权重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_coderesult["message"] = "服务注册Nacos失败,失败原因:{error_message}".format(error_message=response.text)return resultif response.text != 'ok':result["code"] = 500result["message"] = "服务注册Nacos失败,失败原因:{error_message}".format(error_message=response.text)return resultreturn result
​
​
def service_beat():"""服务心跳,默认是5s一次:return:nacos的服务心跳接口有以下参数serviceName 服务名ip          服务实例IPport        服务实例PORTnamespaceId 命名空间IDgroupName   分组名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 指南

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国产通讯芯片D3232介绍,要用于工控主板、工业控制器、程序烧录下载器、仿真器、新能源充电桩等众多涉及RS232通讯的产品

一、应用领域 D3232芯片主要用于工控主板、工业控制器、程序烧录下载器、仿真器、新能源充电桩等众多涉及RS232通讯的产品。 二、基本特性 D3232芯片由两个线路驱动器、两个线路接收器和双电荷泵电路组成,具有HBM>15kV、CDM>2kV的ESD保护能力,并且…

element-ui plus v2.60 终于修复了 radio checkbox 取值不明确的问题,label value 值

element-ui plus v2.60 终于修复了 radio checkbox 取值不明确的问题,label value 值 昨天想反馈这个关于 label 和 value 的问题的时候,发现新版本已经修正这个问题了。 一、ElementUI 旧版关于 label 和 value 的问题 从之前 element-ui 用过来的&a…

两天学会微服务网关Gateway-Gateway网关限流

锋哥原创的微服务网关Gateway视频教程: Gateway微服务网关视频教程(无废话版)_哔哩哔哩_bilibiliGateway微服务网关视频教程(无废话版)共计17条视频,包括:1_Gateway简介、2_Gateway工作原理、3…

Sublime Text 格式化Json文件 之 Pretty Json

需要使用到 Pretty Json插件。 一、安装方法 sublime 下,按快捷键 Comand control p, 输入install Package,然后回车 等几秒钟,加载启动进程完毕后弹出的页面中输入pretty json, 然后回车 等待几秒钟,可以查看Sublime 最下面的…

HUAWEI 华为交换机 配置 MAC 防漂移 防MAC伪造示例

组网需求 某企业网络中,用户需要访问企业的服务器。如果某些非法用户从其他接口假冒服务器的MAC 地址发送报文,则服务器的 MAC 地址将在其他接口学习到。这样用户发往服务器的报文就会发往非法用户,不仅会导致用户与服务器不能正常通信&…

【粉丝福利】一本书讲透ChatGPT,实现从理论到实践的跨越!大模型技术工程师必读

🌼一、前言 OpenAI 在 2022 年 11 月推出了人工智能聊天应用—ChatGPT。它具有广泛的应用场景,在多项专业和学术基准测试中表现出的智力水平,不仅接近甚至有时超越了人类的平均水平。这使得 ChatGPT 在推出之初就受到广大用户的欢迎&#xf…

在Windows 10和11中打开事件查看器的11种方法,总有一种适合你

Windows事件查看器是一个功能强大的工具,可以记录电脑从启动到关机的所有过程。你可以使用它查看有关应用程序错误、不同系统服务生成的警告的详细信息,以及有关驱动程序和服务状态的信息。这就是为什么当你需要识别或解决计算机或设备上的问题时,Windows 11和Windows 10事件…

【金九银十】,架构师花费近一年时间整理出来的安卓核心知识

面试经历 主要是根据回忆总结的(会有遗漏点)。 1. 腾讯(QQ音乐) 腾讯面试涉及到的范围也很广,甚至问到了C、Kotlin Flutter ,也具有一定挑战性的,以下包括腾讯腾讯安卓客户端三面&#xff0c…

国创证券|降准对股市的影响,利好哪些板块?

降准是指央行下调金融机构存款准备金率,是一种宽松的钱银政策,会添加社会上的流动资金,然后推动股市上涨,对股市来说是一种利好,其间利好以下板块: 1、利好房地产板块 央行降准会进步银行可贷资金&#x…

每日一题-链表的中间结点

🌈个人主页: 会编辑的果子君 💫个人格言:“成为自己未来的主人~” 上面是解题题目: 解题思路:快慢指针法--慢指针一次指向下一个,快指针一次指向下两个 解答过程: /*** Definition for singly-linked…

Linux学习-指针与数组

目录 数组和指针的关系 数组指针: 数组和指针的关系代码 指针数组 指针和二维数组的关系 数组传参 数组和指针的关系 一维数组和指针的关系: int a[5] {1,43,5,3,2,}; 数组的数组名a是指向数组第一个元素a[0]的指针常量; a &a…

JRebel and XRebel 插件在IDEA中的安装、激活和使用

1、JRebel安装 1、打开idea->setting->plugins->Marketplace 2、搜索插件JRebel and XRebel,点击安装,然后重启idea 如果左侧出现JRebel & XRebel代表已安装 3.离线安装JRebel 根据自己安装的idea版本进行下载电影的jrebel https://plugi…

1.Zookeeper理论基础

1.Zookeeper的基本概念 是一个分布式应用协调框架 ,java编写的。客户端 /服务端 的架构模式。CP设计(一致性,分区容错) 它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:服务注册服务、状态同步服务、集群管理、分布…

WordPress建站入门教程:忘记数据库名称、用户名和密码了怎么办?

有时候我们需要进入phpMyAdmin管理一些数据库,但是登录phpMyAdmin时却需要我们输入数据库的用户名和密码,但是我们不记得了应该怎么办呢? 其实,我们只需要进入WordPress网站根目录找到并打开wp-config.php文件,就可以…

Git 进阶 高级用法,重要命令记录

本篇文章用于记录Git高级用法,新手可以看我的另一篇文章:Git基础教学。 Git git fetch 是git pull 的细分步骤,git pull 包含了git fetch git pull origin master 上述命令其实相当于git fetch git merge 在实际使用中,git fetc…

如何使用ArcGIS Pro进行坡度分析

坡度分析是地理信息系统中一种常见的空间分析方法,用于计算地表或地形的坡度,这里为大家介绍一下如何使用ArcGIS Pro进行坡度分析,希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的DEM数据,除了DEM数据&…

uniapp报错:request:fail abort statusCode:-1 Chain validation failed

uniapp报错信息记录 场景: 半年没碰过的app,今个儿突然无法登录了。 打开控制台,报错信息如下 {msg: request:fail abort statusCode:-1 Chain validation failed}奇怪的是用 apifox 调用相关的接口,可以正常运行,app却不行。 好…

防坑指南!说说Six Sigma咨询公司排名的那些事

在企业管理领域,六西格玛(Six Sigma)已成为一种流行的质量管理方法。然而,面对众多的Six Sigma咨询公司,如何选择一家真正专业、有实力的合作伙伴,成为了许多企业面临的难题。本文,天行健咨询将…

JVM相关知识

JVM相关知识 🌳1.JVM概述🪴1.1 JVM作用:🪴1.2JVM构成🪴1.3JVM整体结构图 🌳2.类加载子系统🪴2.1作用🪴2.2类加载过程🌱2.2.1加载:🌱2.2.2连接🌱2.2.3初始化 &…

浅谈 Vue3 静态提升和预字符串化

前言 很多朋友在看到 Vue3静态提升 的时候很不理解,不明白这句话到底是什么意思,今天我们就通过这篇日记来搞明白。如果有什么地方描述不正确,请多多指正。 静态类型(前置信息) 判断节点是否为静态类型,…