偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Kafka的替代者Redpanda的架構(gòu)及部署

開(kāi)發(fā) 架構(gòu)
Redpanda完全兼容KafkaAPI,也就是說(shuō),開(kāi)發(fā)項(xiàng)目中不需要修改kafka客戶(hù)端相關(guān)的代碼,可以直接替換掉kafka。

介紹

Redpanda 使用C++編寫(xiě),是一個(gè)與 Kafka兼容的流數(shù)據(jù)平臺(tái),事實(shí)證明它的速度提高了10 倍。它還不含 JVM、不含 ZooKeeper、經(jīng)過(guò) Jepsen 測(cè)試且源代碼可用。

Redpanda完全兼容KafkaAPI,也就是說(shuō),開(kāi)發(fā)項(xiàng)目中不需要修改kafka客戶(hù)端相關(guān)的代碼,可以直接替換掉kafka。

因?yàn)槭荂++編寫(xiě),所以無(wú)需使用JVM,分布式協(xié)調(diào)使用raft協(xié)議,所以也無(wú)需使用zookeeper。只有一個(gè)可執(zhí)行二進(jìn)制文件,部署非常方便。

架構(gòu)

最近十年計(jì)算機(jī)硬件發(fā)生了不少變化:

硬盤(pán)由于NVMe協(xié)議的SSD,快了1000倍;網(wǎng)絡(luò)快了100倍;云計(jì)算更加便宜;但是CPU速度增長(zhǎng)不多,所以通過(guò)多核的辦法來(lái)解決。從這個(gè)趨勢(shì)來(lái)看,CPU似乎成了新的瓶頸。

在這種背景下,Redpanda為了適應(yīng)現(xiàn)代計(jì)算機(jī)硬件的發(fā)展,設(shè)計(jì)了自己的架構(gòu):

這種架構(gòu)稱(chēng)為T(mén)hread-Per-Core。上面提到,現(xiàn)代計(jì)算機(jī)有很多個(gè)核心。為了充分利用多核,就需要用到線(xiàn)程。但是線(xiàn)程會(huì)遇到兩個(gè)主要的問(wèn)題:1、在一些需要同步的時(shí)候必須用到lock,2、Context Switch成本較高。

而Thread-Per-Core架構(gòu)就是為了解決這兩個(gè)主要的問(wèn)題,有幾個(gè)core就建幾個(gè)thread,而且將thread綁定到特定的core上,因?yàn)椴粫?huì)有更多的thread,所以盡可能的減少了context switch。另外,Redpanda的每一個(gè)thread只負(fù)責(zé)處理各自的partition,所以也不需要用到lock。你可能會(huì)想,那I/O怎么處理?阻塞了thread怎么辦?在linux 5.1版本內(nèi)核以后,增加了一個(gè)完全異步的io模型——io_uring

io_uring使用用戶(hù)空間建立的兩個(gè)queue:sq(submit queue)和cq(complete queue)來(lái)完成io操作。read和write操作放入sq,這一步是異步的,然后應(yīng)用程序可以去做別的事情,待kernel完成工作后,就將結(jié)果放入cq,應(yīng)用程序需要檢查io結(jié)果的時(shí)候就去cq中查即可。在這種模式下,因?yàn)橛衧q的存在,所以相當(dāng)于系統(tǒng)調(diào)用是批量的,也就是內(nèi)核處理io是批量的。這樣也就充分利用了現(xiàn)代硬件的優(yōu)勢(shì),比如NVMe的SSD硬盤(pán),可以并行處理很多IO操作。

Redpanda的kafka client發(fā)送消息到Redpanda,其實(shí)是發(fā)送到了某一core上,當(dāng)這個(gè)core不負(fù)責(zé)某個(gè)partition時(shí),就會(huì)通過(guò)rpc通知到其他core上的thread進(jìn)行處理。在這里Redpanda并不使用grpc或者thrift,而是使用自己實(shí)現(xiàn)的輕量級(jí)rpc來(lái)達(dá)到完美的速度。當(dāng)有多個(gè)Redpanda節(jié)點(diǎn)時(shí),使用raft協(xié)議進(jìn)行數(shù)據(jù)共識(shí)。

綜上,Redpanda達(dá)到了3個(gè)目的:

  • 操作簡(jiǎn)單。只有一個(gè)二進(jìn)制可執(zhí)行文件,部署簡(jiǎn)單,無(wú)需jvm、zk。
  • 盡可能的零數(shù)據(jù)丟失。使用raft協(xié)議保障數(shù)據(jù)安全。
  • 實(shí)測(cè)比kafka快10倍。Thread-Per-Core架構(gòu)和io_uring的加持,使得其比kafka更快。

部署

Redpanda可以部署到docker、linux、win、macOS、kubernetes上。當(dāng)直接安裝到docker、linux、win、macOS上的時(shí)候,在安裝完,如果需要非本機(jī)訪(fǎng)問(wèn)的話(huà),需要在參數(shù)中配置advertising地址和端口,這樣才能在外部訪(fǎng)問(wèn)

下面說(shuō)下kubernetes部署。

https://github.com/redpanda-data/helm-charts

在這個(gè)地址下載helm chart,然后進(jìn)去找到values.yaml,主要需要修改的是storage這個(gè)地方:

修改成合適的storageClass,選擇好空間大小,然后執(zhí)行:

helm install redpanda redpanda     --namespace redpanda     --create-namespace

即可安裝成功。

責(zé)任編輯:姜華 來(lái)源: 今日頭條
相關(guān)推薦

2022-08-01 07:07:05

Python人工智能機(jī)器學(xué)習(xí)

2011-12-02 09:53:34

2009-08-21 09:34:59

XML-PRCEasyrest

2015-07-16 15:30:34

分布式計(jì)算PS云計(jì)算

2009-05-26 10:40:17

九城魔獸王者世界

2016-01-04 11:12:56

LiFiWi-Fi

2010-05-19 08:28:57

Traffic SerApache

2009-05-14 09:20:41

關(guān)系數(shù)據(jù)庫(kù)對(duì)象關(guān)系映射Terracotta

2010-05-11 10:03:55

ApacheLighttpdNginx

2014-10-22 14:04:50

傲游瀏覽器

2009-12-29 17:40:33

2009-03-27 18:01:00

LinuxNovell SLEDWindows

2014-05-23 18:05:19

2015-12-01 16:02:19

WiFiLiFi

2009-05-04 18:19:43

編程語(yǔ)言排行榜D語(yǔ)言

2014-07-26 15:22:31

趙修湘關(guān)系型數(shù)據(jù)庫(kù)Hive數(shù)據(jù)倉(cāng)庫(kù)

2023-03-17 07:39:54

開(kāi)源數(shù)據(jù)流技術(shù)

2018-01-02 05:08:43

互聯(lián)網(wǎng)人工智能5G

2017-07-14 16:41:12

軟件架構(gòu)視點(diǎn)

2020-11-17 09:00:00

Kafka架構(gòu)物聯(lián)網(wǎng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)