paulwong

          EVEN DRIVEN - SPRING CLOUD STREAM - SPRING CLOUD微服務的EVEN DRIVEN框架

          通常微服務應用之間的通信是通過HTTP調用,吞吐性不建都高,高并發的場景建議使用EVENT DRIVEN的框架,即使用MESSAGE通信。

          即A微服務應用將數據發送到MESSAGE BROKER中的某個DESTINATION,此DESTINATION是廣播型,非點對點型。B微服務應用訂閱此DESTINATION,當有新MESSAGE到達此DESTINATION時,MESSAGE BROKER會將此MESSAGE推送給B應用。所有對此MESSAGE有需要的應用均可訂閱,從而收到此MESSAGE。

          SPRING CLOUD 中EVENT DRIVEN的框架就是SPRING CLOUD STREAM。其底層是使用SPRING INTEGRATION實現。

          SPRING CLOUD STREAM有以下新名詞:

          • BINDER:
          是對MESSAGE BROKER操作方法的抽象,即應用通過此BINDER操作MESSAGE BROKER。目前只實現了RABITMQ和KAFKA。
          • CHANNEL
          MESSAGE從SPRING CLOUD STREAM傳給應用或相反是通過CHANNEL傳遞的,這點和SPRING INTEGRATION是一樣的。
          • SOURCE
          MESSAGE從應用傳給SPRING CLOUD STREAM的CHANNEL,叫@INPUT,包含這種CHANNEL的接口叫SOURCE。
          • SINK
          MESSAGE從SPRING CLOUD STREAM傳給應用的CHANNEL,叫@OUPUT,包含這種CHANNEL的接口叫SINK。
          • BIDDING
          綁定哪個@INPUT或哪個@OUPUT與哪個DESTINATION發送或接收關系的MAPPING。
          • EnableBinding
          應用啟動時就會建立EnableBinding指定的接口中的CHANNEL
          • 消費者群組
          默認下如果同一個應用部署了多個實例,則每個實例都會收到MESSAGE,這時如果設置了消費者群組名稱,則同一個名稱下的多個實例,只有一個能收到MESSAGE。
          • PARTITION
          如果為MESSAGE指定規則,如MESSAGE某個字段值以A開頭為一個規則,以B開頭為一個規則,那么以A開頭的MESSAGE會放到同一個分區中。

          這樣使用就很簡單了,只要取得OUTPUT CHANNEL,就可以發送MESSAGE,將代碼關聯到INPUT CHANNEL,就能在收到MESSAGE時,相關代碼就會被執行。

          posted on 2021-11-05 14:58 paulwong 閱讀(208) 評論(0)  編輯  收藏 所屬分類: SPRING CLOUDEVEN DRIVEN ARCHITECT

          主站蜘蛛池模板: 云龙县| 西青区| 屏山县| 仙居县| 寿光市| 宁蒗| 油尖旺区| 从化市| 包头市| 新沂市| 泌阳县| 兰考县| 麻阳| 墨玉县| 巫溪县| 孟津县| 长宁区| 太谷县| 武安市| 稻城县| 新建县| 托里县| 隆昌县| 金山区| 淳化县| 商丘市| 福清市| 冕宁县| 牡丹江市| 汉源县| 巴彦淖尔市| 兴安盟| 福鼎市| 宾川县| 伊宁市| 子长县| 麟游县| 绥德县| 桐庐县| 盖州市| 营口市|