通过本文你可以了解到如下内容:
创新互联建站网站建设提供从项目策划、软件开发,软件安全维护、网站优化(SEO)、网站分析、效果评估等整套的建站服务,主营业务为成都网站设计、成都网站建设,重庆App定制开发以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。创新互联建站深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
为了解释什么是Agent技术,我在网上搜了一圈,但没有找到想要的结果。反倒是搜到了不少Java Agent技术,要注意Java Agent技术指的是一种Java字节码修改技术,和本文要说的完全是两码事。
既然搜不到,我就说下自己的理解吧。Agent技术是在「客户端」机器上部署一个Agent进程,「客户端」与「服务端」的交互通过这个Agent进行代理,其中Agent与Client通常在同一主机,即可通过「localhost」进行访问。
看到这里,相信你能想到不少类似的架构,例如当前大热的Service Mesh,又如Flume Agent等等。
在我所在的公司,Agent技术也被非常广泛的使用,涉及了日志处理、配置下发、服务注册发现、监控数据收集、流量代理等方面。
既然Agent技术被如此广泛的运用,那么它主要是为了解决什么问题呢?
要充分理解它,我们需要从Agent的特点去考虑。
这点可以参考之前我写的文章《Cobar SQL审计的设计与实现》,为了在Cobar中新增SQL审计的功能,第一考虑的是稳定性,不想因为引入了新的组件(Kafka)导致Cobar不可用,所以将SQL收集存储部分独立为一个Agent。
如果将逻辑放在业务进程中,首先资源(Cpu、内存等)消耗不可控,其次也极易有可能引入Bug导致原进程崩溃。
举个日志切割的例子,如果大家都用Java,并用了Log4J日志框架,那么完全可以使用一个配置来把日志按时间进行切割和保留。
但如果有人使用了一个小众的语言,或者用了一个不具备日志切割能力的日志框架,这时想拥有Log4J同样的日志切割能力怎么办呢?
你可能会说怎么会有这样的日志框架,可能大家用Log4J或Logback这样的日志框架都太过于强大了,事实上其他语言真的有这样的,而且日志框架也有很多轮子,质量参差不齐。
不能要求每个日志框架都具备同等的能力,只能通过一个Agent进程来处理。
看到这里,你可能已经发现这个Agent已经超出文章开头的定义了,Agent所在的机器不一定是Client,他们也不一定会通信,Agent这时更像一个「辅助进程」。
这个概念在数据库和消息队列使用的比较多,这里我借用一下,如果表述不准确还请见谅。
在没有Agent之前,服务端负责数据的存储和计算,在有了Agent后,服务端的部分计算可以交给Agent,这样不仅可以减少服务端的压力,也能大幅度降低服务端代码的复杂度。
这点用Service Mesh的例子讲解恰到好处,对于流量的治理,比如限流、熔断、切流,原先实现在RPC框架,每一次改动升级都需要业务方修改依赖升级并发布,而使用Agent技术后,将原先RPC具有的能力下沉到Agent,变更也只需要升级Agent,业务与基础组件的研发互不相干,效率得到极大地提升。
大厂的特点是人多,人多必然带来一些效率上的问题,所以大厂在工程效率上的探索往往走的比较靠前,他们会把基础架构和业务研发分开,大家的边界很清晰,各司其职。
但这也带来了很严重的问题,如果基础组件和业务耦合比较严重,那就导致架构的演进受到阻碍。
举个例子,某一天基础架构部新增了一个维度的限流能力,升级推广需要业务方操作,这时刚好业务紧急,那基础组件的升级势必会搁置。
于是基础组件与业务解耦的Agent技术受到大厂的偏爱。
大厂同样有个问题是技术栈众多,有时候为了跨语言、跨框架地解决问题,只能采用Agent技术。
Agent关键技术有很多,看起来不难,但要做好,确实得下很多功夫:
技术没有银弹,Agent也有它的缺点:
架构复杂,管理困难使多小厂望而却步
性能问题,如果是直接代理流量,性能问题会很严重,毕竟在网络通信上多了一跳,这也是Service Mesh的问题之一,甚至还演进出了proxyless Mesh
虽然看完本文你也不知道怎么实现一个Agent,但通过本文你能了解到Agent技术是什么,有什么好处,大厂为什么偏爱这项技术,以及要实现一个Agent的技术关键点和缺点各是什么。
网站标题:大厂偏爱的 Agent 技术究竟是个啥
链接URL:http://www.stwzsj.com/qtweb/news49/13249.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联