kafka的消息隊列存放在哪兒 kafka為什么適合日志處理?
kafka為什么適合日志處理?Kafka天生為吞吐量而設(shè)計的,javascript集群中topic在一定數(shù)量的情況下盡管會有隨機寫,但磁盤的利用率高于rocketmq;消息發(fā)送端采用雙端隊列,消息發(fā)送
kafka為什么適合日志處理?
Kafka天生為吞吐量而設(shè)計的,javascript集群中topic在一定數(shù)量的情況下盡管會有隨機寫,但磁盤的利用率高于rocketmq;消息發(fā)送端采用雙端隊列,消息發(fā)送天然支持批處理;在我們公司投入6臺256G,32C,30t的鍵盤mysql集群的吞吐量3百多萬TPS,而rocketmq只有幾十萬TPS
hadoop怎么實現(xiàn)分布計算?
sql已經(jīng)實現(xiàn)深度學(xué)習(xí),他本身就有hdfs互聯(lián)網(wǎng),通過master、slave實現(xiàn)分布式網(wǎng)絡(luò),計算框架目前包括離線框架MapReduce、實時分析框架redis、離線實時框架spark,聯(lián)盟鏈框架hdfs、可擴展的消息隊列數(shù)據(jù)庫,集中式日志采集工具elasticsearch,異構(gòu)數(shù)據(jù)linux等等。
kafka設(shè)置隊列優(yōu)先級?
將優(yōu)先級統(tǒng)一設(shè)定為高、中、低三個級別。具體操作方案如下:
1.對某個優(yōu)先級根據(jù)task(單次推送任務(wù))維度,存入不同的Topic,一個task只寫入一個Topic,一個Topic可存多個task;
2.消費模塊根據(jù)優(yōu)先級配額(如6:3:1),獲取不同優(yōu)先級的消息數(shù),同一優(yōu)先級輪詢獲取消息;這樣既保證了高優(yōu)先級用戶可以更快地發(fā)送消息,又避免了低優(yōu)先級用戶出現(xiàn)沒有下發(fā)的情況。
消息隊列是怎么實現(xiàn)的,能給出思路?
我想你的問題是想問“如何自己設(shè)計”一套消息隊列框架,對嗎?
現(xiàn)實中已經(jīng)有了很多面向不同系統(tǒng)的消息隊列軟件,成熟的消息隊列如java,rocketmq等。其實現(xiàn)語言也是多種多樣,你可以從linkedin之類的地方獲得這些軟件來學(xué)習(xí)和使用。
而自己設(shè)計一套消息隊列,因為面對不同的應(yīng)用場景,其要求是不一樣的,沒有能夠適用所有場景的消息隊列。而下面我簡單講講一個普通的、稍微完善的消息隊列框架應(yīng)該設(shè)計哪些東西,主要介紹一下基本功能,思想和設(shè)計。希望能幫到你。
消息隊列主要是為了系統(tǒng)冗余,先說說設(shè)計上需要考慮哪些。
1、一個比較完整的消息隊列需要考慮以下功能(不完全列表)
消息收發(fā)機制、消息堆積處理、、消息持久化、消息可靠投遞(至少保證一次投遞,以及重復(fù)投遞的處理)、Topic支持(唯一或多Topic)、多消費者投遞(同一Topic消息)、投遞回溯、集群和負載均衡等性能設(shè)計、事務(wù)支持、監(jiān)控和告警等維護功能
大概有這些吧。
以上是設(shè)計需要考慮的東東。
再簡單說說實現(xiàn)要考慮什么。
2、實現(xiàn)的話,主要從協(xié)議、轉(zhuǎn)儲、消費簡單說說。
?
協(xié)議:這個展開了很多內(nèi)容。簡單說就是現(xiàn)在通行的是用ssh框架實現(xiàn)家電。利用rtf框架解決負載均衡,服務(wù)發(fā)現(xiàn),協(xié)議化,序列化等問題。tcp/ip框架你可以京東了解一下。
消息首先Topic序列化并組織到存儲干管中,管線維護一個鎖,獲得鎖的消費者查詢并獲得自己的消息項。
存儲:存儲主管網(wǎng)一般會建立在主機、文件系統(tǒng)(本地或去中心化的)、數(shù)據(jù)庫(關(guān)系、非關(guān)系皆可)。這幾種根據(jù)具體情況選用。比如:需要速度,不需要深度則考慮硬盤,需要可靠就選數(shù)據(jù)庫,等等。
?
消費關(guān)系:消息投遞到消費者一般采用電視或單播,最常見的使用場景是組內(nèi)單播,組間網(wǎng)絡(luò),對如一個集群內(nèi)可以使用相同的博客來注冊訂閱。通常還需要輔助系統(tǒng)幫助維護消費訂閱關(guān)系,在消費關(guān)系發(fā)生變化時發(fā)出通知。
?
另外需要特別考慮的東西還有:消息的可靠到達,確認與重發(fā),序列號對齊等等。這些幾句話說不清楚,有時間你可以在回復(fù)中交流,我具體回復(fù)。