Files
chongming-gateway/README.md
T

80 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# chongming-gateway
chongming 网关本体:基于 **FastAPI + Zenoh** 的配置驱动微服务网关。
把宿主项目里的插件(inline 进程内 / external 独立进程)发布的路由统一挂载为 HTTP 端点,
并提供 Worker 服务发现、负载均衡、超时重试、实例定向、MQTT Bridge 与内置登录鉴权。
网关只提供**代码**:配置、插件与打包骨架由宿主项目提供(见「运行时约定」)。
---
## 安装
```bash
# 作为依赖(宿主项目,从私有源安装)
uv add chongming-gateway
# 开发期可编辑安装(在 chongming-core 仓库内)
uv pip install -e utils/gateway
```
网关自带完整依赖清单(`fastapi` / `granian` / `zenoh` / `chongming-worker` 等),
宿主项目无需重复声明;需要哪些第三方包,见本包 `pyproject.toml`。
## 快速开始
宿主项目(cwd)下准备 `config.toml` 与 `config/workers/<type>/config.toml`,
并保证插件包(`plugins.<type>`)可导入。之后任选一种启动方式:
```bash
# 按 config.toml [<env>.server] 启动(三个入口等价,仅默认服务器不同)
uv run serve # uvicorn
uv run granian # granian
uv run gunicorn # gunicorn + uvicorn worker
# 或把 ASGI 应用交给任意服务器
uvicorn chongming.app:app --host 0.0.0.0 --port 8000
```
网关按 `config/workers/<name>/config.toml` 的 `[workers]` 节逐插件读取加载方式
(`load_mode = "inline" | "external"`)与副本数,启动时自动发现并挂载路由。
## 运行时约定
- **配置**:cwd 下 `config.toml`(环境、服务器、安全、MQTT、缓存等)与
`config/workers/**`(插件注册与路由定义),运行期读取,随宿主项目部署。
- **插件**:网关按 `plugins.<type>` 约定导入插件包,来源不限——`.mbank` 模块银行、
源码目录(开发态 `src/plugins`)或已安装包均可。
- **工作目录**:日志、上传、数据等相对路径均以 cwd 为基准。
## 目录结构
```text
src/chongming/
├── __init__.py # 启动入口(serve / granian / gunicorn)与服务器参数转换
└── app/
├── __init__.py # FastAPI 应用装配(lifespan、中间件、异常处理)
├── core/ # WorkerManager / RouteGenerator / MQTT Bridge / 日志 / 鉴权
└── routes/ # 内置管理端点(stats / worker_admin / auth)
```
## 开发与发布
```bash
# 在 chongming-core 仓库内改代码后,让 venv 用本地源码(联调用)
uv pip install -e utils/gateway
# 发版:构建 wheel 并推私有源
uv build # dist/chongming_gateway-<version>-py3-none-any.whl
uv run twine upload --repository <私有源> dist/*
```
发版后依赖方执行 `uv lock --upgrade-package chongming-gateway` 刷新版本 pin。
注意 `uv sync` 会用锁文件版本替换可编辑安装——打包/发版前先确认 venv 指向目标版本。
## 相关文档
- [项目主 README](../../README.md):整体架构、使用与构建部署
- [Worker 管理与多实例运维](../../docs/worker-management.md):管理端点、扩缩容、实例定向