FastApi通过nacos注册 实现SpringCloudGateway服务调用

安装依赖

pipenv install apscheduler

pipenv install nacos-sdk-python

编写注册方法 app/nacos.py

import nacos
from .settings import settings

client = nacos.NacosClient(
    settings.SERVER_HOST,
    namespace=settings.SERVER_NAMESPACE_ID)



async def beat():
    client.add_naming_instance(
        settings.SERVICE_NAME,settings.SERVICE_IP,settings.SERVICE_PORT,
        group_name=settings.SERVICE_GROUP_NAME)


# 微服务注册nacos
def register_nacos():
    client.add_naming_instance(
        settings.SERVICE_NAME,settings.SERVICE_IP,settings.SERVICE_PORT,
        group_name=settings.SERVICE_GROUP_NAME)

编写配置类


import os
from pydantic import BaseSettings

#  None
fast_api_env = os.environ.get('FAST_API_ENV')


class Development(BaseSettings):
    MODEL = 'dev'

    DB_URL = r'mysql://root:123456@127.0.0.1:3306/fastapi'
    MODULES = {'models': ['app.models.users']}

    # db_url='mysql://root:123456@127.0.0.1:3306/fastapi',
    # db_url='sqlite:/fastapi.db'
    JWT_TOKEN_EXPIRE_MINUTES: int = 120  # 2小时
    JWT_SECRET_KEY: str = "(-ASp+_)-Ulhw0848hnvVG-iqKyJSD&*&^-H3C9mqEqSl8KN-YRzRE"

    SERVER_HOST='10.0.0.192:8848'
    SERVER_NAMESPACE_ID='5fa2f06b-1959-4b32-9060-81e49e54dfdd'
    SERVICE_GROUP_NAME='dev'
    SERVICE_NAME='fastapi-service'
    SERVICE_IP='10.0.0.193'
    SERVICE_PORT=8000



# 生产配置
class Product(BaseSettings):
    MODEL = 'pro'


settings = Development() if fast_api_env != 'dev' else Product()

主入口调用实现注册

from fastapi import FastAPI,Form,Request,Query,WebSocket
from pydantic import BaseModel
import uvicorn
from app.nacos import register_nacos,beat


app=FastAPI()

# 微服务注册
register_nacos()

心跳

from apscheduler.schedulers.asyncio import AsyncIOScheduler

@app.on_event('startup')
def init_scheduler():

    scheduler = AsyncIOScheduler()
    scheduler.add_job(beat, 'interval', seconds=5)
    scheduler.start()

注册结果

 服务调用测试

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Nacos是一个分布式的服务注册和发现系统。Spring Cloud Gateway是开源的网关,可以实现动态路由。结合Nacos和Spring Cloud Gateway可以实现动态路由的功能。 下面是通过Nacos实现Spring Cloud Gateway动态路由的步骤: 1. 添加Nacos组件。在pom.xml文件中添加以下依赖: ``` <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> ``` 2. 实现Spring Cloud Gateway注册Nacos的功能。 在application.yml文件中添加以下配置: ``` spring: application: name: gateway-service cloud: gateway: discovery: locator: enabled: true lower-case-service-id: true ``` 其中,将enabled设置为true,表示启用Spring Cloud Gateway服务发现功能;将lower-case-service-id设置为true,表示服务名全部转换为小写。 3. 实现动态路由。 在Nacos中创建config和route两个配置。config配置用来存放动态路由信息,route配置用来存放每个服务的路由信息。 在route配置中添加以下配置: ``` spring: cloud: gateway: routes: - id: user-service uri: loadbalancer://user-service predicates: - Path=/users ``` 其中,id表示服务名,uri表示服务的负载均衡地址,predicates表示路由谓语,可以是Path、Query等。 在config配置中添加以下配置: ``` spring: cloud: gateway: discovery: locator: enabled: true lower-case-service-id: true routes: - id: user-service predicates: - Path=/api/users/** filters: - StripPrefix=1 uri: lb://user-service metadata: version: 1.0 ``` 其中,id表示服务名,predicates表示路由谓语,filters表示过滤器,StripPrefix表示去掉前缀的过滤器,uri表示服务的负载均衡地址,metadata表示元数据信息。 通过以上配置,就可以实现Nacos和Spring Cloud Gateway动态路由的功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

恒云客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值