业务需求:使用python flask框架和java spring boot框架共同注册到nacos中,在由spring cloud gateway分配路由。
flaskDome:
from flask import Flask
app = Flask(__name__)
@app.route('/python')
def test():
return "这是python flask框架接口,您调用成功"
if __name__ == '__main__':
app.run(host='127.0.0.1',port=8080 )
接口路由:localhost:8080/python
python服务注册:
import threading
import time
import requests
import json
def register():
//服务所在ip和端口号、服务名称
params = {'ip': '127.0.0.1', 'port': '8080','serviceName':'service-prediction-ai'}
//服务器nacos地址
url = "http://localhost:8848/nacos/v1/ns/instance"
res = requests.post(url, params=params)
print("注册状态:"+res.text)
def service_beat():
while True:
params = {'ip': '127.0.0.1', 'port': '8080','serviceName':'service-prediction-ai'}
url = "http://127.0.0.1:8848/nacos/v1/ns/instance/beat"
res = requests.put(url,params=params)
print("已注册心跳服务响应状态: {}".format(res.status_code))
time.sleep(5)
if __name__ == "__main__":
register()
threading.Timer(5,service_beat).start()
- 注册成功后在nacos中可以查看的到(这是在已经注册和部署好gateway之后)
配置gateway:
spring cloud gateway 部署在8000端口,所有接口都可以通过8000端口访问到其他接口
在gateway配置文件application.properties中添加
spring.cloud.gateway.routes[1].id=service-prediction-ai spring.cloud.gateway.routes[1].uri=lb://service-prediction-ai spring.cloud.gateway.routes[1].predicates=Path=/digitalPigeon/predictionAi/** spring.cloud.gateway.routes[1].filters=StripPrefix=2
接口原本路由:localhost:8080/python
由gateway代理后:localhost:8000/digitalPigeon/predictionAi/python
那么这样springboot后端接口和flask后端接口都可以通过gateway的8000端口访问。