訊息佇列的使用場景之kafka

xuexiaogang發表於2021-12-11

自己原文公眾號: https://mp.weixin.qq.com/s/21VyBQtwIlNORZmVjQvdhw


 kafka安裝和使用其實比rabbitMQ要容易些,也舒服些。

1、防火牆關閉

2、java環境安裝完畢

3、3臺主機名修改規劃完畢


每臺機器

mkdir -p /zookeeper/data

tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz

mv apache-zookeeper-3.7.0-bin /zookeeper/

vim /zookeeper/apache-zookeeper-3.7.0-bin/conf/zoo.cfg

配置檔案如下

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/zookeeper/data/zookeeper

dataLogDir=/zookeeper/data/logs

clientPort=2181

maxClientCnxns=60

autopurge.snapRetainCount=3

autopurge.purgeInterval=1

server.1=10.60.156.187:2888:3888

server.2=10.60.156.188:2888:3888

server.3=10.60.156.189:2888:3888


這些是關鍵步驟,即Kafka要依靠zk。如果面試的時候我會問問,大致安裝步驟是什麼?要注意什麼。最起碼zk的myid要說說吧。kafka的brokerid要說說吧。就像MySQL的serverid一個意思。這個如果都沒說出來,嚴重懷疑到底做過沒有啊?


zkServer.sh status啟動以後看看是flower還是leader。

以上是三臺的zk。


而kafka就是解壓以後直接配置

vim /root/kafka/config/server.properties

然後就啟動。不想rabbitMQ那樣有加入叢集的步驟,因為zk完成了。

kafka的主節點和非主節點的區別是這樣的:

可見任意節點都是可以的。

總體來說和rabbiMQ的套路差不多。

不過使用起來,方便一些。

下面是我從其他網站上找得到的


有人是這樣總結的:

 rabbitmq       

1.RabbitMQ的訊息應當儘可能的小,並且只用來處理實時且要高可靠性的訊息。
2.消費者和生產者的能力盡量對等,否則訊息堆積會嚴重影響RabbitMQ的效能。
3.叢集部署,使用熱備,保證訊息的可靠性。

 

kafka

1.應當有一個非常好的運維監控系統,不單單要監控Kafka本身,還要監控Zookeeper。(kafka強烈的依賴於zookeeper,如果zookeeper掛掉了,那麼Kafka也不行了)
2.對訊息順序不依賴,且不是那麼實時的系統。
3.對訊息丟失並不那麼敏感的系統。
4.從 A 到 B 的流傳輸,無需複雜的路由,最大吞吐量可達每秒 100k 以上。


我覺得總結的對。不過我經歷的不少專案不管是不是用對了,重點是都用了。問題是用了以後貌似沒有太好的效果。

當然我也經歷了不少沒有有任何一種訊息佇列。訊息佇列還有RocketMQactiveMQ等等我就不再寫了,大同小異。

其實不少時候不用也行。我之所以要寫了兩篇是為了說明他們,然後才說可以不要用,否則可能會被誤解,不會用而不用。

我是ITPUB記憶體資料庫版主,儘管如此我認為很多Redis都是用錯的。不能因為我會什麼就推薦什麼,這是不負責的。


以前看到一篇部落格說有的公司用redis存日誌。其實 基本是開發團隊喜歡什麼用什麼,沒有特別要求。就像資料庫選型一樣,大多數開發可能也是人云亦云的使用。

誰誰誰用了MySQL、誰誰誰用了PG、誰誰誰用了Oracle。當然還有誰誰誰用了SQLSERVER DB2.其實他們用了什麼是出於對他們自己業務場景進行了考量,非常瞭解什麼技術合適自己。大廠的技術選型都是結合自己,而不是開發喜好。

至少資料庫由DBA說了算,訊息佇列由SA說了算。但是現在網際網路模式下DBA和SA模糊了,更多的DBA將SA的這部分做了。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/637517/viewspace-2847171/,如需轉載,請註明出處,否則將追究法律責任。

相關文章