立博APP

<code id="choey"><ol id="choey"><span id="choey"></span></ol></code>
    1. <var id="choey"></var>

        <code id="choey"></code>
      1. <output id="choey"><legend id="choey"></legend></output>

          <label id="choey"><legend id="choey"></legend></label>
        1. <code id="choey"></code>
          <var id="choey"><ol id="choey"><big id="choey"></big></ol></var>
          全國免費咨詢電話: 010-59418061
          關注尚腦
          Rabbitmq和Kafka簡單的性能測試
            測試環境:ubuntu 15.10 64位

            cpu:inter core i7-4790 3.60GHZ * 8

            內存:16GB

            硬盤:ssd 120GB

            軟件環境:rabbmitmq 3.6.0 kafka0.8.1 (均為單機本機運行)

            PS: 測試結果均為單操作測試,即生產的時候沒有消費操作

            測試結果:

            kafka :消費速度: 37,586 /s 生產速度: 448,753 /s

            rabbitmq: 消費速度: 20,807 /s 生產速度 16.413 /s

            出現問題:

            rabbitmq 生產4分鐘左右出現隊列阻塞,無法繼續添加數據,1分鐘后恢復,再過大約1分鐘又出現此現象并以約1分鐘為間隔出現此問題。

            rabbitmq 生產對象時有不小的幾率(約 1/20)添加隊列失敗,報出的錯誤是“tcp鏈接重置”

            其他并無任何問題

            結論:

            很明顯的看出kafka的性能遠超rabbitmq。不過這也是理所當然的,畢竟2個消息隊列實現的協議是不一樣的,處理消息的場景也大有不同。rabbitmq適合處理一些數據嚴謹的消息,比如說支付消息,社交消息等不能丟失的數據。kafka是批量操作切不報證數據是否能完整的到達消費者端,所以適合一些大量的營銷消息的場景。

            代碼:

           

          kafka:

          package main

          import (

          "github.com/Shopify/sarama"

          "os"

          "os/signal"

          "sync"

          "log"

          "time"

          )

          func main() {

          go producer()

          // go consumer()

          time.Sleep(10*time.Minute)

          }

          func producer() {

          config :=sarama.NewConfig()

          config.Producer.Return.Successes = true

          proder,err := sarama.NewAsyncProducer([]string{"localhost:9092"},config)

          if err != nil {

          panic(err)

          }

          signals :=make(chan os.Signal,1)

          signal.Notify(signals,os.Interrupt)

          var (

          wg sync.WaitGroup

          enqueued, successes, errors int

          )

          wg.Add(1)

          go func() {

          defer wg.Done()

          for _=range proder.Successes(){

          successes++

          }

          }()

          wg.Add(1)

          go func() {

          defer wg.Done()

          for err := range proder.Errors(){

          log.Println(err)

          errors++

          }

          }()

          go func() {

          t1 := time.NewTicker(time.Second)

          for{

          <- t1.C

          log.Println(enqueued)

          }

          }()

          ProducerLoop:

          for{

          message :=&sarama.ProducerMessage{Topic:"test",Value:sarama.StringEncoder("testing 123")}

          select {

          case proder.Input() <- message:

          enqueued++

          case <- signals:

          proder.AsyncClose()

          break ProducerLoop

          }

          }

          wg.Wait()

          log.Println("Successfully produced:%d;errors:%d\n",successes,errors)

          }

          func consumer() {

          coner,err := sarama.NewConsumer([]string{"localhost:9092"},nil)

          if err != nil {

          panic(err)

          }

          defer func() {

          if err :=coner.Close(); err !=nil{

          log.Fatalln(err)

          }

          }()

          partitionConsumer ,err := coner.ConsumePartition("test",0,sarama.OffsetNewest)

          if err != nil {

          panic(err)

          }

          defer func() {

          if err := partitionConsumer.Close();err!=nil{

          log.Fatalln(err)

          }

          }()

          signals := make(chan os.Signal,1)

          signal.Notify(signals,os.Interrupt)

          consumed:=0

          go func() {

          t1 := time.NewTicker(time.Second)

          for{

          <- t1.C

          log.Println(consumed)

          }

          }()

          ConsumerLoop:

          for{

          select {

          case _ = <-partitionConsumer.Messages():

          consumed++

          // log.Println( string(msg.Value)," => ",consumed)

          case <-signals:

          break ConsumerLoop

          }

          }

          log.Printf("Consumed: %d\n", consumed)

          }

           

          ?
          尚腦教育隸屬于(北京尚腦互聯科技有限公司)    版權所有       京ICP備15029150號-2
          友情鏈接: 北京APP開發 | xp純凈版系統下載 | 廣州網站建設 | 廣州拓展訓練 | 數字圖書館系統 | 醫廢監管系統平臺 | 北京網站建設 | 騰訊企業郵箱 | 微信刷粉絲 | 信陽網站建設 | VR外包 | 展會互動 | 深圳網絡營銷 | 微信恢復 |
          泸定| 五大连池| 柳城| 琼海| 洱源| 韦州| 洪泽| 榆次| 平湖| 哈尔滨| 榆社| 广饶| 龙山| 潮州| 乐亭| 茫崖| 三门峡| 金坛| 平坝| 邗江| 且末| 达尔罕茂明安联合旗| 乌当| 华亭| 赵县| 义乌| 彰武| 洞头| 逊克| 乌恰| 扬中| 咸丰| 连州| 梅州| 松江| 扎赉特旗| 大通| 南郑| 鄂托克旗| 五道梁| 梅河口| 蓬安| 神农架| 敦化| 洛阳| 重庆| 尉犁| 利辛| 康定| 长白| 灵石| 精河| 山南| 琼结| 沂源| 漠河| 兰屿| 福清| 郯城| 孪井滩| 安溪| 高平| 凉山| 索伦| 华池| 独山| 八达岭| 八里罕| 鄂托克旗| 于都| 嘉义| 微山| 吉木乃| 苏家屯| 长阳| 塔中| 保山| 通许| 宣化| 冷水江| 北流| 汉中| 漳县| 青阳| 安龙| 天等| 融水| 眉山| 泉州| 嵊州| 光山| 文水| 海林| 南陵| 交口| 仪陇| 巴盟农试站| 宜章| 本溪县| 留坝| 江陵| 湄潭| 澄海| 仁寿| 开阳| 通山| 三峡| 昌吉| 双鸭山| 大通| 北辰| 星子| 千阳| 武宁| 滑县| 中江| 牙克石| 岚县| 辉县| 商城| 崇阳| 两当| 武都| 湖州| 平阳| 费县| 双城| 瑞昌| 叶城| 柳河| 柘荣| 白日乌拉| 百色| 吐鲁番| 南阳| 西昌| 兰坪| 通什| 开原| 新巴尔虎右旗| 惠阳| 峨山| 东安| 内黄| 赵县| 兴安| 仙居| 茌平| 洱源| 乌什| 雷波| 大宁| 淮阴| 晋宁| 克山| 山南| 巢湖| 仁怀| 攀枝花| 呼图壁| 贡山| 达州| 郴州| 石台| 新泰| 上思| 大姚| 贺兰| 新竹市| 天台| 乾安| 龙泉| 金佛山| 晋宁| 太原北郊| 哈尔滨| 六枝| 荣经| 砚山| 桦川| 江门| 嘉善| 莎车| 海兴| 开远| 固原| 华山| 陈家镇| 翁牛特旗| 三亚| 吴忠| 宜宾| 图们| 武强| 施秉| 招远| 常宁| 乌审召| 元江| 雅布赖| 鲁甸| 乌拉特前旗| 高雄| 砚山| 祁门| 和布克赛尔| 新化| 吐鲁番| 巴仑台| 蒲县| 九华山| 郸城| 遮浪| 河南| 户县| 惠民| 太白| 太原| 磴口| 本溪县| 睢县| 和布克赛尔| 宁南| 嘉鱼| 大同县| 洛隆| 灵山| 张家川| 乌苏| 常宁| 舒兰| 泽当| 金湖| 华安| 弋阳| 永顺| 越西| ?涓?| 黄梅| 紫阳| 通什| 瑞昌| 富蕴| 额济纳旗| 徐家汇| 龙江| 永登| 永仁| 巴音布鲁克| 当雄| 德江| 嘉定| 科尔沁左翼后旗| 志丹| 银川| 宁陵| 上虞| 乌鞘岭| 沐川| 祁阳| 同心| 清河| 乐东| 秀屿港| 瓮安| 察尔汉| 莘县| 凌云| 大柴旦| 丰宁| 麻城| 恩平| 牡丹江| 歙县| 白云| 平昌| 马山| 大竹| 万安| 安阳| 高平| 苍梧| 湘阴| 香日德| 宜阳| 鄂尔多斯| 永仁| 崇阳| 融安| 临县| 石嘴山| 清河| 香日德| 呼中| 漠河| 大兴安岭| 高平| 肥乡| 北票| 白山| 峨眉| 西华| 胶南| 龙陵| 陶乐| 青龙山| 上思| 连云港| 尼勒克| 新林| 西乡| 太仓| 宜宾农试站| 鹤壁| 温州| 天柱| 东川| 赤水| 邵阳县| 双江| 张家界| 晋宁| 广昌| 安德河| 喀什| 融水| 洛浦| 花溪| 潮连岛| 奉贤| 洛南| 建阳| 镇源| 阿鲁科尔沁旗| 泸定| 弥渡| 阳江| 富民| 炉山| 崇武| 灌云| 安康| 酉阳| 武冈| 台州| 胡尔勒| 西沙| 曲江| 大荔| 光泽| 烟筒山| 钟祥| 金阳| 珲春| 阿鲁科尔沁旗| 兴义| 宣威| 南江| 含山| 平湖| 日喀则| 淮阴县| 海门| 墨竹贡卡| 峰峰| 宁南| 贵南| 新兴| 古县| 晋江| 海淀| 文登| 寿县| 巴中| 崇州| 惠水| 宣汉| 屏山| 江永| 天柱| 汝阳| 洛南| 隆安| 金华| 比如| 北安| 上蔡| 苏家屯| 广德| 准格尔旗| 华宁| 运城| 清水| 阜阳| 青神| 沙塘| 寻甸| 普定| 如东| 子长