偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

服務(wù)架構(gòu):Web-Queue-Worker架構(gòu)

開發(fā) 架構(gòu)
Web前端和wWorker服務(wù)都是無狀態(tài)的。作業(yè)的會話狀態(tài)通常存儲在分布式存儲里(比如Redis集群)。worker通過異步的方式處理耗時的作業(yè),我們通常使用消息隊列來觸發(fā)作業(yè)的創(chuàng)建和執(zhí)行,或者通過一個定時任務(wù)調(diào)度批處理任務(wù)。worker并不是必須的,如果沒有耗時的操作,就不需要它。

  1. 這種架構(gòu)的核心組件包含:
  2. 一個Web前端,用戶可以通過這里發(fā)送請求
  3. 一個worker服務(wù),它可以執(zhí)行資源密集型任務(wù)、耗時的工作流或批處理作業(yè)。

Web前端和worker服務(wù)通過一個消息隊列進行通信。

這個架構(gòu)中還包含其它一些組件:

  • 一個/多個數(shù)據(jù)庫
  • KV Cache,用來降低數(shù)據(jù)庫的負載
  • CDN系統(tǒng),提供靜態(tài)資源的訪問加速
  • 遠程服務(wù),比如email或消息發(fā)送服務(wù),通常是第三方的服務(wù)
  • 身份認證服務(wù),比如Google Oauth登錄服務(wù)

Web前端和worker服務(wù)都是無狀態(tài)的。作業(yè)的會話狀態(tài)通常存儲在分布式存儲里(比如Redis集群)。worker通過異步的方式處理耗時的作業(yè),我們通常使用消息隊列來觸發(fā)作業(yè)的創(chuàng)建和執(zhí)行,或者通過一個定時任務(wù)調(diào)度批處理任務(wù)。worker并不是必須的,如果沒有耗時的操作,就不需要它。

前端除了頁面的部分,也可以提供web API(BFF層)。在client端,我們可以通過一個單頁應(yīng)用觸發(fā)ajax請求,或者使用原生的APP去觸發(fā)。

應(yīng)用場景

Web-Queue-worker架構(gòu)在云服務(wù)中很常見,比如函數(shù)計算服務(wù)(FAAS)。這類服務(wù)通常會提供 HTTP API 或 RPC API,同時支持消費Kafka來的流式消息。目前流行的低代碼也是由此衍生出來的。

該架構(gòu)適用于以下的場景:

  • 應(yīng)用的業(yè)務(wù)領(lǐng)域/場景比較簡單
  • 應(yīng)用包含了一些耗時的工作流或批處理任務(wù);
  • 想要低成本地接入現(xiàn)有的服務(wù),而不是從Infra開始搭建

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

  • 架構(gòu)簡單易懂;
  • 部署和管理很簡單;
  • 服務(wù)職能邊界清晰;
  • 前端和worker是解耦的,消息隊列使用現(xiàn)成的技術(shù)即可;
  • 前端和worker可以獨立進行擴容;

有哪些挑戰(zhàn)

  • 如果設(shè)計不合理,前端和worker都可能融入太多的邏輯,變得越來越重。后期演變成單體架構(gòu)后,很難維護和升級;
  • 如果前端和worker共享了一些數(shù)據(jù)結(jié)構(gòu)或代碼,可能會有隱藏的依賴;

最佳實踐

  • 暴露給client的API必須清晰明了,經(jīng)過良好的設(shè)計;對于HTTP請求,可以遵循REST協(xié)議;
  • 對于工作負載的變化,啟動自動擴縮容;云平臺和K8s都提供了監(jiān)控實例CPU/內(nèi)存自動擴縮容的能力;
  • 對于半靜態(tài)的數(shù)據(jù),使用緩存進行加速訪問;比如memcached/memory cache等;
  • 使用CDN對靜態(tài)資源進行緩存加速;
  • 根據(jù)需求使用混合持久化方案。比如關(guān)系數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫混合使用,比如KV存儲、文檔數(shù)據(jù)庫、搜索數(shù)據(jù)庫、時序數(shù)據(jù)庫、列式存儲數(shù)據(jù)庫、圖數(shù)據(jù)庫等。數(shù)據(jù)庫之間,可以采用最終一致性方案進行數(shù)據(jù)同步;
  • 對數(shù)據(jù)進行分區(qū),分區(qū)可以更好地支持擴容,減少競爭讀寫問題,提升訪問性能。
責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2020-06-10 10:20:24

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

2023-07-28 09:23:24

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

2023-08-02 08:51:46

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

2018-04-20 10:15:34

2023-07-12 08:30:52

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

2023-07-26 08:51:08

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

2014-05-19 15:59:35

2024-01-19 11:57:42

2010-01-06 13:36:37

Windows XP架

2012-11-08 10:27:22

WEB產(chǎn)品架構(gòu)架構(gòu)

2021-07-02 06:54:45

軟件架構(gòu)模式

2012-10-18 10:11:48

IBMdw

2023-08-21 15:18:29

開發(fā)Node.js后端

2022-06-27 15:25:08

架構(gòu)模型治理

2016-06-03 09:59:43

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

2024-11-19 08:10:00

2023-11-01 11:17:26

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

2023-07-10 09:27:36

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

2020-08-05 08:23:19

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

2009-07-01 08:49:34

架構(gòu)Web2.0Twitter
點贊
收藏

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