根据nacos open api Open API 指南
主要是实现以下接口:
创建服务
注册实例
注销实例
删除服务
发送实例心跳
实现demo如下:
一个web服务1 http_server1.py
# coding:utf-8
import socket
from multiprocessing import Process
def handle_client(client_socket):
"""
处理客户端请求
"""
request_data = client_socket.recv(1024)
# print("request data:", request_data)
# 构造响应数据
response_start_line = "HTTP/1.1 200 OKrn"
response_headers = "Server: My serverrn"
response_body = "Hello Python 1"
response = response_start_line + response_headers + "rn" + response_body
# 向客户端返回响应数据
client_socket.send(bytes(response, "utf-8"))
# 关闭客户端连接
client_socket.close()
if __name__ == "__main__":
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(("", 8001))
server_socket.listen(128)
while True:
client_socket, client_address = server_socket.accept()
# print("[%s, %s]用户连接上了" % client_address)
handle_client_process = Process(target=handle_client, args=(client_socket,))
handle_client_process.start()
client_socket.close()
一个web服务2 http_server2.py
# coding:utf-8
import socket
from multiprocessing import Process
def handle_client(client_socket):
"""
处理客户端请求
"""
request_data = client_socket.recv(1024)
# 构造响应数据
response_start_line = "HTTP/1.1 200 OKrn"
response_headers = "Server: My serverrn"
response_body = "Hello Python 2"
response = response_start_line + response_headers + "rn" + response_body
# 向客户端返回响应数据
client_socket.send(bytes(response, "utf-8"))
# 关闭客户端连接
client_socket.close()
if __name__ == "__main__":
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(("", 8002))
server_socket.listen(128)
while True:
client_socket, client_address = server_socket.accept()
# print("[%s, %s]用户连接上了" % client_address)
handle_client_process = Process(target=handle_client, args=(client_socket,))
handle_client_process.start()
client_socket.close()
创建服务 nacos_server_create.py
import requests
params = {'serviceName': 'Python', 'protectThreshold': '0'}
url = "http://localhost:8848/nacos/v1/ns/service"
res = requests.post(url, params=params)
print(res.text)
注册实例1 nacos_instance_create1.py
import requests
params = {'ip': '192.168.20.110', 'port': '8001','serviceName':'Python'}
url = "http://localhost:8848/nacos/v1/ns/instance"
res = requests.post(url, params=params)
print(res.text)
注册实例2 nacos_instance_create2.py
import requests
params = {'ip': '192.168.20.110', 'port': '8002','serviceName':'Python'}
url = "http://localhost:8848/nacos/v1/ns/instance"
res = requests.post(url, params=params)
print(res.text)
实例1发送心跳 nacos_instance_beat1.py
import requests
import json
import time
params = {}
url = "http://localhost:8848/nacos/v1/ns/instance/beat?serviceName=Python&beat=%7b%22ip%22%3a%22192.168.20.110%22%2c%22metadata%22%3a%7b%7d%2c%22port%22%3a8001%2c%22scheduled%22%3atrue%2c%22serviceName%22%3a%22Python%22%2c%22weight%22%3a1%7d"
#模拟持续发送心跳
for num in range(0,2000):
res = requests.put(url, data=json.dumps(params))
print(res.text)
time.sleep(2)
实例2发送心跳 nacos_instance_beat2.py
import requests
import json
import time
params = {}
url = "http://localhost:8848/nacos/v1/ns/instance/beat?serviceName=Python&beat=%7b%22ip%22%3a%22192.168.20.110%22%2c%22metadata%22%3a%7b%7d%2c%22port%22%3a8002%2c%22scheduled%22%3atrue%2c%22serviceName%22%3a%22Python%22%2c%22weight%22%3a1%7d"
#模拟持续发送心跳
for num in range(0,2000):
res = requests.put(url, data=json.dumps(params))
print(res.text)
time.sleep(2)
注销实例 nacos_instance_delete
import requests
params = {}
url = "http://localhost:8848/nacos/v1/ns/instance?serviceName=Python&ip=192.168.1.110&port=8001"
res = requests.delete(url, params=params)
print(res.text)
删除服务 nacos_service_delete.py
import requests
params = {}
url = "http:/localhost:8848/nacos/v1/ns/service?serviceName=Python"
res = requests.delete(url, params=params)
print(res.text)
模拟测试:
启动待接入web服务1,web服务2同1:
可以在浏览器看到启动的服务1,服务2同1:
创建服务:
注册实例1,实例2同1:
发送实例1心跳,实例2同1:
在nacos中可以查看到注册的实例详情:
添加网关配置,并通过网关随机访问两个实例:



