ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

QuickBlue:基于微服务与JDK 21的企业级AI应用底座架构实践

QuickBlue:基于微服务与JDK 21的企业级AI应用底座架构实践 1. 从一堆散装AI功能到统一底座QuickBlue要解决的真问题这两年跟不少企业的技术团队聊过一个特别普遍的现象是公司里各个业务线都在做AI功能客服团队接了个大模型做智能问答运营团队搞了个文案生成工具数据团队又在弄报表解读。单看每个点都挺热闹但真要把这些东西捏合成一个能对外稳定服务的产品问题就全冒出来了——模型调用散落在各个项目里密钥管理一团乱谁用了多少token没人说得清某个业务线把接口改一下另一个依赖它的功能直接挂掉。这就是QuickBlue这类AI应用底座要解决的核心矛盾。它不是又一个AI应用而是承载AI应用的那层地基。你可以把它理解成以前每个AI功能都是自己打井取水现在QuickBlue修了一个自来水厂统一供水、统一计费、统一水质标准各个业务线拧开水龙头就能用。QuickBlue的定位是面向企业级场景的AI应用基础平台。它把大模型接入、提示词管理、会话编排、知识库检索、权限控制、用量统计这些AI应用绕不开的公共能力全部下沉到一层统一的底座里。上层的业务应用只需要关注自己的业务逻辑不用再重复造轮子。适合谁来参考我认为三类人最该关注一是正在被AI功能重复建设困扰的技术负责人二是需要把AI能力快速交付给多条业务线的平台架构师三是想搞清楚企业级AI工程化到底长什么样的开发者。关键词里出现的微服务、Spring Cloud、JDK 21其实已经透露了QuickBlue的技术底色——它是一套用现代Java技术栈构建的微服务架构平台。为什么AI底座要用微服务这个问题后面会专门拆。先记住一个判断当你的AI能力要服务多个团队、要独立扩缩容、要按业务线隔离故障时单体架构迟早会成为瓶颈微服务几乎是必然选择。2. 拆开QuickBlue看内部一个AI底座到底由哪些能力块拼成2.1 模型接入层把五花八门的大模型统一成一种插头企业用AI最头疼的第一件事就是模型太多太杂。公有云上的通用大模型、私有化部署的开源模型、垂直领域的专用模型接口协议、鉴权方式、返回格式各不相同。如果每个业务应用都自己去对接那代码里会塞满各种if-else。QuickBlue的模型接入层做的事情就是定义一套统一的模型调用抽象。不管底层是哪种模型上层看到的都是同一套请求和响应结构。这层的核心设计通常包含几个部分模型注册中心负责登记每个模型的接入信息适配器负责把统一请求翻译成具体模型的协议路由策略负责决定一次请求该走哪个模型。我特别想强调路由策略这块的价值。实际生产里同一个问题用不同模型回答成本和效果差异巨大。简单问题走小模型复杂推理走大模型这是最朴素的降本思路。QuickBlue这类底座如果能把路由做成可配置的策略企业就能在不改业务代码的前提下动态调整模型使用策略。这比在每个业务里硬编码模型名称要优雅得多。2.2 提示词与会话编排让AI行为可管理、可复用提示词工程现在是个热门话题但很多团队还停留在提示词写在代码字符串里的阶段。这种做法的问题很明显改一个提示词要重新发版不同业务线没法复用效果好坏也没法对比。QuickBlue把提示词管理独立成一层能力意味着提示词变成了可版本化、可配置、可灰度发布的资产。你可以给一个提示词建多个版本A/B测试哪个效果好出问题能快速回滚。会话编排则是把多轮对话、工具调用、条件分支这些逻辑从代码里抽出来变成可视化或配置化的流程。这里有个实操心得会话编排不要一上来就追求大而全。我见过一些团队非要把所有对话逻辑都塞进编排引擎结果编排图复杂到没人看得懂。更务实的做法是把高频、稳定的对话流程沉淀到编排里把探索性的逻辑先留在代码里等稳定了再迁移。底座是给人用的不是用来炫技的。2.3 知识库与检索增强企业私有数据的入口大模型本身不知道你公司的内部文档、产品手册、历史工单。要让AI回答企业专属问题就得靠检索增强生成这套机制。QuickBlue的知识库层通常包含文档解析、切片、向量化、存储、检索这几个环节。切片策略是这里最容易被低估的环节。切得太碎检索出来的片段缺乏上下文切得太粗检索精度下降还浪费token。我的经验是技术文档按段落切问答对按条目切长文档要保留标题层级作为上下文。这些细节底座如果不管每个业务线都得自己踩一遍坑。2.4 权限、计量与可观测企业级绕不开的三件套个人开发者做AI应用可以不管权限和计费但企业不行。哪个部门用了多少token、哪个应用调用了哪些模型、一次请求的完整链路是什么这些都必须可查。QuickBlue的权限体系要解决的是谁能用哪个模型、能访问哪个知识库的问题。计量体系要解决的是成本算到谁头上的问题。可观测体系要解决的是出问题怎么快速定位的问题。这三块能力听起来不性感但恰恰是企业愿意为底座付费的核心理由。没有它们AI应用就是一笔糊涂账。3. 为什么AI底座偏偏选了微服务这套架构3.1 微服务不是赶时髦是被AI负载特性逼出来的很多人一看到微服务就觉得是过度设计但放到AI底座这个场景微服务几乎是刚需。原因在于AI负载有几个很特殊的性质。第一是资源异构。模型推理吃GPU知识库检索吃内存和IO管理后台吃CPU这些组件的资源需求完全不同。单体部署意味着你要按最高配置给所有组件分配资源浪费严重。微服务让每个组件独立部署按需分配。第二是扩缩容节奏不同。白天业务高峰期模型调用和检索压力大晚上跑批处理任务时又是另一批组件吃紧。微服务架构下你可以只给压力大的服务加实例不用整体扩容。第三是故障隔离。AI系统里模型服务偶尔超时、检索服务偶尔抖动是常态。如果是单体一个组件卡住可能拖垮整个应用。微服务加上熔断降级能把故障圈在局部。3.2 Spring Cloud在AI底座里的角色分工关键词里Spring Cloud出现多次还有spring cloud alibaba停更了这样的热搜说明大家对这套技术栈的现状很关心。先澄清一个事实Spring Cloud Alibaba并没有完全停更而是部分组件的维护节奏有调整社区也在推动组件替换方案。对于新建的AI底座项目选型时确实要更谨慎。在QuickBlue这类平台里Spring Cloud承担的是服务治理的骨架角色。服务注册发现让各个微服务能互相找到配置中心让配置能动态刷新网关负责统一入口和鉴权负载均衡负责请求分发。这些是微服务的地基能力。但我要提醒一点AI底座选型不要盲目堆组件。我见过一些项目把Spring Cloud全家桶全塞进去结果运维复杂度爆炸。更务实的做法是先明确哪些能力是真正需要的。比如服务不多的时候注册中心可以用轻量方案配置不复杂的时候不一定非要上独立配置中心。架构是为业务服务的不是为技术栈服务的。3.3 JDK 21给AI底座带来的实际收益JDK 21是个LTS版本对AI底座这类长期运行的服务来说选LTS是基本操作。但JDK 21的价值不只是新。虚拟线程是JDK 21最值得关注的特性。AI应用里有大量IO等待——等模型返回、等向量检索、等数据库查询。传统线程模型下每个请求占一个线程高并发时线程池很容易被打满。虚拟线程让IO等待不再占用宝贵的平台线程同样的硬件能扛更高的并发。对于模型调用这种典型IO密集型场景收益非常直接。另外JDK 21在GC方面的改进对长驻服务也有帮助。AI底座往往要长时间运行内存管理的好坏直接影响稳定性。分代ZGC这类低延迟收集器能把GC停顿控制在很低的水平对在线服务体验是实打实的提升。3.4 微服务拆分AI底座该怎么切才合理微服务拆分是个老话题但AI底座有它的特殊性。我的建议是按能力边界切而不是按技术分层切。具体来说模型接入、知识库、会话编排、权限计量、管理后台这几个是天然的能力边界各自独立成服务比较合理。不要按controller、service、dao这样横着切那样切出来的是分布式单体比单体还难维护。拆分粒度上我倾向于宁粗勿细。服务拆得太细跨服务调用链变长排查问题难度指数上升。AI底座本身调用链就不短再拆细就是给自己找麻烦。等某个服务确实成为瓶颈了再考虑进一步拆分。4. 从零搭一个AI底座QuickBlue落地的关键步骤4.1 环境与依赖准备别在版本兼容上栽跟头搭AI底座第一步不是写代码是把环境理顺。基于JDK 21和Spring Cloud这套组合有几个版本兼容的坑必须提前避开。Spring Boot和Spring Cloud的版本必须严格对应这是最容易出问题的地方。Spring Cloud的发布列车版本和Spring Boot版本有明确的兼容矩阵选错了启动就报错。我的做法是先去官方文档查兼容表锁定一组经过验证的版本组合再开始搭。如果用到Spring Cloud Alibaba的组件要特别留意组件的维护状态。部分组件社区已经推荐了替代方案新建项目时优先选活跃维护的组件避免后期被动迁移。数据库、缓存、消息队列这些中间件的版本也要和框架版本对齐尤其是连接池和驱动版本。提示环境准备阶段建议先搭一个最小可运行的服务把注册、配置、网关这条链路跑通再往上叠AI能力。不要一上来就全量搭建出了问题很难定位是哪一层。4.2 服务骨架搭建先把治理链路跑通骨架搭建的核心目标是让服务能注册、能发现、能配置、能通过网关访问。这几步跑通了微服务的地基就算立住了。服务注册发现是第一步。每个微服务启动后要能注册到注册中心其他服务能通过服务名找到它。这一步验证的标准是启动两个服务一个能通过服务名调用到另一个。配置中心是第二步。把数据库连接、模型密钥、限流阈值这些配置从代码里抽出来放到配置中心统一管理。好处是改配置不用重新打包发版还能按环境隔离。AI底座里模型密钥这类敏感配置更要集中管理不能散落在各个服务的配置文件里。网关是第三步。所有外部请求统一走网关在网关层做鉴权、限流、日志。这样后面的微服务就不用各自处理这些横切关注点。网关的路由规则要设计好AI相关的接口和普通管理接口最好分开路由方便独立限流。4.3 模型接入服务实现统一抽象的落地细节模型接入服务是AI底座的核心。实现时建议分三层接口层定义统一的模型调用契约适配层实现各家模型的协议转换路由层决定请求走向。统一契约的设计要预留扩展空间。请求侧至少要包含模型标识、消息列表、参数配置响应侧要包含内容、用量、耗时、状态。用量信息特别重要它是后续计费的基础从第一天就要采集。适配层实现时把每个模型的差异封装在独立的适配器里。新增一个模型就是新增一个适配器不改动上层代码。这是开闭原则的典型应用。路由层可以先做简单版按模型标识直接路由。等业务复杂了再引入基于规则的路由比如按问题长度、按用户等级、按成本预算来选模型。路由策略要可配置不要硬编码。4.4 知识库服务搭建检索质量决定AI回答质量知识库服务的搭建重点在数据处理链路。文档进来之后要经过解析、清洗、切片、向量化、入库几个环节每个环节都影响最终检索质量。解析环节要支持多种格式PDF、Word、Markdown、HTML各有各的坑。PDF的表格和图片处理尤其麻烦能提取文本就先提取复杂的后面再优化。切片环节前面提过核心是平衡上下文完整性和检索精度。建议切片时保留一定的重叠避免关键信息被切断。切片大小可以先设一个经验值比如几百个字符再根据实际检索效果调整。向量化环节要选好embedding模型。不同模型对中文的支持差异很大选之前最好用实际业务数据测一下检索命中率。向量库的选型也要考虑数据量和查询并发小数据量用轻量方案就够别过度设计。4.5 权限计量与可观测上线前必须补齐的能力很多团队做AI底座功能跑通了就急着上线权限计量和可观测往往被忽略。结果上线后成本失控、问题难查返工代价更大。权限体系要能回答哪个用户、属于哪个租户、能访问哪些模型和知识库。设计上建议用RBAC模型角色绑定权限用户绑定角色。租户隔离要在数据层面做不能只靠应用层过滤。计量体系要能回答每次调用消耗了多少token、花了多少钱、算在哪个租户头上。采集点要放在模型接入层因为那里是唯一能拿到准确用量的地方。数据要能按时间、按租户、按模型多维聚合。可观测体系要能回答一次请求经过了哪些服务、每段耗时多少、哪里出了错。分布式追踪是标配日志要结构化关键指标要能实时监控和告警。AI底座里模型调用的成功率和延迟是最该盯的指标。5. 踩过的坑与实战经验AI底座落地时最容易翻车的地方5.1 模型调用超时与重试别让一次抖动拖垮整个链路模型调用是AI底座里最不稳定的环节。网络抖动、模型服务过载、上游限流都会导致调用失败或超时。如果处理不当一次抖动可能引发连锁反应。我踩过的坑是早期没设超时一个模型调用卡住线程池被占满整个服务不可用。后来加了超时又遇到重试风暴——所有失败请求同时重试把模型服务彻底打挂。正确的做法是超时加熔断加退避重试组合使用。超时要设得合理根据模型的实际响应时间分布来定不能拍脑袋。熔断要在失败率达到阈值时快速切断给下游恢复时间。重试要带指数退避和抖动避免同时重试。对于非幂等的操作重试要格外谨慎。5.2 提示词版本管理改一个词可能毁掉整个效果提示词看着简单管理起来很麻烦。我见过一个真实案例某业务线为了优化一个场景改了一句提示词结果另一个依赖同一提示词的场景效果暴跌因为没人知道这个提示词被多处复用。解决办法是把提示词当代码管理。每个提示词有唯一标识有版本历史有变更记录。修改要经过测试重要提示词的变更要走灰度。底座要能追踪每个提示词被哪些应用引用改之前能评估影响面。另一个经验是提示词不要写得太聪明。有些提示词堆砌了大量规则和示例看着很厉害但换个模型就失效。提示词要尽量简洁、通用把复杂逻辑放到编排层或代码层。5.3 向量检索的精度陷阱检索不准模型再强也白搭检索增强生成的效果七分靠检索三分靠生成。检索不准喂给模型的上下文就是错的模型再强也答不对。常见的精度问题有几个来源。一是切片不合理关键信息被切散。二是embedding模型不适合业务语料语义匹配不准。三是检索策略单一只做向量检索忽略了关键词匹配的价值。我的建议是混合检索向量检索加关键词检索两路结果融合排序。向量检索擅长语义相似关键词检索擅长精确匹配两者互补。另外检索结果要能重排序用更精细的模型对候选结果二次排序能明显提升精度。5.4 多租户下的资源隔离一个租户的洪峰不该影响其他人企业级AI底座通常要服务多个租户或部门。如果资源不隔离一个租户的突发流量可能把整个平台拖慢。隔离要在多个层面做。接入层按租户限流防止单个租户打满入口。模型调用层按租户分配配额保证公平使用。数据层按租户隔离存储既保安全也保性能。关键资源比如GPU可以考虑按租户预留或优先级调度。这里有个权衡隔离越彻底资源利用率越低。完全物理隔离最安全但最浪费完全共享最省资源但风险高。务实的做法是按租户等级分级隔离重要租户给独立资源普通租户共享资源池加限流保护。6. 这套底座后续还能往哪些方向长QuickBlue这类AI底座不是做完就固定的它会随着业务和技术演进而生长。从我的观察看有几个方向值得提前布局。一是模型能力的动态编排。现在多数底座还是单模型调用未来更常见的是多模型协作——一个复杂任务拆成几步每步用最合适的模型。底座要能支持这种编排把模型当成可组合的能力单元。二是效果评估的闭环。AI应用的效果很难量化但企业需要知道钱花得值不值。底座如果能内置效果评估能力采集用户反馈、对比不同模型和提示词的效果就能帮企业持续优化。三是成本优化的自动化。模型调用成本是AI应用的大头但优化往往靠人工。底座可以基于历史数据自动推荐更经济的模型或参数配置把降本做成常态化能力。四是与现有系统的深度融合。AI底座不能是孤岛它要能和企业已有的用户体系、权限体系、监控体系打通。集成做得越顺落地阻力越小。我在实际项目里的体会是AI底座的价值不在于功能多全而在于能不能让上层业务用得省心。一个底座如果让业务团队接入AI的时间从两周缩短到两天让成本从糊涂账变成明白账让故障从手忙脚乱变成快速定位那它就是成功的。技术选型、架构设计、功能取舍最终都要回到这个标准上来判断。
返回列表