'Github超1萬star,Kafka,程序員不可不知的消息隊列簡介'

"

在互聯網中,我們常常講究著唯快不破,相信不少人都有這樣的經歷,明明一個非常簡單的需求,但卻要修改非常多的系統,導致開發效率低下,從而不停的加班。一個好的程序員,一定要學會設計出好的架構,寫出優雅的代碼,而好的架構,往往是各個系統低耦合的,消息隊列,正是解耦的一個神器。

消息隊列背景

我們舉一個簡單的例子,在我們的系統設計之初,所有的系統都是非常的簡單,我們以電商系統為例,一開始我們可能只需要非常簡單的一個web頁面,然後調用成單系統,緊接著扣減庫存,最後存到db即可。


"

在互聯網中,我們常常講究著唯快不破,相信不少人都有這樣的經歷,明明一個非常簡單的需求,但卻要修改非常多的系統,導致開發效率低下,從而不停的加班。一個好的程序員,一定要學會設計出好的架構,寫出優雅的代碼,而好的架構,往往是各個系統低耦合的,消息隊列,正是解耦的一個神器。

消息隊列背景

我們舉一個簡單的例子,在我們的系統設計之初,所有的系統都是非常的簡單,我們以電商系統為例,一開始我們可能只需要非常簡單的一個web頁面,然後調用成單系統,緊接著扣減庫存,最後存到db即可。


Github超1萬star,Kafka,程序員不可不知的消息隊列簡介


到後面,隨著業務的發展,系統變得越來複雜,可能我們每次交易,還要通知搜索系統,推薦系統,廣告結算系統,商家後臺等等等,我們的系統就會變得非常複雜。


"

在互聯網中,我們常常講究著唯快不破,相信不少人都有這樣的經歷,明明一個非常簡單的需求,但卻要修改非常多的系統,導致開發效率低下,從而不停的加班。一個好的程序員,一定要學會設計出好的架構,寫出優雅的代碼,而好的架構,往往是各個系統低耦合的,消息隊列,正是解耦的一個神器。

消息隊列背景

我們舉一個簡單的例子,在我們的系統設計之初,所有的系統都是非常的簡單,我們以電商系統為例,一開始我們可能只需要非常簡單的一個web頁面,然後調用成單系統,緊接著扣減庫存,最後存到db即可。


Github超1萬star,Kafka,程序員不可不知的消息隊列簡介


到後面,隨著業務的發展,系統變得越來複雜,可能我們每次交易,還要通知搜索系統,推薦系統,廣告結算系統,商家後臺等等等,我們的系統就會變得非常複雜。


Github超1萬star,Kafka,程序員不可不知的消息隊列簡介


本來一次非常交易操作,我們卻要通知非常多個調用方,一旦任何一方調用失敗,我們是否需要去重試?同時,有些操作非常的重,需要消耗大量的時間,本來用戶都要下單給錢了,因為調用多個系統導致耗時過長用戶下單失敗,就非常容易造成客戶的流失。

為了解決這個問題,我們引入了消息隊列,讓消息隊列去通知其他系統,而下單仍然是下單操作。


"

在互聯網中,我們常常講究著唯快不破,相信不少人都有這樣的經歷,明明一個非常簡單的需求,但卻要修改非常多的系統,導致開發效率低下,從而不停的加班。一個好的程序員,一定要學會設計出好的架構,寫出優雅的代碼,而好的架構,往往是各個系統低耦合的,消息隊列,正是解耦的一個神器。

消息隊列背景

我們舉一個簡單的例子,在我們的系統設計之初,所有的系統都是非常的簡單,我們以電商系統為例,一開始我們可能只需要非常簡單的一個web頁面,然後調用成單系統,緊接著扣減庫存,最後存到db即可。


Github超1萬star,Kafka,程序員不可不知的消息隊列簡介


到後面,隨著業務的發展,系統變得越來複雜,可能我們每次交易,還要通知搜索系統,推薦系統,廣告結算系統,商家後臺等等等,我們的系統就會變得非常複雜。


Github超1萬star,Kafka,程序員不可不知的消息隊列簡介


本來一次非常交易操作,我們卻要通知非常多個調用方,一旦任何一方調用失敗,我們是否需要去重試?同時,有些操作非常的重,需要消耗大量的時間,本來用戶都要下單給錢了,因為調用多個系統導致耗時過長用戶下單失敗,就非常容易造成客戶的流失。

為了解決這個問題,我們引入了消息隊列,讓消息隊列去通知其他系統,而下單仍然是下單操作。


Github超1萬star,Kafka,程序員不可不知的消息隊列簡介


交易系統只要在原來的基礎上,把對應的信息寫到消息隊列裡面,再有消息隊列去幹剩下的事情。這樣,我們就能保持原有的交易流程上的簡潔。而我們今天的主角Kafka正是常用的消息隊列!

Kafka的作用

  • Kafka最被大家熟知的運用場景,便是消息隊列,也稱消息中間件,消息中間件的主要優點有解耦、削峰、異步擴展性等等,並且Kafka還能保證消息是順序消費。
  • 存儲系統,因為Kafka會將數據寫到磁盤,所以不用擔心數據斷電丟失,有時候,我們也將Kafka作為存儲系統來使用。同時,Kafka天生的持久化與多機副本機制,讓數據存儲更加可靠與可用。
  • 流式處理平臺,Kafka提供非常多的api,並且式非常可靠的數據來源,可以結合spark等開源框架進行流式計算。

Kafka的體系架構

Kafka的體系架構也比較簡單,一個典型的卡夫卡體系包括若干消息的生產者,若干消息的消費者,若干個Broker以及一個Zookeeper集群,如下圖所示,其中,zk集群主要用來進行集群元數據的管理以及控制器的選舉等操作。


"

在互聯網中,我們常常講究著唯快不破,相信不少人都有這樣的經歷,明明一個非常簡單的需求,但卻要修改非常多的系統,導致開發效率低下,從而不停的加班。一個好的程序員,一定要學會設計出好的架構,寫出優雅的代碼,而好的架構,往往是各個系統低耦合的,消息隊列,正是解耦的一個神器。

消息隊列背景

我們舉一個簡單的例子,在我們的系統設計之初,所有的系統都是非常的簡單,我們以電商系統為例,一開始我們可能只需要非常簡單的一個web頁面,然後調用成單系統,緊接著扣減庫存,最後存到db即可。


Github超1萬star,Kafka,程序員不可不知的消息隊列簡介


到後面,隨著業務的發展,系統變得越來複雜,可能我們每次交易,還要通知搜索系統,推薦系統,廣告結算系統,商家後臺等等等,我們的系統就會變得非常複雜。


Github超1萬star,Kafka,程序員不可不知的消息隊列簡介


本來一次非常交易操作,我們卻要通知非常多個調用方,一旦任何一方調用失敗,我們是否需要去重試?同時,有些操作非常的重,需要消耗大量的時間,本來用戶都要下單給錢了,因為調用多個系統導致耗時過長用戶下單失敗,就非常容易造成客戶的流失。

為了解決這個問題,我們引入了消息隊列,讓消息隊列去通知其他系統,而下單仍然是下單操作。


Github超1萬star,Kafka,程序員不可不知的消息隊列簡介


交易系統只要在原來的基礎上,把對應的信息寫到消息隊列裡面,再有消息隊列去幹剩下的事情。這樣,我們就能保持原有的交易流程上的簡潔。而我們今天的主角Kafka正是常用的消息隊列!

Kafka的作用

  • Kafka最被大家熟知的運用場景,便是消息隊列,也稱消息中間件,消息中間件的主要優點有解耦、削峰、異步擴展性等等,並且Kafka還能保證消息是順序消費。
  • 存儲系統,因為Kafka會將數據寫到磁盤,所以不用擔心數據斷電丟失,有時候,我們也將Kafka作為存儲系統來使用。同時,Kafka天生的持久化與多機副本機制,讓數據存儲更加可靠與可用。
  • 流式處理平臺,Kafka提供非常多的api,並且式非常可靠的數據來源,可以結合spark等開源框架進行流式計算。

Kafka的體系架構

Kafka的體系架構也比較簡單,一個典型的卡夫卡體系包括若干消息的生產者,若干消息的消費者,若干個Broker以及一個Zookeeper集群,如下圖所示,其中,zk集群主要用來進行集群元數據的管理以及控制器的選舉等操作。


Github超1萬star,Kafka,程序員不可不知的消息隊列簡介


總結

今天我們對Kafka的初識就到這裡,作為一個最流行的消息隊列框架之一,Kafka有非常多值得學習的架構知識,歡迎大家關注我,共同學習,共同進步。大家的支持是我繼續嘮嗑的動力。同名公眾號(沙茶敏碎碎念)

"

相關推薦

推薦中...