ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

多模型API网关实践:腾讯云AI接入与路由设计全解析

多模型API网关实践:腾讯云AI接入与路由设计全解析 “硅碳相变”这四个字我做这个项目之前以为是材料学里的什么新概念真正跑起来才明白它其实特别贴切硅是确定性计算的老地基碳是泛化智能的新变量。腾讯云上跑AI业务一开始就是单模型直连一个API用完就完事了可一旦业务复杂起来你发现得同时接混元、DeepSeek、豆包、通义甚至还要兼容海外模型的调用协议。这时候多模型API怎么接就成了真正的折腾点——鉴权不一样、参数不一样、计费口径不一样连流式返回的格式都能给你搞出四个版本。这篇东西就是把我这段时间在腾讯云上从“单模型直连”切到“多模型网关”的完整过程、踩过的坑、和最终沉淀下来的方案全写出来给同样在云上跑AI、被一堆模型API折磨的朋友一个可以直接参考的落地参考。1. 多模型API接入的四大痛点不折腾是奢望我先把话说在前面多模型API接入这件事如果你只是写个脚本自己调着玩那怎么接都无所谓可一旦你是要在腾讯云上跑正式业务要支持不同客户、不同场景还隔三差五换模型那就必须把“接入”这件事当成一个正经工程来做。不提前想清楚后面全是坑。1.1 API规范不统一同一个需求四种写法这是多模型接入最直接的痛点。大模型厂商虽然基本都对齐了OpenAI的chat/completions风格但细节上仍然是各写各的。有的模型把system prompt叫system有的叫meta有的干脆不支持有的返回结构里choices就是标准数组有的在中间多套了一层candidates有的用stream字段控制流式有的用response_mode。我记得最初接腾讯云混元时它那版API的请求体里有个额外的“extra”字段用来传超参数你要是不填它会按默认值跑可你要是按OpenAI那套格式传temperature、top_p这些参数名它也能接受但返回的usage结构里输入输出token的字段名又不一样。另一家模型更离谱流式输出的SSE事件里data字段有时是完整的JSON有时是字符串拼接的JSON切片直接按JSON.parse去解能把你搞疯。如果你只是在一个脚本里写死一个模型这些差异都无所谓因为你针对着一套文档写。但如果你要在一个业务里同时调度四个模型让上层代码用同一套输入去调用你就必须做一个兼容层。这个兼容层的价值不在于“转换格式”而在于保证你的业务代码只认一套契约换模型不动业务逻辑。1.2 鉴权与计费各成一派token是老大鉴权这块也够乱的。有的模型直接拿API Key放Authorization头里就完事有的用Bearer Token有的要用独立的租户ID拼接签名还有的要走腾讯云的临时密钥体系。腾讯云上的AI类产品比如混元和向量数据库他们的鉴权很大程度是绑在云账号体系上的。你需要先在访问管理里创建子账号、分配API密钥然后调用时有的接口直接用SecretId/SecretKey做签名有的走网关加签有的则要求先换取临时Token再调用。这套体系安全性确实强但如果你只是想快速接个模型跑个Demo签名的计算过程就会让你烦到怀疑人生。计费口径同样各说各话。同样是“token”有的模型按字符数估有的按BPE词表切出来的token算有的把输入输出分开算有的还把命中缓存的部分单独打折。最坑的是有些平台在账单里把“思考模型”的内部推理token也计入输出token你要是没在代码里做统计一个月下来成本对不上账财务找你的时候你根本解释不清。所以我后来坚持一个原则所有模型调用必须统一走网关在网关这一层统一做token用量统计和费用估算并且把模型返回的usage原始数据完整落库。只有数据口径统一了你才知道哪家模型实际花多少钱也才能跟云厂商账单做对账。1.3 模型能力边界不同同样的指令效果天差地别你以为接多模型最大的坑是技术问题其实更隐蔽的是能力差异。同样一段Python代码让模型解释A模型可能给你三行简洁答案B模型可能输出一大段带示例的说明C模型甚至会在回答里反问你要什么环境。这不是谁好谁坏的问题而是不同模型微调目标和数据分布差异的结果。比如一些偏代码生成的模型在结构化输出上表现很强但你要它做通用聊天反而显得生硬一些通用对话模型在开放式创作上很能打但你要它严格按JSON Schema输出它经常在某个字段里多塞一个逗号给你。你让不同模型干同一件事必须接受“相同prompt在不同模型上的效果差异”不能简单地用一个counter去对比。我在实际项目里会针对不同任务去做模型路由摘要类任务走指令跟随强的模型代码生成走专门微调过的模型情感分析走便宜量大的小模型。路由规则不是写死的而是基于每个模型的实测效果、成本、时延三个维度去打分。这个我们后面展开讲。1.4 多模型协同靠人肉切换难长久最后说一下为什么要做多模型而不是死磕一家。原因很简单模型厂商的迭代太快了今天这家出了新版本明天那家降价了而且不同模型在不同任务上的表现确实在轮动变化。如果你把模型调用写死在业务代码里每次换模型都要改代码、重新部署、跑回归那你的迭代速度就绑死在单一模型上了。更现实的问题是很多业务需要多个模型配合。比如一个AI助手前端交互走一个对话模型意图识别走一个快的分类模型敏感内容判断走一个专注安全的审查模型最后还要用一个能扛高并发的模型做兜底。这种多模型协同说白了就是一个路由编排问题靠人肉if-else去切短期能跑长期必崩。所以我一直在找一个思路就是标题里说的“相变”。把这个协同逻辑抽象出来变成一组配置、一套网关、一份监控数据。业务方看到的只是一个稳定的API背后是哪几个模型在配合、什么情况下切换到谁都由网关层解决。2. 腾讯云AI业务接入的整体设计思路聊完痛点下面说说我在腾讯云上做整套接入设计时的思路。我不会给那种“照搬即用”的一键方案因为每家的业务不一样但设计分层和组织数据的逻辑是可以复用的。2.1 清晰分层接入层、路由层、业务层我在项目里把架构分成三层。接入层在最前面负责接收业务方的请求统一鉴权、统一限流、统一记录日志。不管业务方是网页、小程序还是后端服务走到这一层都变成一张标准化的请求单。路由层在中间是核心。它拿到请求单之后根据任务类型、模型可用性、成本预算、当前负载等条件决定把这单派给哪个模型。路由层还负责故障转移比如主用模型超时或返回异常时自动切换备用模型。业务层在最底层不关心你用的哪家模型只接收路由层返回的统一格式结果。我这样分层的核心动机是让每一层只做自己该做的事换模型不动业务换业务不动模型。有人会问这种分层是不是过度设计我的回答是如果你只是给自己用的脚本加一个模型确实是过度设计但如果你要给一个团队提供一个AI能力中台让不同项目组都能接入模型能力三层结构是底线。2.2 云上网络与基础设施准备在腾讯云上部署这套东西基础设施的准备相对简单但有几个点要注意。首选方案是买一台CVM配置不用太高2核4G起步就够了。为什么不用云函数因为AI网关要处理流式响应连接保持时间长函数计算在计费和超时上都有一些不适合的边界。我用的是腾讯云的轻量应用服务器系统选的Ubuntu 22.04配合安全组放通必要的端口。登录方式我强烈建议用SSH密钥不要用密码登录。在腾讯云控制台创建密钥对之后把私钥下载到本地。我用终端登录的时候先把私钥文件权限改成600再执行ssh -i命令。如果你用Windows环境可以用终端工具导入私钥比每次输密码安全得多。网络层面还应该把出口带宽设置清楚。AI业务要跟模型API通信数据量不小尤其是流式输出场景带宽太小或限制不合理会出现明明模型已经出字了但客户端就是收不到的情况。我一开始图省钱买了1Mbps带宽后来发现模型流式返回稍微大一点就卡最后升到5Mbps才顺畅。数据库和缓存方面如果只是自己用SQLite加内存缓存就够如果要给多人用建议上腾讯云的数据库和Redis。不过我在早期验证阶段所有数据都放在本地文件里IO压力不大没必要一开始就上重量级组件。等业务量起来再做数据层拆分成本更划算。2.3 兼容层与协议转换方案我在动手写代码之前把各家模型API的差异做了个整理列成一张表这帮我省了后面大量的调试时间。模型来源请求地址风格鉴权方式流式支持返回结构概览腾讯混元云API风格需签名SecretId/SecretKey签名支持choices / usage结构不同DeepSeekOpenAI兼容风格Bearer API Key支持choices标准结构通义千问OpenAI兼容风格但字段有差异Bearer API Key支持output非choices命名豆包字节风格Bearer API Key支持choices结构但有细节差异这张表一列我就明确了两件事。第一基本都往OpenAI的格式上靠但每个都要做字段映射第二鉴权不能写死在业务代码里必须做成可配置的插件式结构。兼容层的核心工作就是做两个方向的转换出方向把业务请求转换成各个模型的原始格式入方向把各模型的不同返回转换成统一格式。具体到代码上就是给每个模型写一个adapter暴露统一的request方法和parse方法。这里有个细节值得说一下流式输出的兼容比对普通请求的兼容难非常多。普通请求只要处理好URL、Header和Body再把返回的JSON转换成统一结构就行。流式请求则需要处理SSE分帧逻辑不同模型的分隔符、data字段格式、结束标志都可能不同。我在项目里把流式解析单独封装成一个模块每个adapter都实现一个parse_stream生成器函数上层直接for循环消费事件。这样上层业务完全不用关心底层是哪个模型在吐字。3. 核心实现搭建一个轻量多模型API网关这一节是具体的实现过程。我不会贴完整的大项目代码而是把最关键的设计和代码骨架写出来你可以照着这个思路去搭自己的网关。3.1 模块划分与服务骨架我用的技术栈是Python和FastAPI。选FastAPI的原因有三个异步支持好可以轻松处理高并发的流式请求自带数据校验和API文档调试方便中间件体系成熟做鉴权和日志比较简单。目录结构大概长这样ai-gateway/ ├── main.py # FastAPI入口 ├── config.yaml # 网关配置模型列表、路由规则 ├── adapters/ │ ├── base.py # adapter抽象基类 │ ├── tencent_hunyuan.py # 腾讯混元adapter │ ├── deepseek.py # DeepSeek adapter │ └── openai_compat.py # OpenAI兼容模型通用adapter ├── router/ │ ├── policy.py # 路由策略 │ └── fallback.py # 故障转移逻辑 ├── utils/ │ ├── auth.py # 统一鉴权 │ └── token_counter.py # token统计与费用估算 └── data/ └── stats.db # SQLite统计库网关启动的时候根据config.yaml加载所有模型连接信息注册到模型管理器。每个模型在配置里有一个唯一的标识符比如hunyuan-turbo、deepseek-chat、qwen-plus同时标记该模型的能力标签比如code、chat、fast、cheap。上层调用的时候只需要传能力标签和不敏感的模型偏好路由层负责把标签映射到具体的模型实例。3.2 统一请求格式与参数映射我在对外暴露的API里定义了一套统一请求格式尽量简洁同时兼容主流的调用风格。核心字段包括model、messages、temperature、max_tokens、stream、response_format。model字段很有意思。业务方可能传“code”表示要一个代码能力强的模型“chat”表示要通用对话模型也可能直接指定“deepseek-chat”。路由层会做两层解析先看是不是注册过的具体模型ID如果是就直接用如果不是就当成能力标签走标签路由。每个adapter实现两个核心方法build_request把统一格式转成模型要求的格式parse_response把模型返回结果转成统一格式。下面是你实际写时可以参考的基类代码class BaseAdapter: model_name: str api_key: str base_url: str def build_request(self, unified: dict) - dict: raise NotImplementedError def parse_response(self, raw: dict) - dict: raise NotImplementedError async def stream_generator(self, raw_stream): # 统一产出事件每个事件包含delta内容和usage信息 async for chunk in raw_stream: yield self._format_chunk(chunk)这里我特别说一下max_tokens的处理。不同模型对max_tokens的上限不一样有的支持8K有的支持16K有的会默认一个值。如果你不传有的模型会按自己的默认参数生成回复结果可能很长也可能被截断。我在网关里会根据模型能力表自动做参数裁剪比如请求里传了max_tokens4096但目标模型的最高上限只有2048网关会自动调低并在返回日志里打一个warn。这个细节看似微小却能避免大量因为超限被模型拒绝或截断的报错。3.3 模型路由与故障转移逻辑路由策略我实现了两种一种是写死的规则路由一种是基于加权打分的选择路由。规则路由最简单适合场景明确的业务。比如配置里写如果request里的task_type“code”就用deepseek-coder如果task_type“chat”且request里带“fast”标志就用一个响应快的模型。规则路由的缺点是模型状态变了比如一个模型临时不可用规则还是死板的需要人工介入。加权打分路由更能体现多模型协同的价值。我会给每个模型定义一个分数由三部分构成成本分数越低越好、时延分数越慢越低、效果分数根据离线评测或历史反馈。路由时取总分最高的模型一旦调用失败或超时自动排除该模型在剩余模型里重新选。打分用到的直观示例def score_model(model_cfg, task_cfg): cost_score model_cfg.default_price / task_cfg.budget latency_score max(0, 1 - model_cfg.avg_latency / task_cfg.max_latency) effect_score model_cfg.effect_cache.get(task_cfg.scene, 0.8) return cost_score * 0.3 latency_score * 0.3 effect_score * 0.4权重不是固定的你可以根据业务阶段调整。早期更看重效果把effect_score的权重提到0.6后期控制成本就把cost_score权重加大。这套权重配置放在config.yaml里改权重不需要改代码。故障转移这块我用了一个非常简单的重试策略同一模型的调用失败最多重试一次如果第二次还失败就把请求转到备用模型。备用模型的选择不是随便挑一个而是优先挑能力标签相似、成本接近的模型。比如主模型是通用对话模型备用模型就选另一个通用对话模型而不会跳到一个代码专用模型上。3.4 token与费用统计这个问题我前面提过多模型接入最容易翻车的就是费用对不上。我在网关里单独做了一个token_counter模块职责很明确每次调用完成后从模型返回结果里提取usage数据并按配置的单价计算费用同时把数据写入SQLite用于日结和对账。这里要补充说一个点不同模型的usage字段单位不一样。有的返回的token数是原始文本经过该模型词表切分后的数量有的返回的是按字符预估的参考值有的会把“保留token”也算进去。单看模型返回的usage对你做统计参考意义有限但做横向对比时又会失真。我的做法是双轨记录既记录模型返回的usage原始字段也记录网关自己按字符数估算的token数。虽然字符估算不准但至少口径一致可以近似对比各模型在不同请求上的相对消耗。费用计算公式也很简单费用 输入token数 / 1000 * 输入单价 输出token数 / 1000 * 输出单价单价配置在config.yaml里按模型分开写。我会定期从各平台的账单页拉一次价格更新到配置中。虽然不是实时同步但对月度成本的估算精度已经足够了。4. 实操记录从单模型切到多模型的完整过程理论说再多不如看一次实操记录。这一节我会把我从零开始接入腾讯云上多模型API的全过程写出来包括遇到的具体问题和当时的处理方式。4.1 腾讯云CVM环境准备与密钥登录我用的服务器是腾讯云轻量应用服务器2核4GUbuntu 22.04。买完之后第一件事不是装环境而是配置SSH密钥登录。在腾讯云控制台找到密钥管理创建一个密钥对。创建之后腾讯云会给你一个私钥文件这个文件要下载保存到本地。然后在控制台把密钥绑定到你的服务器实例上。这之后你本地的终端就能用这个私钥登录服务器了。我从macOS终端登录的命令是这样chmod 600 ~/.ssh/tencent_cvm.pem ssh -i ~/.ssh/tencent_cvm.pem ubuntu你的服务器IP这里注意轻量应用服务器的默认用户是ubuntu不是root。登录上去之后需要sudo su来切换root权限。如果你之前一直在用密码登录切换到密钥登录之后建议不要立刻关闭密码登录先确认密钥登录稳定了再关免得中途断连把自己锁在外面。这个教训我经历过当时手快关了密码登录结果密钥路径配错了ssh拒绝连接只能在控制台用VNC进去救。环境方面我装了Python 3.10、pip、nginx以及后续要用的uvicorn。因为网关要做对外服务我还配了一个systemd服务来做进程守护这样服务器重启之后网关能自动拉起来。systemd配置不复杂核心就是把ExecStart指向uvicorn的启动命令Restart设为always。4.2 直连各家模型API的实测对比环境准备好之后我写了一批测试脚本把腾讯混元、DeepSeek、通义千问、豆包这几个主流模型的API都直接调用了一遍主要测三件事接口成功率、平均首字时延、以及相同指令下的回答长度。接通之后你会发现DeepSeek和通义、豆包这类OpenAI兼容系的模型接起来差不多就是照着文档把base_url和api_key填进去就行。腾讯混元相对特别一点它的API走的不是纯OpenAI兼容路径需要用SecretId和SecretKey做签名。我一开始直接拿api_key去填结果返回签名错误查了好半天才发现要先生成签名串。这个签名过程如果手写会比较麻烦好在前人的轮子很多腾讯云官方SDK和社区都有封装好的签名工具直接用就行。后来我在adapter里把这套逻辑封装成独立的sign函数上层感知不到差异。实测对比下来不同模型API的响应速度差异其实不大同样的网络条件下首字时延都在几百毫秒到一两秒之间波动。差距更大的是模型输出内容的风格。比如我让几个模型分别解释一段代码有的模型给出的是逐行注释型说明有的给出的是重写优化版有的会附带使用场景建议。这种差异最终会直接影响产品的用户体验你要是不在早期做基准测试后面上线了才发现某个模型在某个场景下表现不佳临时换模型成本会高很多。4.3 用一个转换代理接入codex工具的思路多模型接入还有一个很有意思的应用方向就是把你自己的模型能力接入到一些流行的AI工具里去。这里涉及到热词里提到的ccswitch思路说穿了就是一个协议转换代理这类工具默认要访问OpenAI官方接口但你可以通过一个本地部署的兼容层把请求转到你自己配置的模型服务上让工具以为自己在访问官方接口实际上用的是你指定的一家模型。我在腾讯云服务器上就部署过这种转换代理。部署的逻辑其实很简单先要保证你的服务器已经配置好各项模型访问凭证然后在代理配置文件里声明你希望接入的工具所需的模型名称和参数。这样你在工具侧设置基础地址为你的服务器地址填入代理要求的密钥保存之后就完成了。实测下来工具对协议转换层的兼容性整体比较好请求和响应风格做到位后基本能正常使用。这个做法的核心价值在于把工具统一绑定到你的网关让所有调用都经过你自己的监控、统计和路由逻辑。你可以随时切换底层模型工具侧没有任何感知这对团队协作来说特别方便。4.4 网关对接业务方的接入方式网关搭好只是第一步让业务方真正用起来才是最终目的。我对外暴露的API入口设计得很简单就是标准的OpenAI兼容格式。业务方只需要改一个base_url和api_key把原来的OpenAI调用换成网关地址即可。对于已经用了OpenAI SDK的项目甚至只需要在SDK初始化时传入自定义base_url代码改动几乎是零。但这里有一个前提你要想兼容OpenAI格式最少做两件事。第一API密钥校验逻辑要实现至少支持简单的Bearer Token校验保证不是任何人拿到网关地址就能白嫖。第二/v1/chat/completions这个路径必须支持因为很多SDK默认请求这个路径。如果你不想暴露OpenAI格式也可以设计一套自己的格式但要跟业务方沟通好改动成本就高一些。5. 并发与稳定性AI Agent扛并发的一些心得接好模型API只是万里长征第一步真正考验网关的是并发和稳定性。AI业务有一个特点请求不是均速到达的而是突然冲高然后归零。一场热点活动、一个政策公告、一次给用户发推送都可能让流量瞬间涨十倍。5.1 并发控制与限流策略我在网关里做了两层限流。第一层是全局令牌桶控制整个网关的最大同时处理请求数。比如我设置最大并发200超出部分直接返回429状态码。第二层是按模型的限流因为各家模型厂商对API的并发都有配额限制你一个模型同时发起几百个请求必然会被拒绝或触发限流。按模型限流的配置方式是在config.yaml里针对每个模型设置一个max_concurrency。当某个模型的并发达到上限时新请求不能直接丢弃而应该尝试路由到其他同能力模型。这个设计在AI Agent场景下特别有用。AI Agent和普通聊天请求最大的区别在于它一个用户请求会产生多个内部调用。比如一个Agent要完成一个任务会先调用模型做规划再调工具查数据然后再调模型做总结这个过程中就产生了多次模型调用。如果同一时间有几百个用户在使用Agent实际的模型调用次数可能是用户数的3到5倍。如果不对Agent调用做控制网关的并发很快会打满响应时间拉长用户体验下降。我后来加了两个措施一是Agent内部对同用户的连续调用做了串行化让同一时间一个用户不会同时占两个并发二是给长时间运行的Agent设置了最大执行时间超过时间直接中断避免模型调用一直占着连接不释放。5.2 超时、重试与幂等设计多模型调用里时间相关的问题最难排查。模型超时了到底是网络问题、模型推理慢、还是服务端卡死我在网关里对每个环节设置独立超时时间方便快速定位。连接超时设置成5秒指TCP连接建立阶段的最大等待时间读超时设置成120秒正常情况下大模型的流式输出通常不会超过这个时间。如果读超时触发网关会向前端返回一个截断后的错误提示。这里要注意流式请求如果中途断开前端拿到一个不完整的输出但模型服务端其实已经为这段输出计费了。所以我在网关层对这种情况单独打日志标记方便后续对账。重试就要讲究策略。如果是网络超时或5xx错误可以重试如果是4xx错误比如鉴权失败、参数格式错误重试没有意义应该直接返回错误。而且重试的退避策略要设置好我用的固定间隔3秒重试一次最多两次。过快的重试不仅会增加服务端压力还容易触发对方限流。幂等这块对业务也很重要。同样一个请求因为网络重发被模型执行了两次就会产生两次计费。我给网关设计了请求ID机制每个请求进来时生成一个request_id网关内部对这个ID进行去重。如果同一个ID的请求重复到达网关直接返回第一次请求的结果。这个设计在客户端重试场景下很顶用。5.3 上下文缓存与向量库的配合多模型调用另一个让人头疼的方面是上下文处理。一个长对话如果每次把历史消息全量传给模型token成本会爆炸。我试过在网关层做摘要压缩但摘要会丢失细节在需要精确记忆场景下效果不好。后来我引入了腾讯云的向量数据库vectordb。思路是这样的把每条对话消息做embedding存入向量库。用户发新消息时先从向量库里检索与当前问题最相关的历史消息片段把它们拼进上下文而不是把全部历史都塞给模型。这样做的好处非常明显token消耗大幅下降同时模型也能基于相关度高的历史信息给出更准的回答。这个方案在实际部署时要注意给embedding预算。给每条消息做embedding也要花钱而且有延迟。我采用的做法是普通对话消息不做embedding只有语义重要性超过一定阈值的消息才入库。判断阈值的方法很简单看这条消息是否包含用户明确提出的问题或者是否包含业务关键词。5.4 常见问题速查表我把实际部署运维中高频遇到的一些问题整理成了一张速查表方便排查时对照。问题现象可能原因排查思路与解决方案调用报签名错误腾讯云API签名串生成错误检查SecretId/SecretKey是否填错签名版本和区域参数是否匹配模型返回401API Key无效或过期去对应平台控制台重新生成Key更新到网关配置流式输出乱码或缺字adapter里SSE解析逻辑写错对比官方文档确认分隔符建议在本地抓取原始返回逐行核对同一请求重复计费缺少请求去重机制网关内实现request_id去重重复请求直接返回缓存结果某模型经常超时模型服务端负载高或配额不足调整路由权重优先选其他模型为该模型设置更短超时并发高时数据库锁等待SQLite写入太频繁改用独立Redis或上线MySQL写入做批量落库token费用对不上账单网关统计口径与平台不一致双轨记录原始usage和网关估算值定期人工比对排查问题有一个总的原则从日志开始。我在网关里每个请求都会生成一条完整日志包含request_id、模型名、路由前目标、实际目标、耗时、token消耗、错误信息。出了问题先翻日志哪里断了哪里报错一目了然。没有日志全靠肉眼去猜在云上排查问题是真的会崩溃的。最后再分享一个小技巧写到最后我把这次实操中最深的一点体会放在最后多模型API接入这件事技术本身不是最大的门槛真正的门槛在于你有没有把“接入”当成一个长期维护的系统来设计。我一开始也抱着“先跑通再说”的心态结果每次换模型都要改业务代码每个月的账单要人工对半天线上出了问题要看日志看到头晕。后来花了几天时间把网关和监控补上之后整个人都轻松了。如果你现在也正被一堆模型API折腾我建议你从最小的兼容层开始不要一上来就上各种组件。先写好一个adapter把某个模型跑通再让业务方只依赖那套统一接口。第二步再慢慢加路由、加统计、加故障转移。每一步都能独立出价值不会因为步子迈得太大把项目搞复杂。后期如果业务量上来了你甚至可以在这个网关上再做一层管理员面板让非技术同学也能看调用量、调路由权重那整个多模型接入就算真正“不折腾”了。
返回列表