哈嘍!你們好呀,真是一坑未平一坑又起,otter還在繼續更新的同時,筆者也爲你們帶來了關於kafka相關的一系列博客,要說到kafka就離不開如今特別火熱的大數據技術,瞭解的童鞋可能只要一些大數據的帶名詞好比Hadoop,spark,storm,包括最近很火的微服務,kafka也是其中一員,可是不一樣的是kafka並不負責處理數據,要給kafka一個定義的話應該是一個分佈式發佈訂閱消息系統能夠說是一個數據通道保證數據穩定傳輸,要是感興趣就開始和喵咪開始一場kafka的冒險吧!git
附上:github
喵了個咪的博客:w-blog.cn算法
KafKa官網地址:http://kafka.apache.org/數據庫
Git地址:https://github.com/apache/kafkaapache
筆者是怎麼了解到KafKa的呢?其實這個也源於InfoQ大會的功勞(InfoQ大會是一個技術架構分享峯會),在之間有不少你們耳熟能詳的公司來分享一些技術,你們在談論大數據技術的時候使用到了本文開篇提的Hadoop,spark,storm此類技術,可是他們都要有一個共同點,就是大部分使用了KafKa做爲了數據傳輸的通道,而且還有不少不須要使用到大數據的公司也在使用KafKa,爲何都要使用KafKa呢?KafKa能支撐大數據處理嗎,KafKa還能作什麼,筆者帶着這些疑問,開始對KafKa進行了瞭解!服務器
KafKa是一款由Apache軟件基金會開源,由Scala編寫的一個分佈式發佈訂閱消息系統,Kafka最初是由LinkedIn開發,並於2011年初開源(知道這個就夠了),KafKa它最初的目的是爲了解決,統一,高效低延時,高通量(同時能傳輸的數據量)而且高可用一個消息平臺.架構
說的更簡單易懂一點就是幫助程序之間互相傳遞消息,而且提供一些保證,全部的大數據處理也好,微服務也好他們都有一個共同的需求就是一個穩定的數據通道,KafKa恰好就是一個穩定高效通道最佳選擇!app
筆者也是總結了一些關於KafKa的一些特性以下:分佈式
KafKa能夠代替傳統的消息隊列軟件(阿里的隊列軟件RocketMQ就是基於KafKa實現的),在隊列軟件的選擇上KafKa已經成了不二之選,使用KafKa來實現隊列有以下優勢微服務
就以上幾點和筆者以前使用的Redis來承載隊列服務要優秀的多,在後續文章的比較中會一一說明
在不少時候咱們須要對一些龐大的數據進行存留,一些業務型公司可能永不上應爲基本能夠依靠數據庫解決日誌的問題,可是服務型公司好比jpush,雲監控此類服務,日誌存儲這塊會遇到巨大的問題,日誌不能丟,日誌存文件很差找,定位一條消息成本高(遍歷當天日誌文件),實時顯示給用戶難,這幾類問題KafKa都能遊刃有餘
kafka特有的offset機制可以保證消息至少被獲取一次,當程序在獲取途中死亡這條消息會被認定爲未被消費,下次會繼續消費這條消息,此特性使得kafka能夠做爲一個保障數據傳輸的通道來使用,可是kafka並無提供JMS中的"事務性""消息傳輸擔保(消息確認機制)""消息分組"等企業級特性;因此kafka只能使用做爲"常規"的消息系統
本節簡單介紹了一下kafka的一些相關知識,在後續的博文中喵咪將會從搭建單機到集羣對KafKa進行優化測試等場景進行說明,那麼今天的就到這裏了,再次感謝你們的支持!
注:筆者能力有限有說的不對的地方但願你們可以指出,也但願多多交流!