大厂偏爱的Agent技术究竟是个啥

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 为了解释什么是Agent技术,我在网上搜了一圈,但没有找到想要的结果。反倒是搜到了不少Java Agent技术,要注意Java Agent技术指的是一种Java字节码修改技术,和本文要说的完全是两码事。既然搜不到,我就说下自己的理解吧。Agent技术是在「客户端」机器上部署一个Agent进程,「客户端」与「服务端」的交互通过这个Agent进行代理,其中Agent与Client通常在同一主机,即可通过「localhost」进行访问。

hello大家好,我是小楼,今天给大家分享一个关于Agent技术的话题,也是后端启示录的第3篇文章。


通过本文你可以了解到如下内容


2379072-20220223101911807-1168662116.png


什么是Agent技术


为了解释什么是Agent技术,我在网上搜了一圈,但没有找到想要的结果。反倒是搜到了不少Java Agent技术,要注意Java Agent技术指的是一种Java字节码修改技术,和本文要说的完全是两码事


既然搜不到,我就说下自己的理解吧。Agent技术是在「客户端」机器上部署一个Agent进程,「客户端」与「服务端」的交互通过这个Agent进行代理,其中Agent与Client通常在同一主机,即可通过「localhost」进行访问。


2379072-20220223101917768-265920269.png


看到这里,相信你能想到不少类似的架构,例如当前大热的Service Mesh,又如Flume Agent等等。


在我所在的公司,Agent技术也被非常广泛的使用,涉及了日志处理、配置下发、服务注册发现、监控数据收集等方面。


Agent技术能解决什么问题


既然Agent技术被如此广泛的运用,那么它主要是为了解决什么问题呢?


要充分理解它,我们需要从Agent的特点去考虑。


  1. 进程级资源隔离


这点可以参考之前我写的文章《Cobar SQL审计的设计与实现》,为了在Cobar中新增SQL审计的功能,第一考虑的是稳定性,不想因为引入了新的组件(Kafka)导致Cobar不可用,所以将SQL收集存储部分独立为一个Agent。


如果将逻辑放在业务进程中,首先资源(Cpu、内存等)消耗不可控,其次也极易有可能引入Bug导致原进程崩溃。


  1. 语言框架无关


举个日志切割的例子,如果大家都用Java,并用了Log4J日志框架,那么完全可以使用一个配置来把日志按时间进行切割和保留。


但如果有人使用了一个小众的语言,或者用了一个不具备日志切割能力的日志框架,这时想拥有Log4J同样的日志切割能力怎么办呢?


你可能会说怎么会有这样的日志框架,可能大家用Log4J或Logback这样的日志框架都太过于强大了,事实上其他语言真的有这样的,而且日志框架也有很多轮子,质量参差不齐。


不能要求每个日志框架都具备同等的能力,只能通过一个Agent进程来处理。


看到这里,你可能已经发现这个Agent已经超出文章开头的定义了,严格来说叫「Sidecar模式」,但这个词更多的用在Service Mesh上,所以本文还是用Agent来代替。


  1. 存算分离


这个概念在数据库和消息队列使用的比较多,这里我借用一下,如果表述不准确还请见谅。


在没有Agent之前,服务端负责数据的存储和计算,在有了Agent后,服务端的部分计算可以交给Agent,这样不仅可以减少服务端的压力,也能大幅度降低服务端代码的复杂度。


  1. 基础组件与业务解耦


这点用Service Mesh的例子讲解恰到好处,对于流量的治理,比如限流、熔断、切流,原先实现在RPC框架,每一次改动升级都需要业务方修改依赖升级并发布,而使用Agent技术后,将原先RPC具有的能力下沉到Agent,变更也只需要升级Agent,业务与基础组件的研发互不相干,效率得到极大地提升。


为什么大厂偏爱Agent技术


大厂的特点是人多,人多必然带来一些效率上的问题,所以大厂在工程效率上的探索往往走的比较靠前,他们会把基础架构和业务研发分开,大家的边界很清晰,各司其职。


但这也带来了很严重的问题,如果基础组件和业务耦合比较严重,那就导致架构的演进受到阻碍。


举个例子,某一天基础架构部新增了一个维度的限流能力,升级推广需要业务方操作,这时刚好业务紧急,那基础组件的升级势必会搁置。


于是基础组件与业务解耦的Agent技术受到大厂的偏爱。


大厂同样有个问题是技术栈众多,有时候为了跨语言、跨框架地解决问题,只能采用Agent技术。


Agent关键技术和缺点


Agent关键技术有很多,看起来不难,但要做好,确实得下很多功夫:


  • 资源隔离,这点通常使用cgroups技术
  • Agent生命周期管理,包括Agent的上线、升级、灰度、下线等等的管理,需要有统一的管控平台,否则Agent的管理将会非常头疼
  • 进程间通信,这点不是必须,但大多数Agent需要考虑这点,一般可选项有如下可选,结合实际情况进行选择即可


2379072-20220223101927562-1883951854.jpg


  • 稳定性,Agent随时会挂,要带着这个去设计实现Agent
  • 资源消耗问题
  • Agent毕竟只是个附属品,不能占用过多的内存、CPU,启动速度也得快,从这点来看Go是个不错的选择
  • 在容器的环境下,Agent独立为一个容器和业务容器组成Pod,这就导致了一台物理机上装了很多Agent容器,资源浪费严重,同理,虚拟机也是如此。所以省资源的玩法是一台物理机只装一个Agent,做好租户隔离即可。


技术没有银弹,Agent也有它的缺点:


  • 架构复杂,管理困难使多小厂望而却步
  • 性能问题,如果是直接代理流量,性能问题会很严重,毕竟在网络通信上多了一跳,这也是Service Mesh的问题之一,甚至还演进出了proxyless Mesh


最后说一句


虽然看完本文你也不知道怎么实现一个Agent,但通过本文你能了解到Agent技术是什么,有什么好处,大厂为什么偏爱这项技术,以及要实现一个Agent的技术关键点和缺点各是什么。


这也是后端启示录系列文章的出发点,「为什么」比「怎么做」更重要。如果你也喜欢这类文章,读完有那么一点收获,希望你能帮我点个在看关注,当然能分享出去就更好了,我会继续加油写这个系列~我们下期再见!




相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
2月前
|
机器学习/深度学习 人工智能 自动驾驶
「AIGC」Agent AI智能体的未来:技术、伦理与经济的交汇点
Agent AI智能体融合机器学习与深度学习,推动社会效率与创新,但也引发伦理、法律及就业挑战。技术上,它们能自我优化、积累知识,如自动驾驶汽车通过学习改善驾驶。伦理上,需建立AI准则,确保透明度和责任归属,如医疗AI遵循道德原则。经济上,AI改变就业市场结构,创造新职业,如AI顾问,同时要求教育体系更新。未来,平衡技术进步与社会影响至关重要。
195 0
|
1月前
|
人工智能 安全 开发者
OpenDevin出技术报告了,大模型Agent开发者必读
【8月更文挑战第25天】近期发布的OpenDevin技术报告备受瞩目,此报告由来自伊利诺伊大学香槟分校、卡内基梅隆大学等顶尖学府的研究员联合撰写。OpenDevin作为一个社区驱动的开放平台,旨在为AI软件开发者提供一个模拟通用代理的强大工具。平台采用事件流架构促进用户界面、代理与环境间的交互,并构建了包含沙盒操作系统和网络浏览器的任务执行环境。此外,它支持多代理协同作业及一系列评估标准,目前已涵盖15个评估基准。作为拥有160多位贡献者的社区项目,OpenDevin展现了极高的灵活性和安全性,同时也面临着技术门槛和进一步研发等挑战。
63 2
|
1月前
|
传感器 机器学习/深度学习 人工智能
人工智能中的Agent技术解析
【8月更文挑战第18天】总之,Agent作为人工智能领域的重要分支,将在未来发挥更加重要的作用。随着技术的不断进步和应用场景的不断拓展,Agent技术将为我们带来更加智能、便捷和高效的生活体验。
|
17天前
|
存储 机器学习/深度学习 人工智能
深入浅出 AI 智能体(AI Agent)|技术干货
随着人工智能技术的发展,智能体(AI Agents)逐渐成为人与大模型交互的主要方式。智能体能执行任务、解决问题,并提供个性化服务。其关键组成部分包括规划、记忆和工具使用,使交互更加高效、自然。智能体的应用涵盖专业领域问答、资讯整理、角色扮演等场景,极大地提升了用户体验与工作效率。借助智能体开发平台,用户可以轻松打造定制化AI应用,推动AI技术在各领域的广泛应用与深度融合。
222 0
|
2月前
|
存储 机器学习/深度学习 人工智能
AI Agent技术的最新进展与改变世界的典型项目巡礼
【7月更文挑战第3天】 AI Agent技术的最新进展与改变世界的典型项目巡礼
 AI Agent技术的最新进展与改变世界的典型项目巡礼
|
2月前
|
人工智能 前端开发 数据可视化
手猫助手Agent技术探索总结(2)
手猫助手Agent技术探索总结
|
2月前
|
存储 人工智能 自然语言处理
手猫助手Agent技术探索总结(1)
手猫助手Agent技术探索总结
|
2月前
|
机器学习/深度学习 算法 Python
强化学习(Reinforcement Learning, RL)** 是一种机器学习技术,其中智能体(Agent)通过与环境(Environment)交互来学习如何执行决策以最大化累积奖励。
强化学习(Reinforcement Learning, RL)** 是一种机器学习技术,其中智能体(Agent)通过与环境(Environment)交互来学习如何执行决策以最大化累积奖励。
|
4月前
|
人工智能 测试技术 API
【AIGC】LangChain Agent(代理)技术分析与实践
【5月更文挑战第12天】 LangChain代理是利用大语言模型和推理引擎执行一系列操作以完成任务的工具,适用于从简单响应到复杂交互的各种场景。它能整合多种服务,如Google搜索、Wikipedia和LLM。代理通过选择合适的工具按顺序执行任务,不同于链的固定路径。代理的优势在于可以根据上下文动态选择工具和执行策略。适用场景包括网络搜索、嵌入式搜索和API集成。代理由工具组成,每个工具负责单一任务,如Web搜索或数据库查询。工具包则包含预定义的工具集合。创建代理需要定义工具、初始化执行器和设置提示词。LangChain提供了一个从简单到复杂的AI解决方案框架。
597 3
|
4月前
|
监控 Java Maven
揭秘Java Agent技术:解锁Java工具开发的新境界
作为JDK提供的关键机制,Java Agent技术不仅为Java工具的开发者提供了一个强大的框架,还为性能监控、故障诊断和动态代码修改等领域带来了革命性的变革。本文旨在全面解析Java Agent技术的应用场景以及实现方式,特别是静态加载模式和动态加载模式这两种关键模式。
819 0

热门文章

最新文章