标签 软件工程 下的文章

在软件开发流程中,代码编译是不可或缺的一环。面对日益增长的开源项目规模和复杂性,手动进行仓库级编译往往伴随着效率低下和错误频发的问题。如何有效应对环境配置、依赖管理及编译错误等挑战,是当前自动化软件分析领域的一个重要课题。今天,我们很高兴向大家介绍一项由奇安信星图实验室中国科学技术大学共同参与的研究项目——CompileAgent,这项工作已成功中稿ACL 2025!它是一个基于大型语言模型(LLM)的智能体框架,旨在探索仓库级代码编译的自动化方案。

仓库级编译的挑战

与简单的单文件编译不同,对整个代码仓库进行编译涉及复杂的构建配置和多文件间的相互依赖。开发者们在这一过程中常遇到诸多难题,例如查找准确的编译指令、处理依赖冲突、解决环境不匹配以及代码兼容性问题等。这些挑战使得自动化编译成为一个复杂且有待深入探索的领域。

CompileAgent:一个LLM驱动的仓库级自动化编译框架

受到LLM在自动化复杂任务方面应用前景的启发,我们提出了CompileAgent——首个专为仓库级代码编译任务设计的LLM智能体框架。它旨在通过模拟开发者的编译工作流,自主地搜索编译指令并解决编译过程中出现的错误。

CompileAgent的关键组成:

CompileAgent集成了五种工具和一个流式代理策略,主要通过以下两个核心模块协同工作:

  • CompileNavigator(编译导航模块):负责在代码仓库中寻找并提取正确的编译指令。它利用Shell工具与交互环境进行操作,通过文件导航器(File Navigator)识别可能包含指令的文件,并借助指令提取器(Instruction Extractor)从文件中提炼出编译步骤,甚至从相关URL获取网页内容进行汇总。
  • ErrorSolver(错误解决模块):专用于处理项目构建过程中遇到的编译错误。它包含网页搜索(Website Search)工具,能够查询在线资源(如GitHub和StackOverflow)以获取解决方案。此外,它还采用了多智能体讨论(Multi-Agent Discussion)机制,多个LLM智能体通过多轮讨论,共同分析复杂的编译错误并生成初始解决方案,直到达成共识。

CompileAgent遵循一种流式代理策略,该策略定义了工具的使用顺序,并通过提示词实现工具间的无缝衔接。

CompileAgent系统架构图

实验效果

我们构建了CompileAgentBench,一个包含100个C/C++项目的仓库级编译基准,使用七个主流LLM驱动CompileAgent进行了评估。实验结果显示了CompileAgent的有效性:

  • 编译成功率提升:相较于现有的基线方法(OSS-FuZZ-Gen)和针对辅助编译而构建的方案(Readme-Al 和 RAG),CompileAgent的编译成功率提升了17%至71%。例如,在Claude-3.5-sonnet模型上,成功率提升了71%。
  • 编译时间减少: 编译总时间可减少最多121.9小时。

成本效益: 平均每个项目的编译成本约为0.22美元。

CompileAgent实验结果对比图

讨论与未来潜力

CompileAgent的实践经验表明,LLM智能体在处理复杂的软件工程任务方面具有潜力。这项工作在多个领域提供了启发意义:

  • 自动化CI/CD: 仓库级自动化编译是持续集成/持续部署(CI/CD)流程中的关键一步。CompileAgent的成功经验为构建更智能、更自主的CI/CD流水线提供了新的思路。
  • 自动化程序分析: 编译成功所生成的二进制文件或库可用于后续的性能测试、优化和安全漏洞分析。CompileAgent也可以继承编译时代码分析工具(如Coverity Scan和Scan-Build),可以进一步提升自动化程序分析的效率和可靠性。
  • 软件标准测试环境自动化构建: 通过自动完成复杂的编译过程,CompileAgent有助于快速搭建和维护标准化的软件测试环境,降低环境配置的难度和耗时。
  • 多语言与跨架构编译: 借助其可扩展性,CompileAgent有望支持多语言(如Go、Rust等)和多架构(如MIPS、ARM等)的编译,从而拓展其应用范围。

CompileAgent的工作为LLM在真实世界软件工程领域的应用打开了新的视角。我们期待它能在未来的自动化开发实践中发挥更大的作用。

实践应用

实际上,CompileAgent在我们先前发布的ReCopilot项目的数据构建过程中起到了重要作用。我们使用它自动化编译了上百个开源项目,构建了9,733个 artifact-level 二进制文件,节省了约7人天的枯燥劳动时间,模型推理开销仅约100元人民币。

「ReCopilot由奇安信技术研究院星图实验室研发, 是一个基于大模型的二进制程序分析辅助系统,利用人工智能增强逆向工程工作流程,为人类逆向工程师提供帮助以提升效率。公开Demo:https://tqgpt.qianxin.com/recopilot

更多参考

想了解更多技术细节?欢迎阅读我们的学术论文或访问项目主页:

感谢您的阅读,期待CompileAgent能为您的研究带来启发!

这两天技术圈里热议的一件事就是Amazon的流媒体平台Prime Video在2023年3月22日发布了一篇技术博客《规模化Prime Video的音视频监控服务,成本降低90%》,副标题:“从分布式微服务架构到单体应用程序的转变有助于实现更高的规模、弹性和降低成本”,有人把这篇文章在五一期间转到了reddithacker news 上,在Reddit上热议。这种话题与业内推崇的微服务架构形成了鲜明的对比。从“微服务架构”转“单体架构”,还是Amazon干的,这个话题足够劲爆。然后DHH在刚喷完Typescript后继续发文《即便是亚马逊也无法理解Servless或微服务》,继续抨击微服务架构,于是,瞬间引爆技术圈,登上技术圈热搜。

今天上午有好几个朋友在微信里转了三篇文章给我,如下所示:

看看这些标题就知道这些文章要的是流量而不是好好写篇文章。看到第二篇,你还真当 Prime Video 就是 Amazon 的全部么?然后,再看看这些文章后面的跟风评论,我觉得有 80%的人只看标题,而且是连原文都不看的。所以,我想我得写篇文章了……

原文解读

要认清这个问题首先是要认认真真读一读原文,Amazon Prime Video 技术团队的这篇文章并不难读,也没有太多的技术细节,但核心意思如下:

1)这个系统是一个监控系统,用于监控数据千条用户的点播视频流。主要是监控整个视频流运作的质量和效果(比如:视频损坏或是音频不同步等问题),这个监控主要是处理视频帧,所以,他们有一个微服务主要是用来把视频拆分成帧,并临时存在 S3 上,就是下图中的 Media Conversion 服务。

2)为了快速搭建系统,Prime Video团队使用了Serverless 架构,也就是著名的 AWS Lambda 和 AWS Step Functions。前置 Lambda 用来做用户请求的网关,Step Function 用来做监控(探测器),有问题后,就发 SNS 上,Step Function 从 S3 获取 Media Conversion 的数据,然后把运行结果再汇总给一个后置的 Lambda ,并存在 S3 上。

整个架构看上去非常简单 ,一点也不复杂,而且使用了 Serverless 的架构,一点服务器的影子都看不见。实话实说,这样的开发不香吗?我觉得很香啊,方便快捷,完全不理那些无聊的基础设施,直接把代码转成服务,然后用 AWS 的 Lamda + Step Function + SNS + S3 分分钟就搭出一个有模有样的监控系统了,哪里不好了?!

但是他们遇到了一个比较大的问题,就是 AWS Step Function 的伸缩问题,从文章中我看到了两个问题(注意前方高能):

  1. 需要很多很多的并发的 AWS Step Function ,于是达到了帐户的 hard limit。
  2. AWS Step Function 按状态转换收费,所以,贵得受不了了。

注意,这里有两个关键点:1)帐户对 Step Function 有限制,2)Step Function 太贵了用不起

然后,Prime Video 的团队开始解决问题,下面是解决的手段:

1) 把 Media Conversion  和 Step Function 全部写在一个程序里,Media Conversion 跟 Step Function 里的东西通过内存通信,不再走S3了。结果汇总到一个线程中,然后写到 S3.

2)把上面这个单体架构进行分布式部署,还是用之前的 AWS Lambda 来做入门调度。

EC2 的水平扩展没有限制,而且你想买多少 CPU/MEM 的机器由你说了算,而这些视频转码,监控分析的功能感觉就不复杂,本来就应该写在一起,这么做不更香吗?当然更香,比前面的 Serverless 的确更香,因为如下的几个原因:

  1. 不再受 Step Function 的限制了,技术在自己手里,有更大的自由度。
  2. 没有昂贵的 Step Function 云成本的确变得更低了,如果你把 Lambda 换成 Nginx 或 Spring Gateway 或是我司的 Easegress,你把 S3 换成 MinIO,你把 SNS 换成 Kafka,你的成本 还能再低。

独立思考

好了,原文解读完了,你有自己的独立思考了吗?下面是我的独立思考,供你参考:

1)AWS 的 Serverless 也好, 微服务也好,单体也好,在合适的场景也都很香。这就跟汽车一样,跑车,货车,越野车各有各的场景,你用跑车拉货,还是用货车泡妞都不是一个很好的决定。

2)这篇文章中的这个例子中的业务太过简单了,本来就是一两个服务就可以干完的事。就是一个转码加分析的事,要分开的话,就两个微服务就好了(一个转码一个分析),做成流式的。如果不想分,合在一起也没问题了,这个粒度是微服务没毛病。微服务的划分有好些原则,我这里只罗列几个比较重要的原则:

  • 边界上下文。微服务的粒度不能大于领域驱动里的 Bounded Context(具体是什么 大家自行 Google),也就是一个业务域。
  • 单一职责,高内聚,低耦合。把因为相同原因变化的合在一起(内聚),把不同原因变化的分开(解耦)
  • 事务和一致性。对于两个重度依赖的功能,需要完成一个事务和要保证强一致性的,最好不要拆开,要放在一起。
  • 跟组织架构匹配。把同一个团队的东西放在一起,不同团队的分开。

3)Prime Video 遇到的问题不是技术问题,而是 AWS  Step Function 处理能力不足,而且收费还很贵的问题。这个是 AWS 的产品问题,不是技术问题。或者说,这个是Prime Video滥用了Step Function的问题(本来这种大量的数据分析处理就不适合Step Function)。所以,大家不要用一个产品问题来得到微服务架构有问题的结论,这个没有因果关系。试问,如果 Step Funciton 可以无限扩展,性能也很好,而且白菜价,那么 Prime Video 团队还会有动力改成单体吗?他们不会反过来吹爆 Serverless 吗?

4)Prime Video 跟 AWS 是两个独立核算的公司,就像 Amazon 的电商和 AWS 一样,也是两个公司。Amazon 的电商和 AWS 对服务化或是微服务架构的理解和运维,我个人认为这个世界上再也找不到另外一家公司了,包括 Google 或 Microsoft。你有空可以看看本站以前的这篇文章《Steve Yegg对Amazon和Google平台的吐槽》你会了解的更多。

5)Prime Video 这个案例本质上是“下云”,下了 AWS Serverless 的云。云上的成本就是高,一个是费用问题,另一个是被锁定的问题。Prime Video 团队应该很庆幸这个监控系统并不复杂,重写起来也很快,所以,可以很快使用一个更传统的“服务化”+“云计算”的分布式架构,不然,就得像 DHH 那样咬牙下云——《Why We’re Leaving the Cloud》(他们的 SRE 的这篇博文 Our Cloud Spend in 2022说明了下云的困难和节约了多少成本)

后记

最后让我做个我自己的广告。我在过去几年的创业中,帮助了很多公司解决了这些 分布式,微服务,云原生以及云计算成本的问题,如果你也有类似问题。欢迎,跟我联系:[email protected]

另外,我们今年发布了一个平台 MegaEase Cloud,就是想让用户在不失去云计算体验的同时,通过自建高可用基础架构的方式来获得更低的成本(至少降 50%的云计算成本)。目前可以降低成本的方式:

  1. 基础软件:通过开源软件自建,
  2. 内容分发:MinIO + Cloudflare 的免费 CDN,
  3. 马上准备发布的直接与底层IDC合作的廉价GPU计算资源…

欢迎大家试用。

如何访问

注:这两个区完全独立,帐号不互通。因为网络的不可抗力,千万不要跨区使用。

产品演示

介绍文章

 

2025 年,我们分别在北京上海举办了两场 QCon 全球软件开发大会。过去一年里,我们和大量一线技术团队、工程负责人、开发者持续交流,感受到一个很明显的变化:大家讨论的重点,正在从“AI 能做什么”,转向“AI 怎么在生产系统里稳定运行、可控交付、持续产生价值”。

这不是热度退去,而是行业进入了更难、也更关键的阶段——从演示走向长期运行,从能力展示走向工程兑现。

同时,越来越多团队开始回到同一个问题:当 AI 真正进入业务流程后,系统能不能“长期跑得住”?成本能不能算得清?质量、风险、合规能不能兜得住?组织的协作方式要不要跟着变?

在这样的背景下,智能体(Agentic AI) 成为不少团队正在尝试的新方向:它不只是一次回答或一次推理,而是把感知、工具调用、任务执行、反馈迭代串成一个可运营的流程,逐步嵌入研发、交付与业务链路。可以预期,进入 2026 年,这类探索会从局部试点走向更体系化的工程建设:不仅是“加一个 AI 功能”,而是软件系统、研发流程乃至组织协作方式都要随之调整。

软件工程正在发生的变化

我们看到的变化不只是工具升级,更像是一套工程范式在被重写:

  • 系统架构开始围绕「智能体协作」重新设计

  • 工程方法论从「确定性流程」迈向「人机协同闭环」

  • 研发组织面临角色重塑与能力重构

  • 产品与交互从“界面驱动”走向“意图与行动驱动”

从基础设施、推理与知识体系,到研发与交付流程,再到前端、客户端与应用体验——AI 正在以更工程化的方式进入软件生产。

QCon 北京 2026 的核心主线

基于这一判断,QCon 北京 2026 将以 「Agentic AI 时代的软件工程重塑」 作为大会核心主线,把讨论从 「AI For What」,走向真正可持续的 「Value From AI」

围绕这一主线,我们将从六个关键维度系统性展开探索:

前沿技术雷达(Future Tech)

关注未来 1–2 年最值得提前布局的方向:Agentic AI 的新形态、下一代模型、交互范式与系统架构演进。

架构设计与数据底座(系统可演进)

讨论如何构建可扩展、可演进、可复用的 AI 系统:Agent 架构、数据治理、知识体系与工程实践,回答“能不能长期跑”的问题。

效能与成本(拒绝盲目烧钱)

关注让 AI “跑得起、跑得快、跑得稳”的工程方法:在算力、推理、工程效率与 ROI 之间,寻找真正可持续的平衡点。

产品与交互(体验提升)

聚焦前端、客户端与产品层的 AI 原生改造:人机协作、意图驱动交互、任务闭环体验,以及 Agent 参与下的产品新范式。

可信落地(守住底线)

讨论 AI 带来的新风险。从 Demo 到  Production 的“最后一公里”信任危机。

研发组织进化(长期主义)

关注未来团队如何生存与进化:重塑研发角色分工、协作模式与工程文化,构建面向 AI 时代的组织能力。

我们希望在 QCon 北京 2026 呈现的

QCon 北京 2026 想呈现的,不只是“又一场关于 AI 的大会”,而是这轮变化真正落到工程与组织之后的全景:哪些方向已经走通,哪些正在付出真实成本,哪些系统必须被重构

目前,北京站部分专题已上线,我们期望持续挖掘来自一线生产环境的长期实践,呈现 Agentic AI 融入软件工程后的真实样貌——成功经验、工程妥协与关键取舍并存。

更多嘉宾邀请进行中

也欢迎你带着真实问题与实践加入其中,与更多同行一起,把这场正在发生的软件工程重塑讲清楚、做扎实。

QCon 北京 2026,期待与你一起,站在拐点之上。

📍 会议官网https://qcon.infoq.cn/2026/beijing/

📩 演讲申请https://jinshuju.com/f/Cu32l5

演讲评审标准

  • 观点:是否清晰、有判断力,能否帮助听众形成有效认知

  • 实践:内容须来源于真实工程或业务实践

  • 深度:是否具备可复用的方法论或经验价值

  • 专业声誉:演讲者在相关领域的实践背景与影响力

  • 不做广告:QCon 不是厂商宣传舞台

  • 听众所得:听众能带走什么,是我们最关注的标准

演讲嘉宾福利

  • 🎟 免费参会:自由参加大会全部课程

  • 💸 专属折扣:提供特别优惠码,方便同事与朋友购票

  • 📰 独家报道:有机会接受 InfoQ / 极客时间的深度采访

  • 🏨 免费住宿:为外地嘉宾提供酒店入住

  • ✈️ 无忧差旅:承担嘉宾往返会场的交通费用

这两天技术圈里热议的一件事就是Amazon的流媒体平台Prime Video在2023年3月22日发布了一篇技术博客《规模化Prime Video的音视频监控服务,成本降低90%》,副标题:“从分布式微服务架构到单体应用程序的转变有助于实现更高的规模、弹性和降低成本”,有人把这篇文章在五一期间转到了reddithacker news 上,在Reddit上热议。这种话题与业内推崇的微服务架构形成了鲜明的对比。从“微服务架构”转“单体架构”,还是Amazon干的,这个话题足够劲爆。然后DHH在刚喷完Typescript后继续发文《即便是亚马逊也无法理解Servless或微服务》,继续抨击微服务架构,于是,瞬间引爆技术圈,登上技术圈热搜。

今天上午有好几个朋友在微信里转了三篇文章给我,如下所示:

看看这些标题就知道这些文章要的是流量而不是好好写篇文章。看到第二篇,你还真当 Prime Video 就是 Amazon 的全部么?然后,再看看这些文章后面的跟风评论,我觉得有 80%的人只看标题,而且是连原文都不看的。所以,我想我得写篇文章了……

原文解读

要认清这个问题首先是要认认真真读一读原文,Amazon Prime Video 技术团队的这篇文章并不难读,也没有太多的技术细节,但核心意思如下:

1)这个系统是一个监控系统,用于监控数据千条用户的点播视频流。主要是监控整个视频流运作的质量和效果(比如:视频损坏或是音频不同步等问题),这个监控主要是处理视频帧,所以,他们有一个微服务主要是用来把视频拆分成帧,并临时存在 S3 上,就是下图中的 Media Conversion 服务。

2)为了快速搭建系统,Prime Video团队使用了Serverless 架构,也就是著名的 AWS Lambda 和 AWS Step Functions。前置 Lambda 用来做用户请求的网关,Step Function 用来做监控(探测器),有问题后,就发 SNS 上,Step Function 从 S3 获取 Media Conversion 的数据,然后把运行结果再汇总给一个后置的 Lambda ,并存在 S3 上。

整个架构看上去非常简单 ,一点也不复杂,而且使用了 Serverless 的架构,一点服务器的影子都看不见。实话实说,这样的开发不香吗?我觉得很香啊,方便快捷,完全不理那些无聊的基础设施,直接把代码转成服务,然后用 AWS 的 Lamda + Step Function + SNS + S3 分分钟就搭出一个有模有样的监控系统了,哪里不好了?!

但是他们遇到了一个比较大的问题,就是 AWS Step Function 的伸缩问题,从文章中我看到了两个问题(注意前方高能):

  1. 需要很多很多的并发的 AWS Step Function ,于是达到了帐户的 hard limit。
  2. AWS Step Function 按状态转换收费,所以,贵得受不了了。

注意,这里有两个关键点:1)帐户对 Step Function 有限制,2)Step Function 太贵了用不起

然后,Prime Video 的团队开始解决问题,下面是解决的手段:

1) 把 Media Conversion  和 Step Function 全部写在一个程序里,Media Conversion 跟 Step Function 里的东西通过内存通信,不再走S3了。结果汇总到一个线程中,然后写到 S3.

2)把上面这个单体架构进行分布式部署,还是用之前的 AWS Lambda 来做入门调度。

EC2 的水平扩展没有限制,而且你想买多少 CPU/MEM 的机器由你说了算,而这些视频转码,监控分析的功能感觉就不复杂,本来就应该写在一起,这么做不更香吗?当然更香,比前面的 Serverless 的确更香,因为如下的几个原因:

  1. 不再受 Step Function 的限制了,技术在自己手里,有更大的自由度。
  2. 没有昂贵的 Step Function 云成本的确变得更低了,如果你把 Lambda 换成 Nginx 或 Spring Gateway 或是我司的 Easegress,你把 S3 换成 MinIO,你把 SNS 换成 Kafka,你的成本 还能再低。

独立思考

好了,原文解读完了,你有自己的独立思考了吗?下面是我的独立思考,供你参考:

1)AWS 的 Serverless 也好, 微服务也好,单体也好,在合适的场景也都很香。这就跟汽车一样,跑车,货车,越野车各有各的场景,你用跑车拉货,还是用货车泡妞都不是一个很好的决定。

2)这篇文章中的这个例子中的业务太过简单了,本来就是一两个服务就可以干完的事。就是一个转码加分析的事,要分开的话,就两个微服务就好了(一个转码一个分析),做成流式的。如果不想分,合在一起也没问题了,这个粒度是微服务没毛病。微服务的划分有好些原则,我这里只罗列几个比较重要的原则:

  • 边界上下文。微服务的粒度不能大于领域驱动里的 Bounded Context(具体是什么 大家自行 Google),也就是一个业务域。
  • 单一职责,高内聚,低耦合。把因为相同原因变化的合在一起(内聚),把不同原因变化的分开(解耦)
  • 事务和一致性。对于两个重度依赖的功能,需要完成一个事务和要保证强一致性的,最好不要拆开,要放在一起。
  • 跟组织架构匹配。把同一个团队的东西放在一起,不同团队的分开。

3)Prime Video 遇到的问题不是技术问题,而是 AWS  Step Function 处理能力不足,而且收费还很贵的问题。这个是 AWS 的产品问题,不是技术问题。或者说,这个是Prime Video滥用了Step Function的问题(本来这种大量的数据分析处理就不适合Step Function)。所以,大家不要用一个产品问题来得到微服务架构有问题的结论,这个没有因果关系。试问,如果 Step Funciton 可以无限扩展,性能也很好,而且白菜价,那么 Prime Video 团队还会有动力改成单体吗?他们不会反过来吹爆 Serverless 吗?

4)Prime Video 跟 AWS 是两个独立核算的公司,就像 Amazon 的电商和 AWS 一样,也是两个公司。Amazon 的电商和 AWS 对服务化或是微服务架构的理解和运维,我个人认为这个世界上再也找不到另外一家公司了,包括 Google 或 Microsoft。你有空可以看看本站以前的这篇文章《Steve Yegg对Amazon和Google平台的吐槽》你会了解的更多。

5)Prime Video 这个案例本质上是“下云”,下了 AWS Serverless 的云。云上的成本就是高,一个是费用问题,另一个是被锁定的问题。Prime Video 团队应该很庆幸这个监控系统并不复杂,重写起来也很快,所以,可以很快使用一个更传统的“服务化”+“云计算”的分布式架构,不然,就得像 DHH 那样咬牙下云——《Why We’re Leaving the Cloud》(他们的 SRE 的这篇博文 Our Cloud Spend in 2022说明了下云的困难和节约了多少成本)

后记

最后让我做个我自己的广告。我在过去几年的创业中,帮助了很多公司解决了这些 分布式,微服务,云原生以及云计算成本的问题,如果你也有类似问题。欢迎,跟我联系:[email protected]

另外,我们今年发布了一个平台 MegaEase Cloud,就是想让用户在不失去云计算体验的同时,通过自建高可用基础架构的方式来获得更低的成本(至少降 50%的云计算成本)。目前可以降低成本的方式:

  1. 基础软件:通过开源软件自建,
  2. 内容分发:MinIO + Cloudflare 的免费 CDN,
  3. 马上准备发布的直接与底层IDC合作的廉价GPU计算资源…

欢迎大家试用。

如何访问

注:这两个区完全独立,帐号不互通。因为网络的不可抗力,千万不要跨区使用。

产品演示

介绍文章

 

这两天技术圈里热议的一件事就是Amazon的流媒体平台Prime Video在2023年3月22日发布了一篇技术博客《规模化Prime Video的音视频监控服务,成本降低90%》,副标题:“从分布式微服务架构到单体应用程序的转变有助于实现更高的规模、弹性和降低成本”,有人把这篇文章在五一期间转到了reddithacker news 上,在Reddit上热议。这种话题与业内推崇的微服务架构形成了鲜明的对比。从“微服务架构”转“单体架构”,还是Amazon干的,这个话题足够劲爆。然后DHH在刚喷完Typescript后继续发文《即便是亚马逊也无法理解Servless或微服务》,继续抨击微服务架构,于是,瞬间引爆技术圈,登上技术圈热搜。

今天上午有好几个朋友在微信里转了三篇文章给我,如下所示:

看看这些标题就知道这些文章要的是流量而不是好好写篇文章。看到第二篇,你还真当 Prime Video 就是 Amazon 的全部么?然后,再看看这些文章后面的跟风评论,我觉得有 80%的人只看标题,而且是连原文都不看的。所以,我想我得写篇文章了……

原文解读

要认清这个问题首先是要认认真真读一读原文,Amazon Prime Video 技术团队的这篇文章并不难读,也没有太多的技术细节,但核心意思如下:

1)这个系统是一个监控系统,用于监控数据千条用户的点播视频流。主要是监控整个视频流运作的质量和效果(比如:视频损坏或是音频不同步等问题),这个监控主要是处理视频帧,所以,他们有一个微服务主要是用来把视频拆分成帧,并临时存在 S3 上,就是下图中的 Media Conversion 服务。

2)为了快速搭建系统,Prime Video团队使用了Serverless 架构,也就是著名的 AWS Lambda 和 AWS Step Functions。前置 Lambda 用来做用户请求的网关,Step Function 用来做监控(探测器),有问题后,就发 SNS 上,Step Function 从 S3 获取 Media Conversion 的数据,然后把运行结果再汇总给一个后置的 Lambda ,并存在 S3 上。

整个架构看上去非常简单 ,一点也不复杂,而且使用了 Serverless 的架构,一点服务器的影子都看不见。实话实说,这样的开发不香吗?我觉得很香啊,方便快捷,完全不理那些无聊的基础设施,直接把代码转成服务,然后用 AWS 的 Lamda + Step Function + SNS + S3 分分钟就搭出一个有模有样的监控系统了,哪里不好了?!

但是他们遇到了一个比较大的问题,就是 AWS Step Function 的伸缩问题,从文章中我看到了两个问题(注意前方高能):

  1. 需要很多很多的并发的 AWS Step Function ,于是达到了帐户的 hard limit。
  2. AWS Step Function 按状态转换收费,所以,贵得受不了了。

注意,这里有两个关键点:1)帐户对 Step Function 有限制,2)Step Function 太贵了用不起

然后,Prime Video 的团队开始解决问题,下面是解决的手段:

1) 把 Media Conversion  和 Step Function 全部写在一个程序里,Media Conversion 跟 Step Function 里的东西通过内存通信,不再走S3了。结果汇总到一个线程中,然后写到 S3.

2)把上面这个单体架构进行分布式部署,还是用之前的 AWS Lambda 来做入门调度。

EC2 的水平扩展没有限制,而且你想买多少 CPU/MEM 的机器由你说了算,而这些视频转码,监控分析的功能感觉就不复杂,本来就应该写在一起,这么做不更香吗?当然更香,比前面的 Serverless 的确更香,因为如下的几个原因:

  1. 不再受 Step Function 的限制了,技术在自己手里,有更大的自由度。
  2. 没有昂贵的 Step Function 云成本的确变得更低了,如果你把 Lambda 换成 Nginx 或 Spring Gateway 或是我司的 Easegress,你把 S3 换成 MinIO,你把 SNS 换成 Kafka,你的成本 还能再低。

独立思考

好了,原文解读完了,你有自己的独立思考了吗?下面是我的独立思考,供你参考:

1)AWS 的 Serverless 也好, 微服务也好,单体也好,在合适的场景也都很香。这就跟汽车一样,跑车,货车,越野车各有各的场景,你用跑车拉货,还是用货车泡妞都不是一个很好的决定。

2)这篇文章中的这个例子中的业务太过简单了,本来就是一两个服务就可以干完的事。就是一个转码加分析的事,要分开的话,就两个微服务就好了(一个转码一个分析),做成流式的。如果不想分,合在一起也没问题了,这个粒度是微服务没毛病。微服务的划分有好些原则,我这里只罗列几个比较重要的原则:

  • 边界上下文。微服务的粒度不能大于领域驱动里的 Bounded Context(具体是什么 大家自行 Google),也就是一个业务域。
  • 单一职责,高内聚,低耦合。把因为相同原因变化的合在一起(内聚),把不同原因变化的分开(解耦)
  • 事务和一致性。对于两个重度依赖的功能,需要完成一个事务和要保证强一致性的,最好不要拆开,要放在一起。
  • 跟组织架构匹配。把同一个团队的东西放在一起,不同团队的分开。

3)Prime Video 遇到的问题不是技术问题,而是 AWS  Step Function 处理能力不足,而且收费还很贵的问题。这个是 AWS 的产品问题,不是技术问题。或者说,这个是Prime Video滥用了Step Function的问题(本来这种大量的数据分析处理就不适合Step Function)。所以,大家不要用一个产品问题来得到微服务架构有问题的结论,这个没有因果关系。试问,如果 Step Funciton 可以无限扩展,性能也很好,而且白菜价,那么 Prime Video 团队还会有动力改成单体吗?他们不会反过来吹爆 Serverless 吗?

4)Prime Video 跟 AWS 是两个独立核算的公司,就像 Amazon 的电商和 AWS 一样,也是两个公司。Amazon 的电商和 AWS 对服务化或是微服务架构的理解和运维,我个人认为这个世界上再也找不到另外一家公司了,包括 Google 或 Microsoft。你有空可以看看本站以前的这篇文章《Steve Yegg对Amazon和Google平台的吐槽》你会了解的更多。

5)Prime Video 这个案例本质上是“下云”,下了 AWS Serverless 的云。云上的成本就是高,一个是费用问题,另一个是被锁定的问题。Prime Video 团队应该很庆幸这个监控系统并不复杂,重写起来也很快,所以,可以很快使用一个更传统的“服务化”+“云计算”的分布式架构,不然,就得像 DHH 那样咬牙下云——《Why We’re Leaving the Cloud》(他们的 SRE 的这篇博文 Our Cloud Spend in 2022说明了下云的困难和节约了多少成本)

后记

最后让我做个我自己的广告。我在过去几年的创业中,帮助了很多公司解决了这些 分布式,微服务,云原生以及云计算成本的问题,如果你也有类似问题。欢迎,跟我联系:[email protected]

另外,我们今年发布了一个平台 MegaEase Cloud,就是想让用户在不失去云计算体验的同时,通过自建高可用基础架构的方式来获得更低的成本(至少降 50%的云计算成本)。目前可以降低成本的方式:

  1. 基础软件:通过开源软件自建,
  2. 内容分发:MinIO + Cloudflare 的免费 CDN,
  3. 马上准备发布的直接与底层IDC合作的廉价GPU计算资源…

欢迎大家试用。

如何访问

注:这两个区完全独立,帐号不互通。因为网络的不可抗力,千万不要跨区使用。

产品演示

介绍文章

 

(全文完)

(转载本站文章请注明作者和出处 酷 壳 – CoolShell ,请勿用于任何商业用途)

好烂啊有点差凑合看看还不错很精彩 (647 人打了分,平均分: 4.32 )

Loading...

1 月 1 日消息,至知创新研究院(IQuest Research)发布全新一代开源代码大模型 IQuest-Coder-V1 系列。据介绍,模型在自主性软件工程、竞赛编程等关键维度上,成为了当下开源模型 SOTA。据悉,至知研究院当前在医疗、LLM、数学、生物、电力等多个方向展开研究和布局,未来还将携手业界开展面向实际场景的技术研发与投资合作,加快技术成果的产业化进程。

据了解,至知创新研究院由九坤投资创始团队发起设立,是独立于量化投研体系的全新平台。至知研究院网页显示,其定位为一个加速 AI 应用落地的研究型组织,致力于为前沿 AI 技术研究做出原创性贡献,加速 AI 在更多垂直领域的应用。

  • 最先进的性能:在 SWE-Bench Verified(81.4%)、BigCodeBench(49.9%)、LiveCodeBench v6(81.1%)及其他主要编程基准测试中取得领先成绩,在代理式软件工程、竞技编程以及复杂工具使用方面均超越同类模型。
  • Code-Flow 训练范式:超越静态代码表示,我们的模型从代码库的演化模式、提交变更和动态代码转换中学习,以理解真实世界的软件开发流程。
  • 双重专业化路径:后训练被分为两条专门化路径 ——Thinking 型(采用以推理为驱动的强化学习,擅长复杂问题求解)和 Instruct 型(为通用编码助手与指令遵循优化)。
  • 高效架构:IQuest-Coder-V1-Loop 变体引入循环机制,优化模型容量与部署开销之间的权衡。
  • 原生长上下文:所有模型原生支持最多 128K Token 的上下文,无需额外的扩展技术。

限制

  • 推理与效率的权衡:Thinking 型模型具备更强的推理能力,但通常生成较长的响应;Instruct 型模型在处理简单任务时更加高效。
  • 代码执行:模型可以生成代码,但不会执行代码;务必在沙箱环境中验证输出。
  • 领域特异性:尽管模型在多样化代码库上训练,但在高度专业化或专有框架上的表现可能有所不同。
  • 事实性:模型可能生成看似合理但不正确的代码;对关键实现进行彻底验证。

Source: 九坤创始团队成立至知创新研究院 开源模型发布_网易科技


📌 转载信息
原作者:
BunnHack
转载时间:
2026/1/1 15:26:22