送命題。當(dāng)時(shí)腦瓦特了,答曰:邏輯處理和數(shù)據(jù)增刪改查。。。




當(dāng)場(chǎng)被懟得體" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁 > 營(yíng)銷資訊 > 網(wǎng)站運(yùn)營(yíng) > 寫給Web前端開發(fā)的后端指南

寫給Web前端開發(fā)的后端指南

時(shí)間:2023-05-28 02:39:01 | 來源:網(wǎng)站運(yùn)營(yíng)

時(shí)間:2023-05-28 02:39:01 來源:網(wǎng)站運(yùn)營(yíng)

寫給Web前端開發(fā)的后端指南:

前言

在若干次前的一場(chǎng)面試,面試官看我做過python爬蟲/后端 的工作,順帶問了我些后端相關(guān)的問題:你覺得什么是后端?

送命題。當(dāng)時(shí)腦瓦特了,答曰:邏輯處理和數(shù)據(jù)增刪改查。。。




當(dāng)場(chǎng)被懟得體無完膚,羞愧難當(dāng)。事后再反思這問題,結(jié)合資料總結(jié)了一下。發(fā)現(xiàn)自己學(xué)過的Redis、ElasticsearchDNS等其實(shí)都屬于后端知識(shí)體系范疇。

在本文中,我將嘗試總結(jié)前端須知的后端體系入門

無論你的動(dòng)機(jī)是什么,這個(gè)體系里都有你想要了解或?qū)W習(xí)的東西: 存儲(chǔ)和服務(wù)如何結(jié)合在一起? 什么時(shí)候(或?yàn)槭裁矗┪倚枰玫竭@個(gè)? 全棧之路該怎么走? 各技術(shù)的主流框架選擇

本文目錄: 1. Web / Application Servers 2. 負(fù)載均衡器: Load Balancer 3. 域名解析系統(tǒng),DNS 4. HTTPS / SSL證書 5. 數(shù)據(jù)庫,Database 6. Blob / 文件存儲(chǔ) 7. 內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN) 8. 緩存服務(wù):Caching Service 9. 消息隊(duì)列:Message queue

1. Web / Application Servers

1.1 服務(wù)器端語言




可以使用不同的服務(wù)器端語言編寫代碼: 例如Node.js,Python,PHP,Java,C#Ruby。 每種語言都有自己的“Web框架”(例如基于 Java 的 Spring,基于 Ruby 的 Rails,基于C#的http://ASP.NET MVC或基于Node.js的Express)。 * 這些框架使開發(fā)人員能夠編寫更少的代碼來處理數(shù)據(jù)請(qǐng)求。

1.2 后端語言選擇

而事實(shí)上,每個(gè)后端語言都有不一樣的特性,也都有各自的擁護(hù)者。哪一個(gè)語言最適合做為后端語言的入門一直都是沒有定論的問題。但為了讓我們可以對(duì)各語言有一個(gè)很簡(jiǎn)單的概念,以下整理了各語言較常被提及的特色、在開發(fā)上比較被人詬病的點(diǎn),以及有什么樣的網(wǎng)站是透過該語言開發(fā)的:

PHP

Java

Ruby

Python:

JavaScript (Node.js):

Go:

1.2 Web服務(wù)器




Web Server,除了托管自定義應(yīng)用程序代碼之外,一些Web應(yīng)用程序體系結(jié)構(gòu)還使用“Web服務(wù)器進(jìn)程”,例如Apache HTTP ServerNginx。這些服務(wù)器進(jìn)程將在訪問后端代碼之前攔截客戶端請(qǐng)求。使用它們有以下幾個(gè)原因:

至此,會(huì)引出一個(gè)疑問:Apache、NginxTomcatNode.js四者的區(qū)別是什么?

引用:apache、node.js、nginx、tomcat誰能幫我捋一捋關(guān)系?
是一類東西,又不是一類東西。




首先它們都能創(chuàng)建 Web服務(wù)器,但是他們關(guān)注的點(diǎn)不一樣。

1.3 web服務(wù)器的形式(載體)

安裝這些工具和后端項(xiàng)目的Web服務(wù)器計(jì)算機(jī),本身可以采用以下幾種形式:







VPS是基于軟件層的虛擬化技術(shù),具體來說就是操作系統(tǒng)的虛擬化,VM是基于硬件層的虛擬化技術(shù),VM主機(jī)使用vmware server搭建。

1.4 Dokcer,虛擬機(jī)與物理機(jī)

docker容器與虛擬機(jī)有什么區(qū)別?
用個(gè)類比來極簡(jiǎn)說明一下:

1. 物理機(jī)是這樣的:




2. 虛擬機(jī)是這樣的:




3. Dokcer是這樣的:







2. 負(fù)載均衡器: Load Balancer







負(fù)載均衡是高可用網(wǎng)絡(luò)基礎(chǔ)架構(gòu)的的一個(gè)關(guān)鍵組成部分,有了負(fù)載均衡,我們通??梢詫⑽覀兊膽?yīng)用服務(wù)器部署多臺(tái),然后通過負(fù)載均衡將用戶的請(qǐng)求分發(fā)到不同的服務(wù)器用來提高網(wǎng)站、應(yīng)用、數(shù)據(jù)庫或其他服務(wù)的性能以及可靠性。

負(fù)載平衡器模型通常分為兩類:第4層(傳輸層)和第7層(應(yīng)用層)。

第4層(傳輸層):

第7層(應(yīng)用層): 根據(jù)應(yīng)用層協(xié)議(如HTTP)中的數(shù)據(jù)分發(fā)請(qǐng)求。 認(rèn)識(shí)http協(xié)議,所以其應(yīng)用范圍主要是眾多的網(wǎng)站或者內(nèi)部信息平臺(tái)等基于B/S開發(fā)的系統(tǒng)。

負(fù)載均衡器主要分為硬件負(fù)載均衡和軟件負(fù)載均衡兩大類。

兩種類型的負(fù)載平衡器都會(huì)收到請(qǐng)求,并根據(jù)配置的算法將這些請(qǐng)求分發(fā)到特定的服務(wù)器。一些行業(yè)標(biāo)準(zhǔn)算法是:







Web應(yīng)用程序中使用負(fù)載均衡器有兩個(gè)主要好處:

3. 域名解析系統(tǒng),DNS

當(dāng)用戶在其地址欄中輸入URL時(shí),瀏覽器將獲取URL的域部分(例如www.google.com)并調(diào)用DNS 。DNS解析發(fā)回該網(wǎng)站服務(wù)器的IP地址位置(例如172.217.23.4)。一旦它具有IP地址,它就可以發(fā)送對(duì)網(wǎng)頁的實(shí)際請(qǐng)求。

大多數(shù)互聯(lián)網(wǎng)域名注冊(cè)服務(wù)(例如GoDaddy,萬網(wǎng)等)都提供DNS管理控制臺(tái)。這些允許你配置域名(和子域)以指向應(yīng)用程序的位置。

如果你愿意,還可以將您的域名服務(wù)器轉(zhuǎn)移到阿里云、騰訊云等云提供商,并從那里進(jìn)行管理。這樣做的好處是可以將所有應(yīng)用程序環(huán)境配置保存在一個(gè)位置,并使其更易于自動(dòng)化。

4. HTTPS / SSL證書

如果你正在構(gòu)建Web應(yīng)用程序(或靜態(tài)網(wǎng)站),則需要通過HTTPS提供服務(wù),以確保用戶與服務(wù)器之間的安全通信?,F(xiàn)在使用HTTPS 也有SEO的好處,所以沒有理由不使用它。

這意味著需要在后端安裝SSL證書。具體來說,需要在任何服務(wù)器上安裝它們,這是客戶端請(qǐng)求的第一個(gè)聯(lián)系點(diǎn)。這通常意味著負(fù)載均衡器和CDN服務(wù)器,但如果你沒有使用負(fù)載均衡器,也可能是應(yīng)用程序服務(wù)器。




你可以使用LetsEncrypt免費(fèi)生成證書。 如果你使用的是云基礎(chǔ)架構(gòu),則可以使用托管服務(wù),例如AWS Certificate Manager。這允許你創(chuàng)建并自動(dòng)續(xù)訂SSL證書并將其分發(fā)到應(yīng)用程序服務(wù)器,負(fù)載平衡器和CDN服務(wù)器。 * 只有中大型的HTTPS證書授權(quán)中心才會(huì)被瀏覽器承認(rèn),否則會(huì)顯示為不安全,需要手動(dòng)信任。

目前SSL證書根據(jù)驗(yàn)證級(jí)別分為三種類型




一般情況下,企業(yè)類網(wǎng)站使用的OV SSL證書比較多,而且價(jià)格也適中,在大眾用戶可接受范圍內(nèi)。

5. 數(shù)據(jù)庫,Database

幾乎所有Web應(yīng)用程序都需要在某處保留數(shù)據(jù)。在大多數(shù)情況下,某處即某種形式的數(shù)據(jù)庫。 數(shù)據(jù)庫的主要工作是將數(shù)據(jù)可靠地保存到永久存儲(chǔ)器中,并允許通過查詢檢索數(shù)據(jù)。它還可以圍繞它存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu)強(qiáng)制執(zhí)行一些規(guī)則約束。

5.1 數(shù)據(jù)庫的種類

早期比較流行的數(shù)據(jù)庫模型有三種,分別為層次式數(shù)據(jù)庫、網(wǎng)絡(luò)式數(shù)據(jù)庫和關(guān)系型數(shù)據(jù)庫。

而在當(dāng)今的互聯(lián)網(wǎng)中,最常用的數(shù)據(jù)庫模型主要是兩種,即關(guān)系型(SQL)數(shù)據(jù)庫和非關(guān)系型(NoSQL)數(shù)據(jù)庫。

5.2 數(shù)據(jù)庫部署

你可以在一臺(tái)服務(wù)器上托管數(shù)據(jù)庫,但在生產(chǎn)方案中更常見的是將其托管在某種形式的集群2臺(tái)或更多服務(wù)器上。這可確保數(shù)據(jù)庫具有高可用性并降低數(shù)據(jù)丟失的風(fēng)險(xiǎn),例如,如果一臺(tái)服務(wù)器的存儲(chǔ)損壞。

近年來,少數(shù)云托管的“無服務(wù)器數(shù)據(jù)庫”已經(jīng)可用。這些是可以通過API調(diào)用的數(shù)據(jù)庫,但你無需設(shè)置服務(wù)器來托管它們。除了處理諸如自動(dòng)備份之類的事情之外,云供應(yīng)商還為您無形地執(zhí)行此操作。這些示例包括DynamoDB(NoSQL),Firebase實(shí)時(shí)數(shù)據(jù)庫(NoSQL)和Aurora無服務(wù)器(關(guān)系)。

5.3 數(shù)據(jù)庫基礎(chǔ)方案

來源:架構(gòu)設(shè)計(jì)之「數(shù)據(jù)庫從主備到主主的高可用方案」
無論底層是關(guān)系型數(shù)據(jù)庫,還是NoSQL數(shù)據(jù)庫,無論是 Mysql 還是 Redis、MongoDB,在架構(gòu)設(shè)計(jì)上都是相通的。

數(shù)據(jù)庫服務(wù)器的基礎(chǔ)方案分為三種:

1. 一主一備的架構(gòu)(主備式)

主備式架構(gòu)是雙機(jī)部署中最簡(jiǎn)單的一種架構(gòu),幾乎市面上所有的數(shù)據(jù)庫系統(tǒng)都會(huì)自帶這個(gè)主備功能。







其思路也特別的簡(jiǎn)單:

這個(gè)架構(gòu)的優(yōu)缺點(diǎn)都很明顯,優(yōu)點(diǎn)就是幾乎不需要做什么開發(fā)改造,各類數(shù)據(jù)庫就支持這種模式,部署維護(hù)起來也簡(jiǎn)單,并沒有引入額外的系統(tǒng)復(fù)雜度和瓶頸。

但是缺點(diǎn)呢,就是當(dāng)「主機(jī)」出現(xiàn)故障的時(shí)候,需要人工去干預(yù)啊,運(yùn)維同學(xué)很辛苦的,而且處理還不一定及時(shí)。再還有一個(gè)缺點(diǎn)就是,主備架構(gòu)會(huì)造成嚴(yán)重浪費(fèi)資源,畢竟需要一臺(tái)與「主機(jī)」同等配置的「?jìng)錂C(jī)」長(zhǎng)期備著,但又不作為線上服務(wù)來使用,你說浪費(fèi)不浪費(fèi)。

為了解決這個(gè)資源浪費(fèi)問題,我們就得想一個(gè)把「?jìng)錂C(jī)」也用起來的方案:主從式架構(gòu)。

2. 一主一從的架構(gòu)(主從式)

主從式架構(gòu)大體上與上述的主備式架構(gòu)差不多。區(qū)別就是主備式的「?jìng)錂C(jī)」平時(shí)是不干活的的,主要起到備份的作用。而主從式的「?jìng)錂C(jī)」改為了「從機(jī)」,平時(shí)也要提供服務(wù),跟「主機(jī)」一樣隨時(shí)隨刻的在干活的。







  1. 主從式架構(gòu)中的「從機(jī)」雖然也在隨時(shí)隨刻提供服務(wù),但是它只提供「讀」服務(wù),并不提供「寫」服務(wù)。
  2. 「主機(jī)」會(huì)實(shí)時(shí)的將線上數(shù)據(jù)同步到「從機(jī)」,以保證「從機(jī)」能夠正常的提供讀操作。
  3. 這種架構(gòu)相比較主備式,對(duì)資源是一種節(jié)約,畢竟「從機(jī)」也在提供服務(wù),沒有白白的浪費(fèi)。并且在「主機(jī)」出現(xiàn)故障時(shí),在人工介入之前,好歹「從機(jī)」也是能夠提供數(shù)據(jù)的「讀」操作的,畢竟大多數(shù)業(yè)務(wù)都是「讀」多「寫」少,因此對(duì)穩(wěn)定性又提高了一個(gè)層次。
  4. 缺點(diǎn)就是架構(gòu)稍微復(fù)雜了一點(diǎn),畢竟「主機(jī)」和「從機(jī)」都有「讀」服務(wù),那么前端業(yè)務(wù)系統(tǒng)就需要用一定策略去判斷該路由到哪一臺(tái)去讀取數(shù)據(jù)。還有就是,延遲問題,「主機(jī)」的數(shù)據(jù)同步到「從機(jī)」難免會(huì)有一定程度的延遲,這個(gè)延遲可能會(huì)對(duì)數(shù)據(jù)實(shí)時(shí)性要求較高的業(yè)務(wù)有一定影響。

3. 互為主從的架構(gòu)(主主式)

互為主從的架構(gòu)是指兩臺(tái)機(jī)器自己都是主機(jī),并且也都是作為對(duì)方的從機(jī)。兩臺(tái)機(jī)器都提供完整的讀寫服務(wù),因此無需切換,客戶機(jī)在調(diào)用的時(shí)候隨機(jī)挑選一臺(tái)即可,當(dāng)其中一臺(tái)宕機(jī)了,另外一臺(tái)還可以繼續(xù)服務(wù)。




至于數(shù)據(jù)庫集群方案,我暫時(shí)沒看懂,就不寫了。。。

6. Blob / 文件存儲(chǔ)

雖然數(shù)據(jù)庫通常用于存儲(chǔ)動(dòng)態(tài)數(shù)據(jù)(例如,由最終用戶或API客戶端生成),但是存在某些類別的數(shù)據(jù)( 非結(jié)構(gòu)化數(shù)據(jù)),這些數(shù)據(jù)不能由用戶改變或者基于文件而不適合數(shù)據(jù)庫存儲(chǔ),例如:

云服務(wù)供應(yīng)商不是將這些存儲(chǔ)在數(shù)據(jù)庫中,而是提供專用服務(wù)來存儲(chǔ)這些服務(wù),例如AWS Simple Storage Service(S3),Azure,Google Cloud Storage和阿里云OSS等。

這樣做的好處是云供應(yīng)商可以安全地存儲(chǔ)文件,并可以為其制作冗余副本,以最大限度地降低數(shù)據(jù)丟失的風(fēng)險(xiǎn)。

6.1 關(guān)于 Blob 存儲(chǔ):

Blob 存儲(chǔ)用于:

7. 內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN)

Blob /文件存儲(chǔ)服務(wù)允許客戶端通過HTTP端點(diǎn)訪問文件。例如,您的Web應(yīng)用程序的HTML標(biāo)記可以簡(jiǎn)單地鏈接到AWS S3中存儲(chǔ)的圖像和CSS文件的URL。 傳統(tǒng)網(wǎng)絡(luò)訪問




但是,假設(shè)我的用戶位于中國(guó),我的S3存儲(chǔ)位于美國(guó)西部 - 數(shù)據(jù)傳輸距離數(shù)千英里,因此我的用戶會(huì)看到延遲。

CDN是什么?使用CDN有什么優(yōu)勢(shì)?
使用了CDN的網(wǎng)站訪問:







7.1 CDN工作流







通過權(quán)威DNS服務(wù)器來實(shí)現(xiàn)最優(yōu)節(jié)點(diǎn)的選擇,通過緩存來減少源站的壓力。

8. 緩存服務(wù):Caching Service

雖然CDN是靜態(tài)文件的一種緩存形式,但Web應(yīng)用程序可能需要臨時(shí)緩存動(dòng)態(tài)數(shù)據(jù)。

例如,假設(shè)存在一個(gè)數(shù)據(jù)庫查詢,該查詢對(duì)昨天的數(shù)據(jù)執(zhí)行計(jì)算,其結(jié)果每天經(jīng)常被成千上萬的用戶訪問。每次用戶請(qǐng)求此數(shù)據(jù)時(shí)聯(lián)系數(shù)據(jù)庫就沒有任何意義。

對(duì)此的解決方案是使用高速緩存服務(wù)在第一個(gè)用戶請(qǐng)求之后將結(jié)果存儲(chǔ)一段時(shí)間。通過緩存將更快地提供對(duì)該數(shù)據(jù)的后續(xù)請(qǐng)求。

緩存服務(wù)本質(zhì)上是一種特殊類型的數(shù)據(jù)庫。 緩存采用鍵值存儲(chǔ)的形式,其中鍵是應(yīng)用程序代碼用于查詢數(shù)據(jù)的字符串(例如DailySiteStats_2018-10-17),值是緩存的實(shí)際數(shù)據(jù)。緩存的數(shù)據(jù)通常完全保存在內(nèi)存中,這使得從緩存中檢索數(shù)據(jù)的速度非???。

常見的緩存服務(wù)是RedisMemcached。AWS通過其Elasticache服務(wù)提供這兩者的托管版本。

8.1 RedisMemcached對(duì)比

RedisMemcached是都是主流的開源內(nèi)存數(shù)據(jù)存儲(chǔ)。雖然它們既易于使用又提供高性能,但在選擇引擎時(shí)需要考慮重要的差異。Memcached是為簡(jiǎn)單而設(shè)計(jì)的,而Redis提供了豐富的功能,使其能夠廣泛用于各種用例。 | | Memcached | Redis | | -------------- | --------- | ----- | | 亞毫秒級(jí)延遲 | 是 | 是 | | 開發(fā)人員易用性 | 是 | 是 | | 數(shù)據(jù)分區(qū) | 是 | 是 | | 多語言支持 | 是 | 是 | | 高級(jí)數(shù)據(jù)結(jié)構(gòu) | - | 是 | | 多線程架構(gòu) | 是 | - | | 快照 | - | 是 | | 復(fù)制 | - | 是 | | 發(fā)布/訂閱 | - | 是 | | Lua腳本 | - | 是 | | 地理空間支持 | - | 是 |

亞毫秒級(jí)延遲:

RedisMemcached都支持亞毫秒的響應(yīng)時(shí)間。通過將數(shù)據(jù)存儲(chǔ)在內(nèi)存中,它們可以比基于磁盤的數(shù)據(jù)庫更快地讀取數(shù)據(jù)。

開發(fā)人員易用性:

RedisMemcached在語法上都很容易使用,并且需要最少量的代碼才能集成到您的應(yīng)用程序中。

數(shù)據(jù)分區(qū):

Redis和Memcached`都允許您在多個(gè)節(jié)點(diǎn)之間分發(fā)數(shù)據(jù)。這允許您在需求增長(zhǎng)時(shí)向外擴(kuò)展以更好地處理更多數(shù)據(jù)。

支持廣泛的編程語言:

RedisMemcached都有許多面向開發(fā)人員的開源客戶端。支持的語言包括Java,Python,PHP,C,C ++,C#,JavaScript,Node.js,Ruby,Go等等。

高級(jí)數(shù)據(jù)結(jié)構(gòu):

除了字符串,Redis還支持列表,集合,有序集,哈希,位數(shù)組等。應(yīng)用程序可以使用這些更高級(jí)的數(shù)據(jù)結(jié)構(gòu)來支持各種用例。例如,你可以使用Redis排序集輕松實(shí)現(xiàn)游戲排行榜,該排行榜保持按其排名排序的玩家列表。

多線程架構(gòu)

由于Memcached是多線程的,因此它可以使用多個(gè)處理核心。這意味著您可以通過擴(kuò)展計(jì)算容量來處理更多操作。

快照:

使用Redis,您可以使用即時(shí)快照將數(shù)據(jù)保存在磁盤上,該快照可用于存檔或恢復(fù)。

復(fù)制:

Redis允許您創(chuàng)建Redis主數(shù)據(jù)庫的多個(gè)副本。這允許您擴(kuò)展數(shù)據(jù)庫讀取并具有高可用性集群。

發(fā)布/訂閱:

Redis支持使用模式匹配的Pub /Sub消息傳遞,您可以將其用于高性能聊天室,實(shí)時(shí)評(píng)論流,社交媒體源和服務(wù)器互通。

Lua腳本:

Redis允許您執(zhí)行事務(wù)性Lua腳本。腳本可以幫助您提高性能并簡(jiǎn)化應(yīng)用程序。

地理空間支持:

Redis具有專門用于大規(guī)模處理實(shí)時(shí)地理空間數(shù)據(jù)的命令。您可以執(zhí)行諸如查找兩個(gè)元素(例如人或地點(diǎn))之間的距離以及查找點(diǎn)的給定距離內(nèi)的所有元素之類的操作。

9. 消息隊(duì)列:Message queue







適用于批處理任務(wù)和分離應(yīng)用程序的異步消息收發(fā)
有時(shí),你程序需要執(zhí)行的任務(wù)與響應(yīng)用戶請(qǐng)求沒有直接關(guān)系。

例如,假設(shè)用戶上傳了需要編碼和水印的視頻。但這是一項(xiàng)長(zhǎng)期運(yùn)行的任務(wù),因此讓用戶在完成時(shí)等待是沒有意義的。更好的方法是異步執(zhí)行此操作。您的網(wǎng)絡(luò)應(yīng)用程序代碼會(huì)在隊(duì)列中創(chuàng)建一條作業(yè)消息,并通知您的用戶,當(dāng)水印視頻準(zhǔn)備就緒時(shí),他們將收到一封電子郵件(消息)。

然后,你將擁有一個(gè)可以執(zhí)行以下操作的工作任務(wù)流:

  1. 從隊(duì)列中讀取消息。
  2. 開始處理視頻。
  3. 完成后,保存視頻的編碼副本。
  4. 向用戶發(fā)送通知電子郵件(消息)。
  5. 從隊(duì)列中刪除消息。
這里有2個(gè)架構(gòu)組件:

您可以通過以下幾種方式實(shí)現(xiàn)worker任務(wù):

9.1 Message queue 簡(jiǎn)介

消息隊(duì)列是一種異步的服務(wù)間通信方式,適用于無服務(wù)器和微服務(wù)架構(gòu)。消息在被處理和刪除之前一直存儲(chǔ)在隊(duì)列上。每條消息僅可被一位用戶處理一次。消息隊(duì)列可被用于分離重量級(jí)處理、緩沖或批處理工作以及緩解高峰期工作負(fù)載。

現(xiàn)在常用的MQ組件有activeMQrabbitMQ、rocketMQ、zeroMQ 還有近年來火熱的kafka,從某些場(chǎng)景來說也是MQ,當(dāng)然kafka的功能更加強(qiáng)大,雖然不同的MQ都有自己的特點(diǎn)和優(yōu)勢(shì),但是,不管是哪種MQ,都有MQ本身自帶的一些特點(diǎn)。

9.2 MQ主要特性

| 特性 | 說明 | | -------------------- | ------------------------------------------------------------ | | 推送或拉取傳送 | 拉取是指不斷查詢隊(duì)列以獲取新消息。推送是指系統(tǒng)在有可用消息時(shí)通知用戶 (也稱為發(fā)布/訂閱消息收發(fā))。您還可以使用長(zhǎng)輪詢讓拉取等待指定的時(shí)間,以便新消息在完成之前到達(dá)。 | | 定時(shí)或延遲傳送 | 支持為消息設(shè)置特定的傳送時(shí)間。如果需要為所有消息設(shè)置相同延遲,可以設(shè)置一個(gè)延遲隊(duì)列。 | | 至少一次傳送 | 消息隊(duì)列可以存儲(chǔ)多個(gè)消息副本以實(shí)現(xiàn)冗余和高可用性,并在發(fā)生通信故障或錯(cuò)誤的情況下重新發(fā)送消息,以確保它們至少經(jīng)過一次傳送。 | | 確切一次傳送 | 在不容許重復(fù)的情況下,F(xiàn)IFO (先進(jìn)先出) 消息隊(duì)列會(huì)通過自動(dòng)篩選重復(fù)來確保每個(gè)消息均精確地傳輸了一次 (且只有一次)。 | | FIFO (先進(jìn)先出) 隊(duì)列 | 在這些隊(duì)列中,首先接受處理的是最早的 (或第一個(gè)) 條目,有時(shí)稱為“隊(duì)首”。 | | 消息優(yōu)先級(jí) | 通常情況下,您可以為消息分配優(yōu)先級(jí),以確定要在隊(duì)列中添加該消息的位置,從而確保優(yōu)先級(jí)較高的消息位于隊(duì)列前端并得到優(yōu)先處理。 |

9.3 MQ應(yīng)用示例

來源:MQ(消息隊(duì)列)常見的應(yīng)用場(chǎng)景解析
我們的實(shí)際場(chǎng)景大概是一個(gè)基于微服務(wù)架構(gòu)的電商系統(tǒng),分為用戶微服務(wù)、商品微服務(wù)、訂單微服務(wù)、促銷微服務(wù)等。

基于微服務(wù)模式開發(fā)的系統(tǒng),MQ的使用場(chǎng)景更多。這里我們就列舉一下常見的應(yīng)用示例。

1. 注冊(cè)后的初始化

注冊(cè)后我們可能需要做很多初始化的操作,如: 調(diào)用郵件服務(wù)器發(fā)送郵件、調(diào)用促銷服務(wù)贈(zèng)送優(yōu)惠劵、下發(fā)用戶數(shù)據(jù)到客戶關(guān)系系統(tǒng)等。 那么這時(shí)候我們將這些操作去監(jiān)聽MQ,當(dāng)用戶注冊(cè)成功過后,通過MQ通知其他業(yè)務(wù)進(jìn)行操作。確保注冊(cè)用戶的性能。

2. 后臺(tái)發(fā)布商品

后臺(tái)發(fā)布商品的時(shí)候:

3.支付超時(shí)取消

用戶下單后,24小時(shí)未支付,需要取消訂單。

4. 支付完成后通知

免責(zé)聲明

逛國(guó)外社區(qū)看到這篇,覺得挺簡(jiǎn)潔明了的。

只是覺得好玩,就按其大綱,重寫總結(jié)一下,有說錯(cuò)的地方多擔(dān)待。







~~意思就是寫得略粗糙,別噴我。。。~~

?? 看完三件事

如果你覺得這篇內(nèi)容對(duì)你挺有啟發(fā),我想邀請(qǐng)你幫我三個(gè)小忙:

  1. 點(diǎn)贊,讓更多的人也能看到這篇內(nèi)容(收藏不點(diǎn)贊,都是耍流氓 -_-)
  2. 關(guān)注公眾號(hào)「前端勸退師」,不定期分享原創(chuàng)知識(shí)。
  3. 也看看其它文章






勸退師個(gè)人微信:huab119

也可以來我的GitHub博客里拿所有文章的源文件:

前端勸退指南https://github.com/roger-hiro/BlogFN 一起玩耍呀。~

關(guān)鍵詞:指南

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉