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