分布式微服务系统架构第131集:fastapi-python工程化FastAPI模板项目

195 阅读5分钟

加群联系作者vx:xiaoda0423

仓库地址:webvueblog.github.io/JavaPlusDoc…

1024bat.cn/

github.com/webVueBlog/…

Fastapi Plus

这是一个Python FastAPI项目工程库,包含DB、Redis、MongoDB、JSON等工具和基础服务类。

1747010050602.png

组件:

这段Markdown代码列出了几个常用的Python库和工具的链接,这些工具在Web开发、数据库操作和缓存管理等方面非常有用。下面是每个工具的简要介绍:

  1. FastAPI:

    • 链接: fastapi.tiangolo.com/
    • 用途: FastAPI是一个现代、快速(高性能)的Web框架,用于构建APIs。它基于标准Python类型提示,使得代码更清晰、更易于维护。
    • 特点: 高性能、异步支持、自动生成文档、支持OAuth2等。
    • 注意事项: 需要Python 3.6及以上版本。
  2. uvicorn:

    • 链接: www.uvicorn.org/
    • 用途: Uvicorn是一个基于ASGI(Asynchronous Server Gateway Interface)的轻量级服务器,用于运行FastAPI等ASGI应用。
    • 特点: 高性能、异步支持、支持WebSocket、易于部署。
    • 注意事项: 需要Python 3.6及以上版本。
  3. SQLAlchemy:

    • 链接: www.sqlalchemy.org/
    • 用途: SQLAlchemy是一个强大的SQL工具包和ORM(对象关系映射)库,用于Python应用程序与数据库之间的交互。
    • 特点: 支持多种数据库、灵活的查询语言、强大的ORM功能。
    • 注意事项: 需要Python 3.6及以上版本。
  4. PyMySQL:

    • 链接: pymysql.readthedocs.io/
    • 用途: PyMySQL是一个纯Python实现的MySQL客户端库,用于连接和操作MySQL数据库。
    • 特点: 纯Python实现、兼容MySQL客户端/服务器协议、支持连接池。
    • 注意事项: 需要Python 3.6及以上版本。
  5. REDIS:

    • 链接: github.com/andymccurdy…
    • 用途: redis-py是一个Python客户端库,用于连接和操作Redis数据库。
    • 特点: 支持Redis的所有数据类型、支持发布/订阅、支持事务等。
    • 注意事项: 需要Python 3.6及以上版本。

这些工具和库通常一起使用,可以构建高效、可扩展的Web应用程序,同时提供强大的数据库和缓存支持。在使用这些工具时,需要注意它们的版本兼容性、性能优化和安全性配置。

img.png

判断你电脑适合使用 AMD64(x86_64) 还是 ARM64(aarch64) 架构的方法如下:


✅ 一看系统架构(最直接)

【Windows 系统】
  1. 打开命令行(Win+R → 输入 cmd):

    wmic os get osarchitecture
    

    输出示例:

    • 64-bit → 多数是 AMD64 架构(即 Intel/AMD CPU)
    • 如果是 ARM 芯片(例如 Surface Pro X),会显示特殊版本,如 ARM64-based PC
  2. 或在“系统信息”中查看:

    • “系统类型”:

      • x64-based PC → AMD64 架构
      • ARM-based PC → ARM64 架构
【macOS 系统】
  1. 打开终端,输入:

    uname -m
    

    输出含义:

    • x86_64 → Intel CPU → AMD64 架构
    • arm64 → Apple M1/M2/M3 芯片 → ARM64 架构
【Linux 系统】
uname -m
  • x86_64 → AMD64 架构
  • aarch64 → ARM64 架构

✅ 二看 CPU 品牌

CPU 品牌架构
Intel / AMDAMD64(即 x86_64)
Apple M 系列ARM64(arm64)
高通 SnapdragonARM64
Raspberry Pi / RK3399 等开发板ARM64

✅ 三看下载软件包时的选择

当你安装 Docker、Python、Node.js、VSCode 等工具时,选择:

  • x64 / x86_64 / amd64 → Intel/AMD CPU 用
  • arm64 / aarch64 → Apple M 系列或 ARM 开发板用

下面提供在阿里云上部署 ELK 的两种常用方案:

  1. 托管式 Elasticsearch Service(AES) + Logstash/Beats
  2. 自建 ELK 集群(ECS/ACK + Docker Compose)

1. 使用阿里云 Elasticsearch Service(AES)

阿里云 Elasticsearch Service(AES)是一项托管服务,包含 Elasticsearch 和 Kibana,免运维、可弹性伸缩。

步骤

  1. 创建实例

    • 控制台 → 产品 → Elasticsearch(托管版)→ 创建实例
    • 选择规格(节点数、规格、存储)与网络(VPC、交换机)
    • 记下实例域名(如 your-cluster.region.es.aliyuncs.com:9200
  2. 安全设置

    • 访问控制 → 账号管理 → 新建内置账号(或使用 RAM 授权)
    • IP 白名单 → 添加可以访问集群的 IP 或安全组
  3. 访问 Kibana

    • 控制台 → 实例详情 → Kibana 管理 → 打开 Kibana 控制台
    • 使用步骤 2 中的账号登录
  4. 日志采集 → Logstash or Beats

    • 在一台 ECS 或容器服务上安装 Logstash / Filebeat

    • 典型 Logstash 配置(logstash.conf):

      input {
        file {
          path => "/var/log/*.log"
          start_position => "beginning"
        }
      }
      output {
        elasticsearch {
          hosts => ["https://your-cluster.region.es.aliyuncs.com:9200"]
          user => "elastic_user"
          password => "elastic_pass"
          index => "app-logs-%{+YYYY.MM.dd}"
          ssl => true
        }
      }
      
    • 启动:

      bin/logstash -f logstash.conf
      
  5. 可选:使用 Filebeat

    • 安装 Filebeat,编辑 filebeat.yml

      filebeat.inputs:
      - type: log
        paths:
          - /var/log/*.log
      
      output.elasticsearch:
        hosts: ["https://your-cluster.region.es.aliyuncs.com:9200"]
        username: "elastic_user"
        password: "elastic_pass"
        ssl.enabled: true
      
    • 启动并注册:

      filebeat setup --dashboards
      systemctl start filebeat
      

2. 自建 ELK 集群

如果你需要完全自定义,或想在容器中部署:

2.1 在 ECS 上自建(Docker + Docker-Compose)

  1. 准备 ECS

    • 选择 4 核、8 GB 内存及以上
    • 安装 Docker & Docker Compose
  2. 编写 docker-compose.yml

    version: "3.8"
    services:
      elasticsearch:
        image: elasticsearch:8.5.1
        environment:
          - node.name=es-node1
          - cluster.name=elk-cluster
          - discovery.type=single-node
          - ES_JAVA_OPTS=-Xms2g -Xmx2g
        ulimits:
          memlock:
            soft: -1
            hard: -1
        volumes:
          - es_data:/usr/share/elasticsearch/data
        ports:
          - "9200:9200"
    
      logstash:
        image: logstash:8.5.1
        volumes:
          - ./pipeline:/usr/share/logstash/pipeline
        ports:
          - "5044:5044"
        depends_on:
          - elasticsearch
    
      kibana:
        image: kibana:8.5.1
        environment:
          ELASTICSEARCH_HOSTS: http://elasticsearch:9200
        ports:
          - "5601:5601"
        depends_on:
          - elasticsearch
    
    volumes:
      es_data:
    
  3. 启动服务

    docker-compose up -d
    
  4. 验证

    • http://<ECS_IP>:9200 → Elasticsearch
    • http://<ECS_IP>:5601 → Kibana

2.2 在 ACK(Kubernetes)上部署

  1. 创建 ACK 集群

    • 控制台 → 容器服务 ACK → 新建集群
  2. 安装 Helm

    curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
    
  3. 添加 Elastic Helm 仓库

    helm repo add elastic https://helm.elastic.co
    helm repo update
    
  4. 部署 Elasticsearch

    helm install es-cluster elastic/elasticsearch \
      --set replicas=3 \
      --set resources.requests.memory=2Gi \
      --set resources.requests.cpu=1
    
  5. 部署 Kibana

    helm install kibana elastic/kibana \
      --set service.type=LoadBalancer \
      --set ingress.enabled=true \
      --set elasticsearchHosts=http://es-cluster-master:9200
    
  6. 部署 Logstash(可选)

    helm install logstash elastic/logstash \
      --set pod.resources.requests.memory=1Gi
    

小结与建议

  • 首选 AES:托管版省运维、自动扩缩容,配合 Filebeat 最快。
  • 自建集群:适合对版本、插件、网络有严格自定义需求。
  • 安全:生产环境下务必开启 TLS、认证与访问控制。
  • 监控:可结合阿里云云监控(CMS)与 Elastic Stack 自带的监控插件。

3d6d7d09299720c9c57270047fc72eb.png