国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

RabbitMQ入門系列01----RabbitMQ簡(jiǎn)介

這篇具有很好參考價(jià)值的文章主要介紹了RabbitMQ入門系列01----RabbitMQ簡(jiǎn)介。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一. 為什么要用mq?

在介紹RabbitMQ之前,我們先來看下面一個(gè)電商項(xiàng)目的場(chǎng)景:

  • 商品的原始數(shù)據(jù)保存在數(shù)據(jù)庫中,增刪改查都在數(shù)據(jù)庫中完成。
  • 搜索服務(wù)數(shù)據(jù)來源是索引庫(Elasticsearch),如果數(shù)據(jù)庫商品發(fā)生變化,索引庫數(shù)據(jù)不能及時(shí)更新。
  • 商品詳情做了頁面靜態(tài)化處理,靜態(tài)頁面數(shù)據(jù)也不會(huì)隨著數(shù)據(jù)庫商品更新而變化。

如果我們?cè)诤笈_(tái)修改了商品的價(jià)格,搜索頁面和商品詳情頁顯示的依然是舊的價(jià)格,這樣顯然不對(duì)。該如何解決? ?

我們可能會(huì)想到這么做:

  • 方案1:每當(dāng)后臺(tái)對(duì)商品做增刪改操作,同時(shí)修改索引庫數(shù)據(jù)及更新靜態(tài)頁面。
  • 方案2:搜索服務(wù)和商品頁面靜態(tài)化服務(wù)對(duì)外提供操作接口,后臺(tái)在商品增刪改后,調(diào)用接口。?

?這兩種方案都有個(gè)嚴(yán)重的問題:就是代碼耦合,后臺(tái)服務(wù)中需要嵌入搜索和商品頁面服務(wù),違背了微服務(wù)的獨(dú)立原則。

這時(shí),我們就會(huì)采用另外一種解決辦法,那就是消息隊(duì)列!?

? ? ? ? 商品服務(wù)對(duì)商品增刪改以后,無需去操作索引庫和靜態(tài)頁面,只需向MQ發(fā)送一條消息(比如包含商品id的消息),也不關(guān)心消息被誰接收。 搜索服務(wù)和靜態(tài)頁面服務(wù)監(jiān)聽MQ,接收消息,然后分別去處理索引庫和靜態(tài)頁面(根據(jù)商品id去更新索引庫和商品詳情靜態(tài)頁面)。?

二.?RabbitMQ介紹

2.1.?什么是mq?

????????消息隊(duì)列(Message Queue,簡(jiǎn)稱MQ):是在消息的傳輸過程中保存消息的容器。用于分布式系統(tǒng)之間進(jìn)行通信。

RabbitMQ入門系列01----RabbitMQ簡(jiǎn)介

?2.2?選型和對(duì)比

RabbitMQ ActiveMQ RocketMQ Kafka
公司/社區(qū) Rabbit Apache 阿里 Apache
開發(fā)語言 Erlang Java Java Scala&Java
協(xié)議 AMQP OpenWire、AUTO、Stomp、MQTT 自定義 自定義
單機(jī)吞吐量 萬級(jí) 萬級(jí)(最差) 十萬級(jí) 十萬級(jí)
消息延遲 微妙級(jí) 毫秒級(jí) 毫秒級(jí) 毫秒以內(nèi)
特性 并發(fā)能力很強(qiáng),延時(shí)很低 老牌產(chǎn)品,文檔較多 MQ功能比較完備,擴(kuò)展性佳 只支持主要的MQ功能,畢竟是為大數(shù)據(jù)領(lǐng)域準(zhǔn)備的。

綜合上面的材料得出以下兩點(diǎn) :?

  1. 中小型軟件公司,建議選RabbitMQ.一方面,erlang語言天生具備高并發(fā)的特性,RabbitMQ的社區(qū)十分活躍,可以解決開發(fā)過程中遇到的bug,這點(diǎn)對(duì)于中小型公司來說十分重要。不考慮rocketmq和kafka的原因是中小型軟件公司不如互聯(lián)網(wǎng)公司,數(shù)據(jù)量沒那么大,選消息中間件,應(yīng)首選功能比較完備的,所以kafka和rocketmq排除。

  2. 大型軟件公司,根據(jù)具體使用在rocketMq和kafka之間二選一。一方面,大型軟件公司,具備足夠的資金搭建分布式環(huán)境,也具備足夠大的數(shù)據(jù)量。針對(duì)rocketMQ,大型軟件公司也可以抽出人手對(duì)rocketMQ進(jìn)行定制化開發(fā),畢竟國(guó)內(nèi)有能力改JAVA源碼的人,還是相當(dāng)多的。至于kafka,根據(jù)業(yè)務(wù)場(chǎng)景選擇,如果有日志采集功能,肯定是首選kafka了。

?2.3?什么是RabbitMQ?

????????AMQP,即 Advanced Message Queuing Protocol(高級(jí)消息隊(duì)列協(xié)議),是一個(gè)網(wǎng)絡(luò)協(xié)議,是應(yīng)用層協(xié)議的一個(gè)開放標(biāo)準(zhǔn),為面向消息的中間件設(shè)計(jì)?;诖藚f(xié)議的客戶端與消息中間件可傳遞消息,并不受客戶端/中間件不同產(chǎn)品,不同的開發(fā)語言等條件的限制。2006年,AMQP規(guī)范發(fā)布。類比HTTP。

RabbitMQ入門系列01----RabbitMQ簡(jiǎn)介

?2.4 為什么使用RabbitMQ?

2.4.1 解耦

  • 傳統(tǒng)模式:耦合性太強(qiáng),系統(tǒng)A在代碼中直接調(diào)用系統(tǒng)B和系統(tǒng)C的代碼,如果將來D系統(tǒng)接入,系統(tǒng)A還需要修改代碼,過于麻煩!

RabbitMQ入門系列01----RabbitMQ簡(jiǎn)介

  • 中間件模式:將消息寫入到對(duì)列中,需要消息的系統(tǒng)自己從消息隊(duì)列中訂閱,從而系統(tǒng)A不需要做任何改變?

RabbitMQ入門系列01----RabbitMQ簡(jiǎn)介

2.4.2?異步

  • 傳統(tǒng)模式:一些非必要的業(yè)務(wù)邏輯以同步的方式運(yùn)行,太耗費(fèi)時(shí)間

RabbitMQ入門系列01----RabbitMQ簡(jiǎn)介

  • ?中間件模式:將消息寫入消息隊(duì)列,非必要的業(yè)務(wù)邏輯以異步的方式運(yùn)行,加快響應(yīng)速度

RabbitMQ入門系列01----RabbitMQ簡(jiǎn)介

?2.4.3 削峰

  • 傳統(tǒng)模式:并發(fā)量大的時(shí)候,所有的請(qǐng)求直接懟到數(shù)據(jù)庫,造成數(shù)據(jù)庫連接異常

RabbitMQ入門系列01----RabbitMQ簡(jiǎn)介

  • ?中間件模式:系統(tǒng)A慢慢的按照數(shù)據(jù)庫能處理的并發(fā)量,從消息隊(duì)列中慢慢拉取消息(秒殺商品)

RabbitMQ入門系列01----RabbitMQ簡(jiǎn)介

?三.?RabbitMQ的安裝(linux系統(tǒng)安裝)

3.1 下載:

官網(wǎng)下載http://www.rabbitmq.com/download.html

RabbitMQ入門系列01----RabbitMQ簡(jiǎn)介?

3.2 安裝Erlang

  • 上傳安裝包到linux系統(tǒng)下

RabbitMQ入門系列01----RabbitMQ簡(jiǎn)介

  • ?進(jìn)入上傳后的目錄下,依次執(zhí)行命令:

1)rpm -ivh esl-erlang-17.3-1.x86_64.rpm --force --nodeps

2)rpm -ivh esl-erlang_17.3-1~centos~6_amd64.rpm --force --nodeps

3)rpm -ivh esl-erlang-compat-R14B-1.el6.noarch.rpm --force --nodeps

?3.3?安裝RabbitMQ

  • 上傳安裝包到linux系統(tǒng)下

RabbitMQ入門系列01----RabbitMQ簡(jiǎn)介

  • 進(jìn)入上傳后的目錄下,執(zhí)行命令:

rpm -ivh rabbitmq-server-3.4.1-1.noarch.rpm

??3.4?啟動(dòng)和停止

service rabbitmq-server start? #啟動(dòng)服務(wù)

service rabbitmq-server stop??#停止服務(wù)

service rabbitmq-server restart??#重啟服務(wù)

service rabbitmq-server status??#查看當(dāng)前服務(wù)

?3.5?設(shè)置開機(jī)自啟

chkconfig rabbitmq-server on

3.6?防火墻開放15672端口--外部可訪問

/sbin/iptables -I INPUT -p tcp --dport 15672 -j ACCEPT

/etc/rc.d/init.d/iptables save

?3.7?開啟web界面管理工具

rabbitmq-plugins enable rabbitmq_management

service rabbitmq-server restart

3.8?創(chuàng)建賬戶

? ? ? ? 這樣就算安裝成功了,他默認(rèn)有一個(gè)賬戶,賬號(hào)guest具有所有的操作權(quán)限,并且又是默認(rèn)賬號(hào),出于安全因素的考慮,guest用戶只能通過localhost登陸,并且只能在安裝機(jī)器上使用

? ? ? ? 我們創(chuàng)建一個(gè)admin賬戶,創(chuàng)建一個(gè)賬戶并支持遠(yuǎn)程ip訪問

  • 1. 創(chuàng)建賬戶

rabbitmqctl ?add_user admin 1111

  • ? 2. 給用戶添加角色

rabbitmqctl ?set_user_tags admin ?administrator

  • 3. 設(shè)置用戶權(quán)限

?rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"

  • 4.設(shè)置完成后可以查看當(dāng)前用戶和角色(需要開啟服務(wù))

?rabbitmqctl list_users

3.9 測(cè)試

????????瀏覽器輸入:serverip:15672。其中serverip是RabbitMQ-Server所在主機(jī)的ip,15672是RabbitMQ-Server的端口號(hào)

?

?四.?RabbitMQ管理界面

4.1 主頁總覽

RabbitMQ入門系列01----RabbitMQ簡(jiǎn)介

connections:無論生產(chǎn)者還是消費(fèi)者,都需要與RabbitMQ建立連接后才可以完成消息的生產(chǎn)和消費(fèi),在這里可以查看連接情況

channels:通道,建立連接后,會(huì)形成通道,消息的投遞獲取依賴通道。

Exchanges:交換機(jī),用來實(shí)現(xiàn)消息的路由

Queues:隊(duì)列,即消息隊(duì)列,消息存放在隊(duì)列中,等待消費(fèi),消費(fèi)后被移除隊(duì)列。

端口

????????5672: rabbitMq的編程語言客戶端連接端口

????????15672:rabbitMq管理界面端口

????????25672:rabbitMq集群的端口

4.2 添加用戶

如果不使用guest,我們也可以自己創(chuàng)建一個(gè)用戶:

RabbitMQ入門系列01----RabbitMQ簡(jiǎn)介

1、 超級(jí)管理員(administrator)

????????可登陸管理控制臺(tái),可查看所有的信息,并且可以對(duì)用戶,策略(policy)進(jìn)行操作。

2、 監(jiān)控者(monitoring)

????????可登陸管理控制臺(tái),同時(shí)可以查看rabbitmq節(jié)點(diǎn)的相關(guān)信息(進(jìn)程數(shù),內(nèi)存使用情況,磁盤使用情況等)

3、 策略制定者(policymaker)

????????可登陸管理控制臺(tái), 同時(shí)可以對(duì)policy進(jìn)行管理。但無法查看節(jié)點(diǎn)的相關(guān)信息(上圖紅框標(biāo)識(shí)的部分)。

4、 普通管理者(management)

????????僅可登陸管理控制臺(tái),無法看到節(jié)點(diǎn)信息,也無法對(duì)策略進(jìn)行管理。

5、 其他

????????無法登陸管理控制臺(tái),通常就是普通的生產(chǎn)者和消費(fèi)者

4.3 創(chuàng)建Virtual Hosts

虛擬主機(jī):類似于mysql中的database。他們都是以“/”開頭

RabbitMQ入門系列01----RabbitMQ簡(jiǎn)介

4.4?設(shè)置權(quán)限

1. 點(diǎn)擊用戶名

RabbitMQ入門系列01----RabbitMQ簡(jiǎn)介

2、設(shè)置權(quán)限

RabbitMQ入門系列01----RabbitMQ簡(jiǎn)介

3、查看效果文章來源地址http://www.zghlxwxcb.cn/news/detail-401872.html

RabbitMQ入門系列01----RabbitMQ簡(jiǎn)介

到了這里,關(guān)于RabbitMQ入門系列01----RabbitMQ簡(jiǎn)介的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【從0開始編寫webserver·基礎(chǔ)篇#01】為什么需要線程池?寫一個(gè)線程池吧

    【從0開始編寫webserver·基礎(chǔ)篇#01】為什么需要線程池?寫一個(gè)線程池吧

    參考: 1、游雙Linux高性能服務(wù)器編程 2、TinyWebServer 注:雖然是\\\"從0開始\\\",但最好對(duì)(多)線程、線程同步等知識(shí)點(diǎn)有所了解再看,不然可能有些地方會(huì)理解不到位(但也有可能是我沒說明到位,水平有限,見諒) Web服務(wù)器需要 同時(shí)處理多個(gè)客戶端請(qǐng)求 ,并且每個(gè)請(qǐng)求可能

    2024年02月04日
    瀏覽(23)
  • Isito  入門:為什么學(xué)  Istio、Istio 是什么

    Isito 入門:為什么學(xué) Istio、Istio 是什么

    本教程已加入 Istio 系列:https://istio.whuanle.cn 目錄 1,Istio 概述 ??聊聊微服務(wù)設(shè)計(jì) ??只使用 Kubernetes 部署容器, ??開始使用一些中間件,完善基礎(chǔ)設(shè)施 ?我為什么要學(xué) Istio ??所以,Istio 是什么 Istio 三個(gè)主要功能 Istio 原理 似乎用上 Kubernetes ,就是微服務(wù)系統(tǒng)了。 碰到很

    2024年02月06日
    瀏覽(19)
  • Mybatis為什么需要預(yù)編譯等一系列問題

    SQL 預(yù)編譯是一種提高數(shù)據(jù)庫訪問效率的技術(shù),它通過將 SQL 語句預(yù)編譯并存儲(chǔ)在數(shù)據(jù)庫中,減少每次執(zhí)行時(shí)需要進(jìn)行解析和編譯的開銷,從而提高數(shù)據(jù)庫訪問的效率。 在預(yù)編譯階段,SQL 語句會(huì)被解析并轉(zhuǎn)換為可執(zhí)行的二進(jìn)制代碼,然后存儲(chǔ)在數(shù)據(jù)庫中。當(dāng)需要執(zhí)行該 SQL 語句

    2024年02月10日
    瀏覽(25)
  • 【探索 Kubernetes|作業(yè)管理篇 系列 7】探究 Pod 有什么用,為什么需要它

    【探索 Kubernetes|作業(yè)管理篇 系列 7】探究 Pod 有什么用,為什么需要它

    大家好,我是秋意零。 前一篇,我們介紹了如何從 0 到 1 搭建 Kubernetes 集群?,F(xiàn)在我們可以正式了解,Kubernetes 核心特征了。 今天我們來探究 Pod,為什么需要 Pod? ?? 簡(jiǎn)介 ?? 個(gè)人主頁 : 秋意零 ?? 個(gè)人介紹 :在校期間參與眾多云計(jì)算相關(guān)比賽,如:?? “省賽”、“國(guó)

    2024年02月09日
    瀏覽(31)
  • 為什么黑客不黑/攻擊賭博網(wǎng)站?如何入門黑客?

    為什么黑客不黑/攻擊賭博網(wǎng)站?如何入門黑客?

    攻擊了,只是你不知道而已! 同樣,對(duì)方也不會(huì)通知你,告訴你他黑了賭博網(wǎng)站。 攻擊賭博網(wǎng)站的不一定是正義的黑客,也可能是因賭博輸錢而誤入歧途的法外狂徒。之前看過一個(gè)警方破獲的真實(shí)案件:28歲小伙因賭博無法提款自學(xué)成為黑客,攻擊境外博彩網(wǎng)站日進(jìn)萬元,最

    2023年04月11日
    瀏覽(28)
  • 入門ElasticSearch :為什么選擇ES作為搜索引擎?

    隨著數(shù)據(jù)量的不斷增長(zhǎng),搜索和分析大規(guī)模數(shù)據(jù)集變得越來越重要。傳統(tǒng)數(shù)據(jù)庫在面對(duì)這種需求時(shí)往往表現(xiàn)不佳,這時(shí)候就需要一種專門用于搜索和分析的引擎。ElasticSearch (簡(jiǎn)稱ES)就是這樣一款強(qiáng)大的搜索引擎,它具有許多優(yōu)勢(shì),使得它成為許多企業(yè)和開發(fā)者的首選。 簡(jiǎn)

    2024年02月09日
    瀏覽(23)
  • 【Golang】Golang進(jìn)階系列教程--為什么 Go 語言 struct 要使用 tags

    【Golang】Golang進(jìn)階系列教程--為什么 Go 語言 struct 要使用 tags

    在 Go 語言中,struct 是一種常見的數(shù)據(jù)類型,它可以用來表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。在 struct 中,我們可以定義多個(gè)字段,每個(gè)字段可以有不同的類型和名稱。 除了這些基本信息之外,Go 還提供了 struct tags,它可以用來指定 struct 中每個(gè)字段的元信息。 在本文中,我們將探討為什

    2024年02月15日
    瀏覽(40)
  • MSQL系列(十二) Mysql實(shí)戰(zhàn)-為什么索引要建立在被驅(qū)動(dòng)表上

    MSQL系列(十二) Mysql實(shí)戰(zhàn)-為什么索引要建立在被驅(qū)動(dòng)表上

    Mysql實(shí)戰(zhàn)-為什么索引要建立在被驅(qū)動(dòng)表上 前面我們講解了B+Tree的索引結(jié)構(gòu),也詳細(xì)講解下 left Join的底層驅(qū)動(dòng)表 選擇原理,那么今天我們來看看到底如何用以及如何建立索引和索引優(yōu)化 開始之前我們先提一個(gè)問題, 為什么索引要建立在被驅(qū)動(dòng)表上 ? 1.建表及測(cè)試數(shù)據(jù) 我們先

    2024年02月08日
    瀏覽(43)
  • 【C++入門】你知道C++為什么會(huì)有內(nèi)聯(lián)函數(shù)嗎?

    【C++入門】你知道C++為什么會(huì)有內(nèi)聯(lián)函數(shù)嗎?

    ??個(gè)人主頁:@Weraphael ???作者簡(jiǎn)介:目前學(xué)習(xí)C++和算法 ??專欄:C++航路 ?? 希望大家多多支持,咱一起進(jìn)步!?? 如果文章對(duì)你有幫助的話 歡迎 評(píng)論?? 點(diǎn)贊???? 收藏 ?? 加關(guān)注? 本章是補(bǔ)充C語言語法的不足,以及C++是如何對(duì)C語言設(shè)計(jì)不合理的地方進(jìn)行優(yōu)化的。 我

    2024年02月03日
    瀏覽(22)
  • 存儲(chǔ)采購(gòu)防PUA指南系列(一):為什么您不需要 1萬轉(zhuǎn)機(jī)械硬盤

    存儲(chǔ)設(shè)備作為承載客戶業(yè)務(wù)數(shù)據(jù)的底層基座,對(duì)客戶業(yè)務(wù)連續(xù)高效的成長(zhǎng)至關(guān)重要。但市場(chǎng)上各種存儲(chǔ)廠商、第三方機(jī)構(gòu)的PUA無處不在,究竟該如何選擇最適合自己業(yè)務(wù)的存儲(chǔ)設(shè)備呢?筆者基于多年存儲(chǔ)領(lǐng)域的經(jīng)驗(yàn),以盡量客觀的角度,編寫了一套“存儲(chǔ)采購(gòu)防PUA指南“供客

    2024年02月06日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包