|
Python注册微服务到Nacos1.Nacos部署github的nacos项目的发布页(Releases·alibaba/nacos·GitHub),选择所要下载的nacos版本,在nacos下方的assets中选择安装包进行下载。解压nacos安装包到指定目录。tar-zxvfnacos-server-2.0.3.tar.gz初始化Nacos数据库。--需要先选择数据库--初始化sql脚本位于解压的nacos/conf目录下usenacosdb;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=UTCdb.user.0=nacosdb.password.0=nacos启动Nacos服务,这里只是以单机模式启动Nacos。bin/startup.sh-mstandalone启动完成之后,访问页面进行验证。如果没有在配置文件中修改密码,这里的用户名和密码是:nacos/nacos,直接登录即可。2.Nacos验证Nacos注册接口(注册一个实例服务到Naocs上)请求地址:/nacos/v1/ns/instance请求方式:POST请求参数:名称类型是否必选描述ip字符串是服务实例IPportint是服务实例portnamespaceId字符串否命名空间IDweightdouble否权重enabledboolean否是否上线healthyboolean否是否健康metadata字符串否扩展信息clusterName字符串否集群名serviceName字符串是服务名groupName字符串否分组名ephemeralboolean否是否临时实例返回参数:返回代码描述语义400BadRequest客户端请求中的语法错误403Forbidden没有权限404NotFound无法找到资源500InternalServerError服务器内部错误200OK正常请求测试:请求接口后,在Nacos页面出现注册的服务,如下:查看详细信息Nacos服务检测接口:请求地址:/nacos/v1/ns/instance/beat请求方式:PUT请求参数:名称类型是否必选描述serviceName字符串是服务名ip字符串是服务实例IPportint是服务实例PORTnamespaceId字符串否命名空间IDgroupName字符串否分组名ephemeralboolean否是否临时实例beatJSON格式字符串是实例心跳内容响应参数:响应代码描述语义400BadRequest客户端请求中的语法错误403Forbidden没有权限404NotFound无法找到资源500InternalServerError服务器内部错误200OK正常请求测试:将Python服务注册到Nacos上至少需要两个接口,一个是实例注册接口,另一个则是心跳接口,只进行了注册,则会出现如下的情况:时间稍长之后,注册的服务也会消失。因此,需要按照心跳时间请求nacos服务检测接口,默认是5s。3.Python注册Nacos服务Python这里可以通过写一个脚本实现Nacos服务的注册,实现代码如下:importtimeimportrequests#心跳时间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服务注册defservice_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) ifresponse.status_code!=200: result["code"]=response.status_code result["message"]="服务注册Nacos失败,失败原因:{error_message}".format(error_message=response.text) returnresult ifresponse.text!='ok': result["code"]=500 result["message"]="服务注册Nacos失败,失败原因:{error_message}".format(error_message=response.text) returnresult returnresultdefservice_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 } whileTrue: 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)defmain(): #注册服务 service_register() #服务检测 service_beat()if__name__=='__main__': main()实现效果:4.参考文档nacos文档:OpenAPI指南
|
|