成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

服務(wù)架構(gòu):事件驅(qū)動架構(gòu)

開發(fā) 架構(gòu)
事件通常來源于外部系統(tǒng),比如IoT中的物理設(shè)備、互聯(lián)網(wǎng)用戶的端上。我們在設(shè)計(jì)時,必須認(rèn)真評估總體的數(shù)據(jù)量和吞吐量,以保證系統(tǒng)能支撐這個量級。

事件驅(qū)動架構(gòu)是由生產(chǎn)者和消費(fèi)者組成,生產(chǎn)者負(fù)責(zé)生產(chǎn)事件,消費(fèi)者監(jiān)聽并消費(fèi)事件。

事件驅(qū)動架構(gòu)

事件分發(fā)以近實(shí)時的方式進(jìn)行,所以當(dāng)事件產(chǎn)生時,消費(fèi)者可以立即做出應(yīng)對。

  • 生產(chǎn)者和消費(fèi)者是解耦的,它不知道有哪些消費(fèi)者在監(jiān)聽事件
  • 消費(fèi)者之間也是解耦的,每個消費(fèi)者都可以讀取所有事件。

還有一種模式,多個消費(fèi)者是競爭的關(guān)系,它們從同一個隊(duì)列消費(fèi),不出現(xiàn)錯誤的情況下每個事件都只被處理一次。

另外,在某些系統(tǒng)中,事件導(dǎo)入的吞吐量要求也很高,比如IoT系統(tǒng)。

事件驅(qū)動架構(gòu)可以通過發(fā)布/訂閱模型或事件流模型來實(shí)現(xiàn):

  • 發(fā)布/訂閱模型:消息隊(duì)列負(fù)責(zé)追蹤訂閱者,事件被發(fā)布后,消息隊(duì)列負(fù)責(zé)發(fā)送給訂閱者。一旦事件被接收,就不能再重放,新增的訂閱者也看不到該事件。
  • 事件流模型:將事件寫入日志并持久存儲下來,在單個分區(qū)里事件嚴(yán)格有序。client端不需要訂閱這個事件流,而且能夠從任意一個位置開始讀取事件。當(dāng)然,移動偏移量也要靠客戶端自己完成。這意味著client可以在任意時間點(diǎn)加入,也支持事件重放。

在事件的消費(fèi)上,也可以有一些略微不同的方式:

  • 簡單模式:事件產(chǎn)生后立刻觸發(fā)消費(fèi)者下一步的動作。比如風(fēng)控、治理等場景下的異常行為檢測。
  • 復(fù)雜模式:消費(fèi)者處理一組數(shù)據(jù),找到其中的規(guī)律,比如基于時間窗口做聚合求sum/count/avg。
  • 純流式:通過流式平臺比如Kafka作為數(shù)據(jù)中轉(zhuǎn)的工具,接收事件并喂給下游的processor。下游的processor通常做簡單的transform之后再寫入的kafka。

事件通常來源于外部系統(tǒng),比如IoT中的物理設(shè)備、互聯(lián)網(wǎng)用戶的端上。我們在設(shè)計(jì)時,必須認(rèn)真評估總體的數(shù)據(jù)量和吞吐量,以保證系統(tǒng)能支撐這個量級。

在上面的流程圖中,右側(cè)的三個格子表示三種類型的消費(fèi)者,每種類型的消費(fèi)者下面有多個實(shí)例。在實(shí)際場景中,出于容災(zāi)的目的,多個消費(fèi)者實(shí)例的情況非常普遍。為了保證事件處理的吞吐量,多個實(shí)例也是有必要的。

在處理事件時,一個消費(fèi)者實(shí)例可以創(chuàng)建多個線程。這也能提高處理的吞吐量,不過事件被處理的順序就亂了,業(yè)務(wù)上可能無法接受;另外多線程處理也很難保證exactly-once語義。

應(yīng)用場景

  • 多個子系統(tǒng)都需要處理這些事件
  • 需要實(shí)時處理,且延遲越小越好
  • 處理邏輯比較復(fù)雜的場景,比如要對事件繼續(xù)模式匹配或者基于時間窗口的聚合
  • 事件量級非常大,生產(chǎn)的速度也很快

架構(gòu)優(yōu)勢

  • 生產(chǎn)者和消費(fèi)者解耦
  • 沒有點(diǎn)對點(diǎn)的集成,增加新消費(fèi)者幾乎沒有難度
  • 消費(fèi)者可以即時處理到來的事件
  • 天生分布式、可擴(kuò)展性非常高
  • 每個下游子系統(tǒng)都可以訪問全部事件,且互相獨(dú)立

有哪些挑戰(zhàn)

  • 不丟事件:一些業(yè)務(wù)場景要求,事件必須發(fā)送成功,不能丟。比如金融、電商等涉及錢的場景;
  • 按順序消費(fèi):由于架構(gòu)的分布式特性,消費(fèi)者本身就是多實(shí)例的,不支持全局有序消費(fèi);
  • exactly-once消費(fèi):事件消費(fèi)的每個環(huán)節(jié)都可能會失敗,失敗就會重試。重試的話,就需要額外的機(jī)制去保障exactly once

補(bǔ)充說明

在設(shè)計(jì)系統(tǒng)時,我們通常需要考慮單條消息的大小,它對系統(tǒng)的性能和金錢成本影響都非常大。如果走兩個極端的話,可以是:

如果將所有需要的信息都放到單個事件里,處理起來會很方便,并且能夠避免額外的信息查詢。

如果將非常少的信息放到單個事件里,比如ID字段,那么會節(jié)省大量傳輸數(shù)據(jù)的時間和金錢成本,但其他信息需要訪問其他服務(wù)才能獲取到。

這其中的利益權(quán)衡,看自己的業(yè)務(wù)來定了。

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2021-11-23 23:39:19

微服務(wù)開發(fā)架構(gòu)

2023-09-15 12:30:06

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

2023-12-13 10:44:57

事件驅(qū)動事件溯源架構(gòu)

2019-04-19 21:06:23

事件驅(qū)動架構(gòu)VANTIQ

2023-08-08 08:00:00

架構(gòu)Kafka

2021-10-18 10:47:29

EDAEventBridge

2022-06-27 15:25:08

架構(gòu)模型治理

2023-12-05 15:18:27

事件驅(qū)動架構(gòu)RESTful通信模式

2022-07-21 13:36:39

API事件驅(qū)動Rest

2022-10-08 00:30:08

事件驅(qū)動架構(gòu)

2024-08-05 10:26:42

Go語言架構(gòu)

2019-10-12 09:04:59

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

2022-06-02 10:35:20

架構(gòu)驅(qū)動

2021-12-23 09:00:00

架構(gòu)微服務(wù)數(shù)據(jù)

2023-07-28 09:23:24

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

2018-03-28 10:32:18

微服務(wù)無服務(wù)器CQRS

2023-08-02 08:51:46

服務(wù)架構(gòu)分層架構(gòu)

2022-04-25 10:44:08

微服務(wù)架構(gòu)設(shè)計(jì)

2011-12-13 14:32:08

TIBCO

2013-03-26 14:17:21

架構(gòu)架構(gòu)設(shè)計(jì)事件驅(qū)動
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 久久精品中文 | 国产激情一区二区三区 | 国产精品99久 | 亚洲国产精品一区在线观看 | 欧美a级成人淫片免费看 | 天天操天天摸天天爽 | 成年人视频在线免费观看 | 色毛片| 亚洲国产一区二区在线 | 福利视频一区二区 | 欧美久久天堂 | 欧美一二三 | 日韩精品在线观看一区二区三区 | 国产一区二区电影 | 中文字幕免费中文 | 精品一区二区三区在线观看国产 | 欧美精品欧美精品系列 | 亚洲国产精品视频一区 | 韩日一区二区 | 国产欧美精品区一区二区三区 | 久草在线在线精品观看 | 日韩成人免费av | 国产不卡在线 | 福利国产| 91 在线| 看黄在线 | 亚洲综合天堂网 | 成人福利影院 | 免费国产视频 | 色噜噜狠狠色综合中国 | 中文字字幕一区二区三区四区五区 | 亚洲视频中文字幕 | 精品欧美乱码久久久久久1区2区 | 欧美一区二区三区在线观看视频 | a爱视频 | 精品真实国产乱文在线 | 中文字幕在线三区 | 中国一级特黄真人毛片免费观看 | 欧美日韩国产一区二区三区 | 亚洲午夜精品视频 | 男女一区二区三区 |