自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

大廠偏愛的 Agent 技術(shù)究竟是個啥

開發(fā) 前端
Agent技術(shù)是在「客戶端」機(jī)器上部署一個Agent進(jìn)程,「客戶端」與「服務(wù)端」的交互通過這個Agent進(jìn)行代理,其中Agent與Client通常在同一主機(jī),即可通過「localhost」進(jìn)行訪問。

hello大家好,我是小樓,今天給大家分享一個關(guān)于Agent技術(shù)的話題,也是后端啟示錄的第3篇文章。

通過本文你可以了解到如下內(nèi)容:

什么是Agent技術(shù)

為了解釋什么是Agent技術(shù),我在網(wǎng)上搜了一圈,但沒有找到想要的結(jié)果。反倒是搜到了不少Java Agent技術(shù),要注意Java Agent技術(shù)指的是一種Java字節(jié)碼修改技術(shù),和本文要說的完全是兩碼事。

既然搜不到,我就說下自己的理解吧。Agent技術(shù)是在「客戶端」機(jī)器上部署一個Agent進(jìn)程,「客戶端」與「服務(wù)端」的交互通過這個Agent進(jìn)行代理,其中Agent與Client通常在同一主機(jī),即可通過「localhost」進(jìn)行訪問。

看到這里,相信你能想到不少類似的架構(gòu),例如當(dāng)前大熱的Service Mesh,又如Flume Agent等等。

在我所在的公司,Agent技術(shù)也被非常廣泛的使用,涉及了日志處理、配置下發(fā)、服務(wù)注冊發(fā)現(xiàn)、監(jiān)控數(shù)據(jù)收集、流量代理等方面。

Agent技術(shù)能解決什么問題

既然Agent技術(shù)被如此廣泛的運用,那么它主要是為了解決什么問題呢?

要充分理解它,我們需要從Agent的特點去考慮。

進(jìn)程級資源隔離

這點可以參考之前我寫的文章《Cobar SQL審計的設(shè)計與實現(xiàn)》,為了在Cobar中新增SQL審計的功能,第一考慮的是穩(wěn)定性,不想因為引入了新的組件(Kafka)導(dǎo)致Cobar不可用,所以將SQL收集存儲部分獨立為一個Agent。

如果將邏輯放在業(yè)務(wù)進(jìn)程中,首先資源(Cpu、內(nèi)存等)消耗不可控,其次也極易有可能引入Bug導(dǎo)致原進(jìn)程崩潰。

語言框架無關(guān)

舉個日志切割的例子,如果大家都用Java,并用了Log4J日志框架,那么完全可以使用一個配置來把日志按時間進(jìn)行切割和保留。

但如果有人使用了一個小眾的語言,或者用了一個不具備日志切割能力的日志框架,這時想擁有Log4J同樣的日志切割能力怎么辦呢?

你可能會說怎么會有這樣的日志框架,可能大家用Log4J或Logback這樣的日志框架都太過于強大了,事實上其他語言真的有這樣的,而且日志框架也有很多輪子,質(zhì)量參差不齊。

不能要求每個日志框架都具備同等的能力,只能通過一個Agent進(jìn)程來處理。

看到這里,你可能已經(jīng)發(fā)現(xiàn)這個Agent已經(jīng)超出文章開頭的定義了,Agent所在的機(jī)器不一定是Client,他們也不一定會通信,Agent這時更像一個「輔助進(jìn)程」。

存算分離

這個概念在數(shù)據(jù)庫和消息隊列使用的比較多,這里我借用一下,如果表述不準(zhǔn)確還請見諒。

在沒有Agent之前,服務(wù)端負(fù)責(zé)數(shù)據(jù)的存儲和計算,在有了Agent后,服務(wù)端的部分計算可以交給Agent,這樣不僅可以減少服務(wù)端的壓力,也能大幅度降低服務(wù)端代碼的復(fù)雜度。

基礎(chǔ)組件與業(yè)務(wù)解耦

這點用Service Mesh的例子講解恰到好處,對于流量的治理,比如限流、熔斷、切流,原先實現(xiàn)在RPC框架,每一次改動升級都需要業(yè)務(wù)方修改依賴升級并發(fā)布,而使用Agent技術(shù)后,將原先RPC具有的能力下沉到Agent,變更也只需要升級Agent,業(yè)務(wù)與基礎(chǔ)組件的研發(fā)互不相干,效率得到極大地提升。

為什么大廠偏愛Agent技術(shù)

大廠的特點是人多,人多必然帶來一些效率上的問題,所以大廠在工程效率上的探索往往走的比較靠前,他們會把基礎(chǔ)架構(gòu)和業(yè)務(wù)研發(fā)分開,大家的邊界很清晰,各司其職。

但這也帶來了很嚴(yán)重的問題,如果基礎(chǔ)組件和業(yè)務(wù)耦合比較嚴(yán)重,那就導(dǎo)致架構(gòu)的演進(jìn)受到阻礙。

舉個例子,某一天基礎(chǔ)架構(gòu)部新增了一個維度的限流能力,升級推廣需要業(yè)務(wù)方操作,這時剛好業(yè)務(wù)緊急,那基礎(chǔ)組件的升級勢必會擱置。

于是基礎(chǔ)組件與業(yè)務(wù)解耦的Agent技術(shù)受到大廠的偏愛。

大廠同樣有個問題是技術(shù)棧眾多,有時候為了跨語言、跨框架地解決問題,只能采用Agent技術(shù)。

Agent關(guān)鍵技術(shù)和缺點

Agent關(guān)鍵技術(shù)有很多,看起來不難,但要做好,確實得下很多功夫:

  • 資源隔離,這點通常使用cgroups技術(shù)
  • Agent生命周期管理,包括Agent的上線、升級、灰度、下線等等的管理,需要有統(tǒng)一的管控平臺,否則Agent的管理將會非常頭疼
  • 進(jìn)程間通信,這點不是必須,但大多數(shù)Agent需要考慮這點,一般有如下可選,結(jié)合實際情況進(jìn)行選擇即可

  • 穩(wěn)定性,Agent隨時會掛,要帶著這個去設(shè)計實現(xiàn)Agent,最好是Agent可降級,就算沒有Agent,業(yè)務(wù)也可以照樣跑起來
  • 資源消耗問題
  • Agent畢竟只是個附屬品,不能占用過多的內(nèi)存、CPU,啟動速度也得快,從這點來看Go是個不錯的選擇
  • 在容器的環(huán)境下,Agent獨立為一個容器和業(yè)務(wù)容器組成Pod,這就導(dǎo)致了一臺物理機(jī)上裝了很多Agent容器,資源浪費嚴(yán)重,同理,虛擬機(jī)也是如此。所以省資源的玩法是一臺物理機(jī)只裝一個Agent,做好租戶隔離

技術(shù)沒有銀彈,Agent也有它的缺點:

架構(gòu)復(fù)雜,管理困難使多小廠望而卻步

性能問題,如果是直接代理流量,性能問題會很嚴(yán)重,畢竟在網(wǎng)絡(luò)通信上多了一跳,這也是Service Mesh的問題之一,甚至還演進(jìn)出了proxyless Mesh

最后說一句

雖然看完本文你也不知道怎么實現(xiàn)一個Agent,但通過本文你能了解到Agent技術(shù)是什么,有什么好處,大廠為什么偏愛這項技術(shù),以及要實現(xiàn)一個Agent的技術(shù)關(guān)鍵點和缺點各是什么。


責(zé)任編輯:武曉燕 來源: 捉蟲大師
相關(guān)推薦

2014-08-05 09:43:59

超級手機(jī)病毒XXshengqi

2020-06-11 09:18:34

動靜分離架構(gòu)架構(gòu)設(shè)計開發(fā)

2023-10-18 09:42:09

OpenAIGPU手機(jī)

2025-02-25 14:07:25

2019-04-26 13:55:02

Istio微服務(wù)架構(gòu)

2019-01-03 14:45:07

CPUMCUFPGA

2012-05-28 22:49:50

PureView

2019-05-30 16:27:34

2025-03-31 00:33:00

2011-02-28 09:51:43

內(nèi)省

2025-02-27 09:40:00

2019-07-22 15:29:53

JavaScriptGitHub語言

2019-06-04 14:15:08

JavaScript V8前端

2011-02-16 16:13:40

Debian

2021-05-27 11:08:44

接入網(wǎng)網(wǎng)絡(luò)互聯(lián)網(wǎng)

2015-12-30 10:43:13

白盒網(wǎng)絡(luò)SDN

2022-10-19 12:23:50

緩存CDN外部緩存

2018-07-05 16:15:26

緩存數(shù)據(jù)cache miss

2010-08-24 09:19:59

2021-11-02 09:20:23

區(qū)塊鏈比特幣架構(gòu)
點贊
收藏

51CTO技術(shù)棧公眾號