當前位置:首頁 » 操作系統 » kafka資料庫

kafka資料庫

發布時間: 2023-05-09 18:22:07

Ⅰ 大數據開發這么學習

分享大數據學習路線:

第一階段為JAVASE+MYsql+JDBC

主要學習一些Java語言的概念,如字元、流程式控制制、面向對象、進程線程、枚舉反射等,學習MySQL資料庫的安裝卸載及相關操作,學習JDBC的實現原理以及Linux基礎知識,是大數據剛入門階段。

第二階段為分布式理論簡介

主要講解CAP理論、數據分布方式、一致性、2PC和3PC、大數據集成架構。涉及的知識點有Consistency一致性、Availability可用性、Partition
tolerance分區容忍性、數據量分布、2PC流程、3PC流程、哈希方式、一致性哈希等。

第三階段為數據存儲與計算(離線場景)

主要講解協調服務ZK(1T)、數據存儲hdfs(2T)、數據存儲alluxio(1T)、數據採集flume、數據採集logstash、數據同步Sqoop(0.5T)、數據同步datax(0.5T)、數據同步mysql-binlog(1T)、計算模型MR與DAG(1T)、hive(5T)、Impala(1T)、任務調度Azkaban、任務調度airflow等。

第四部分為數倉建設

主要講解數倉倉庫的歷史背景、離線數倉項目-伴我汽車(5T)架構技術解析、多維數據模型處理kylin(3.5T)部署安裝、離線數倉項目-伴我汽車升級後加入kylin進行多維分析等;

第五階段為分布式計算引擎

主要講解計算引擎、scala語言、spark、數據存儲hbase、redis、ku,並通過某p2p平台項目實現spark多數據源讀寫。

第六階段為數據存儲與計算(實時場景)

主要講解數據通道Kafka、實時數倉druid、流式數據處理flink、SparkStreaming,並通過講解某交通大數讓你可以將知識點融會貫通。

第七階段為數據搜索

主要講解elasticsearch,包括全文搜索技術、ES安裝操作、index、創建索引、增刪改查、索引、映射、過濾等。

第八階段為數據治理

主要講解數據標准、數據分類、數據建模、圖存儲與查詢、元數據、血緣與數據質量、Hive Hook、Spark Listener等。

第九階段為BI系統

主要講解Superset、Graphna兩大技術,包括基本簡介、安裝、數據源創建、表操作以及數據探索分析。

第十階段為數據挖掘

主要講解機器學習中的數學體系、Spark Mlib機器學習演算法庫、Python scikit-learn機器學習演算法庫、機器學習結合大數據項目。

對大數據分析有興趣的小夥伴們,不妨先從看看大數據分析書籍開始入門!B站上有很多的大數據教學視頻,從基礎到高級的都有,還挺不錯的,知識點講的很細致,還有完整版的學習路線圖。也可以自己去看看,下載學習試試。

Ⅱ AWS正式發布Kafka雲服務,不用再為配置復雜操心了

AWS在re:Invent 2018大會上首先發布了託管Apache Kafka消息隊列服務(Amazon Managed Streaming for Apache Kafka,MSK)的消息,現在已經從預覽成為正式服務。

Apache Kafka是一個分布式的消息隊列系統,其使用發布以及訂閱的架構,將產生的流數據的應用與利用流數據的角色分離。Apache Kafka讓使用者可以捕捉如消息隊列事件、交易、物聯網等事件,或是應用與日誌等流數據,還能實時進行分析,連續不間斷地轉換數據,並再將收到的數據經過處理後,分發到其他的數據湖和資料庫中。

AWS提到,用戶在生產環境中要配置Apache Kafka,需要克服一些障礙,特別是在後續的管理以及規模擴展工作上,而現在AWS正式推出的MSK服務,則由AWS負責管理任務,讓用戶可以簡單地配置使用,而皮告謹且由於近幾個版本的Kafka,都需要與節點協調程序Zookeeper共同使用,因此MSK服務也只要簡單地設定,就能讓Kafka與ZooKeeper一同運行。

使用MSK服務,用戶可以在幾分鍾內創建集群,並使用AWS身分管理與訪問控制IAM管理集群操作,也能通過ACM(AWS Certificate Manager)完全託管的TLS私密憑證頒發機構授權客戶端,以TLS加密數據,並燃基使用KMS(AWS Key Management Service)中的密鑰加密其他數據。當伺服器發生故障時,MSK還會替換故障機器,自動執行修補,用戶可以從Amazon CloudWatch中,監控服務的狀態指標。

AWS表示,MSK與Kafka 1.1.1和2.1.0版本完全兼容,因此用戶可以在AWS直接執行原本的Kafka應用以及工具,而不需要修改任何的代碼,用戶能使用開源工具MirrorMaker,將數據從現有的Kafka集群直接遷移到MSK上。

MSK的計價友帆方式是以Kafka Broker以及配置存儲每小時計價,MSK的數據傳輸費用與原本的AWS數據傳輸相同,而集群所使用的Zookeeper節點,還有區域集群的Broker和Zookeeper節點互傳數據是不額外收費的。現在用戶已經可以在大部分的AWS區域使用到MSK服務,包括北美、亞洲與歐洲。

Ⅲ kafka數據 存在zookeeper哪個目錄

在Zookeeper的官 網上有這么一句話:ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services.
這大概描述了Zookeeper主要可轎岩以干哪些事情:配置管理,名字服務,提供分布式同步以及集群管理。那這些服務又到底是什麼呢?我們為什麼需要這樣的服務?我早信們又為什麼要使用Zookeeper來實現呢,使用Zookeeper有什麼優勢?接下來我會挨個介紹這些到底是什麼,以及有哪些開源系統中使用了。
配置管理
在我們的應用中除了代碼外,還有一些就是各種配置。比如資料庫連接等。一般我們都是使用配置文件的方式,在代碼中引入這些配置文件。但是當我們只有一種配置,只有一台伺服器,並且不經常修改的時候,使用配置文件是一個很好的做法,但是如果我們配置非常多,有很多伺服器都需要這個配置,而且還可能是動態的話使用配置文件就不是個好主意了。這個時候往往需要尋找一種集中管理配置的方法,我們在這個集中的地方修改了配置,所有對這個配置感興趣陸帆輪的都可以獲得變更。比如我們可以把配置放在資料庫里,然後所有需要配置的服務都去這個資料庫讀取配置。但是,因為很多服務的正常運行都非常依賴這個配置,所以需要這個集中提供配置服務的服務具備很高的可靠性。一般我們可以用一個集群來提供這個配置服務,但是用集群提升可靠性,那如何保證配置在集群中的一致性呢? 這個時候就需要使用一種實現了一致性協議的服務了。Zookeeper就是這種服務,它使用Zab這種一致性協議來提供一致性。現在有很多開源項目使用Zookeeper來維護配置,比如在HBase中,客戶端就是連接一個Zookeeper,獲得必要的HBase集群的配置信息,然後才可以進一步操作。還有在開源的消息隊列Kafka中,也使用Zookeeper來維護broker的信息。在Alibaba開源的SOA框架Dubbo中也廣泛的使用Zookeeper管理一些配置來實現服務治理。
名字服務
名字服務這個就很好理解了。比如為了通過網路訪問一個系統,我們得知道對方的IP地址,但是IP地址對人非常不友好,這個時候我們就需要使用域名來訪問。但是計算機是不能是別域名的。怎麼辦呢?如果我們每台機器里都備有一份域名到IP地址的映射,這個倒是能解決一部分問題,但是如果域名對應的IP發生變化了又該怎麼辦呢?於是我們有了DNS這個東西。我們只需要訪問一個大家熟知的(known)的點,它就會告訴你這個域名對應的IP是什麼。在我們的應用中也會存在很多這類問題,特別是在我們的服務特別多的時候,如果我們在本地保存服務的地址的時候將非常不方便,但是如果我們只需要訪問一個大家都熟知的訪問點,這里提供統一的入口,那麼維護起來將方便得多了。
分布式鎖
其實在第一篇文章中已經介紹了Zookeeper是一個分布式協調服務。這樣我們就可以利用Zookeeper來協調多個分布式進程之間的活動。比如在一個分布式環境中,為了提高可靠性,我們的集群的每台伺服器上都部署著同樣的服務。但是,一件事情如果集群中的每個伺服器都進行的話,那相互之間就要協調,編程起來將非常復雜。而如果我們只讓一個服務進行操作,那又存在單點。通常還有一種做法就是使用分布式鎖,在某個時刻只讓一個服務去幹活,當這台服務出問題的時候鎖釋放,立即fail over到另外的服務。這在很多分布式系統中都是這么做,這種設計有一個更好聽的名字叫Leader Election(leader選舉)。比如HBase的Master就是採用這種機制。但要注意的是分布式鎖跟同一個進程的鎖還是有區別的,所以使用的時候要比同一個進程里的鎖更謹慎的使用。
集群管理
在分布式的集群中,經常會由於各種原因,比如硬體故障,軟體故障,網路問題,有些節點會進進出出。有新的節點加入進來,也有老的節點退出集群。這個時候,集群中其他機器需要感知到這種變化,然後根據這種變化做出對應的決策。比如我們是一個分布式存儲系統,有一個中央控制節點負責存儲的分配,當有新的存儲進來的時候我們要根據現在集群目前的狀態來分配存儲節點。這個時候我們就需要動態感知到集群目前的狀態。還有,比如一個分布式的SOA架構中,服務是一個集群提供的,當消費者訪問某個服務時,就需要採用某種機制發現現在有哪些節點可以提供該服務(這也稱之為服務發現,比如Alibaba開源的SOA框架Dubbo就採用了Zookeeper作為服務發現的底層機制)。還有開源的Kafka隊列就採用了Zookeeper作為Cosnumer的上下線管理。
後記
在這篇文章中,列出了一些Zookeeper可以提供的服務,並給出了一些開源系統裡面的實例。後面我們從Zookeeper的安裝配置開始,並用示例進一步介紹Zookeeper如何使用。
(轉載)

Ⅳ kafka 獲取的數據怎麼寫進資料庫

string str;
if (radioButton1.Checked == true)
{
str = radioButton1.Text;
}
寫入數據御岩庫的時候 就鎮凱御寫 radioButton1的Text 就好孫數 。。

Ⅳ 軟體開發中的Kafka和資料庫的關系是什麼呢

首先明確說明Kafka不是資料庫,它沒有schema,也沒有表,更沒有索引。

1.它僅僅是生產消息流、消費消息流而已。從這個角度來說Kafka的確不像資料庫,至少不像我們熟知的關系型資料庫。

那麼到底什麼是資料庫呢?或者說什麼特性使得一個系統可以被稱為資料庫?經典的教科書是這么說的:資料庫是提供 ACID 特性的,我們依次討論下ACID。
1、持久性(rability)
我們先從最容易的持久性開始說起,因為持久性最容易理解。在80年代持久性指的是把數據寫入到磁帶中,這是一種很古老的存儲設備,現在應該已經絕跡了。目前實現持久性更常見的做法是將數據寫入到物理磁碟上,而這也只能實現單機的持久性。當演進到分布式系統時代後,持久性指的是將數據通過備份機制拷貝到多台機器的磁碟上。很多資料庫廠商都有自己的分布式系統解決方案,如GreenPlum和Oracle RAC。它們都提供了這種多機備份的持久性。和它們類似,Apache Kafka天然也是支持這種持久性的,它提供的副本機制在實現原理上幾乎和資料庫廠商的方案是一樣的。
2、原子性(atomicity)
資料庫中的原子性和多線程領域內的原子性不是一回事。我們知道在Java中有AtomicInteger這樣的類能夠提供線程安全的整數操作服務,這里的atomicity關心的是在多個線程並發的情況下如何保證正確性的問題。而在資料庫領域,原子性關心的是如何應對錯誤或異常情況,特別是對於事務的處理。如果服務發生故障,之前提交的事務要保證已經持久化,而當前運行的事務要終止(abort),它執行的所有操作都要回滾,最終的狀態就好像該事務從未運行過那樣。舉個實際的例子,
第三個方法是採用基於日誌結構的消息隊列來實現,比如使用Kafka來做,如下圖所示:
在這個架構中app僅僅是向Kafka寫入消息,而下面的資料庫、cache和index作為獨立的consumer消費這個日誌——Kafka分區的順序性保證了app端更新操作的順序性。如果某個consumer消費速度慢於其他consumer也沒關系,畢竟消息依然在Kafka中保存著。總而言之,有了Kafka所有的異質系統都能以相同的順序應用app端的更新操作,

3、隔離性(isolation)
在傳統的關系型資料庫中最強的隔離級別通常是指serializability,國內一般翻譯成可串列化或串列化。表達的思想就是連接資料庫的每個客戶端在執行各自的事務時資料庫會給它們一個假象:彷彿每個客戶端的事務都順序執行的,即執行完一個事務之後再開始執行下一個事務。其實資料庫端同時會處理多個事務,但serializability保證了它們就像單獨執行一樣。舉個例子,在一個論壇系統中,每個新用戶都需要注冊一個唯一的用戶名。一個簡單的app實現邏輯大概是這樣的:
4、一致性(consistency)
最後說說一致性。按照Kelppmann大神的原話,這是一個很奇怪的屬性:在所有ACID特性中,其他三項特性的確屬於資料庫層面需要實現或保證的,但只有一致性是由用戶來保證的。嚴格來說,它不屬於資料庫的特性,而應該屬於使用資料庫的一種方式。坦率說第一次聽到這句話時我本人還是有點震驚的,因為從沒有往這個方面考慮過,但仔細想想還真是這么回事。比如剛才的注冊用戶名的例子中我們要求每個用戶名是唯一的。這種一致性約束是由我們用戶做出的,而不是資料庫本身。資料庫本身並不關心或並不知道用戶名是否應該是唯一的。針對Kafka而言,這種一致性又意味著什麼呢?Kelppmann沒有具體展開,

希望能幫到你,謝謝!

Ⅵ canal+Kafka實現mysql與redis數據同步

前言

上篇文章簡單介紹canal概念,本文結合常見的緩存業務去講解canal使用。在實際開發過程中,通常都會把數據往redis緩存中保存一份,做下簡單的查詢優化。如果這時候資料庫數據發生變更操作,就不得不在業務代碼中寫一段同步更新redis的代碼,但是這種 數據同步的代碼和業務代碼糅合在一起 看起來不是很優雅,而且還會出現數據不一致問題。那能不能把這部分同步代碼從中抽離出來,形成獨立模塊呢?答案是肯定的,下面通過canal結合Kafka來實現mysql與redis之間的數據同步。

架構設計

通過上述結構設計圖可以很清晰的知道用到的組件:MySQL、Canal、Kafka、ZooKeeper、Redis。


Kafka&Zookeeper搭建

首先在 官網 下載Kafka:

下載後解壓文件夾,可以看到以下幾個文件:

Kafka內部自帶了zookeeper,所以暫不需要去下載搭建zookeeper集群,本文就使用Kafka自帶zookeeper來實現。

通過上述zookeeper啟動命令以及Kafka啟動命令把服務啟動,可以通過以下簡單實現下是否成功:

Canal搭建

canal搭建具體可以參考上文,這里只講解具體的參數配置:

找到/conf目錄下的canal.properties配置文件:

然後配置instance,找到/conf/example/instance.properties配置文件:

經過上述配置後,就可以啟動canal了。

測試

環境搭建完成後,就可以編寫代碼進行測試。

1、引入pom依賴

2、封裝Redis工具類

在application.yml文件增加以下配置:

封裝一個操作Redis的工具類:

3、創建MQ消費者進行同步

創建一個CanalBean對象進行接收:

最後就可以創建一個消費者CanalConsumer進行消費:

測試Mysql與Redis同步

mysql對應的表結構如下:

啟動項目後,新增一條數據:

可以在控制台看到以下輸出:

如果更新呢?試一下Update語句:

同樣可以在控制台看到以下輸出:

經過測試完全么有問題。


總結

既然canal這么強大,難道就沒缺點嘛?答案當然是存在的啦,比如:canal只能同步增量數據、不是實時同步而是准實時同步、MQ順序問題等; 盡管有一些缺點,畢竟沒有一樣技術或者產品是完美的,最重要是合適。比如公司目前有個視圖服務提供寬表搜索查詢功能就是通過 同步Mysql數據到Es採用Canal+Kafka的方式來實現的。

Ⅶ kafka的原理是什麼

在 kafka 中, topic 是一個存儲消息的邏輯碰鉛概念,可以認為是一個消息集合。每條消息發送到 kafka 集群的消息都有一個topic。物理上來說,不同的 topic 的消息是分開存儲的,每個 topic 可以有多個生產者向它發送消息,也可以有多個消費者去消費其中的消息。

partition分區是topic的進一步拆分,每個topic可以拆分為多個partition分區,類似於資料庫中表的水平拆分,每條消息都會分到某一個分區當中,分區內部會給消息分配一個offset來表示消息的順序所在。

多個生產者可以向topic發送消息,消息可以按照一定規則均勻分布在各塵模個partition裡面,由於各個partition物理上也是隔離存儲的,這點就類似於資料庫對於表做水平拆分來提高性能。

(7)kafka資料庫擴展閱讀

Kafka它可以處理消費者在網站中的所有動作流數據。 這種動作(網頁瀏覽,搜索和其他用戶的行動)是在現代網路上笑兄好的許多社會功能的一個關鍵因素。 這些數據通常是由於吞吐量的要求而通過處理日誌和日誌聚合來解決。

對於像Hadoop一樣的日誌數據和離線分析系統,但又要求實時處理的限制,這是一個可行的解決方案。Kafka的目的是通過Hadoop的並行載入機制來統一線上和離線的消息處理,也是為了通過集群來提供實時的消息。

Ⅷ 大數據Kafka有哪些優勢能力呢

Kafka的高吞吐能力、緩存機制能有效的解決高峰流量沖擊問題。實踐表明,在未將kafka引入系統前,當互聯網關發送的數據量較大時,往往會掛起關系資料庫,數據常常丟失。在引入kafka後,更新程序能夠結合能力自主處理消息,不會引起數據丟失,關系型資料庫的壓力波動不會發生過於顯著的變化,不會出現資料庫掛起鎖死現象。

依靠kafka的訂閱分發機制,實現了一次發布,各分支依據需求自主訂閱的功能。避免了各分支機構直接向數據中心請求數據,或者數據中心依次批量向分支機構傳輸數據以致實時性不足的情況。kafka提高了實時性,減輕了數據中心的壓力,提高了效率。為了幫助大家讓學習變得輕松、高效,給大家免費分享一大批資料,幫助大家在成為大數據工程師,乃至架構師的路上披荊斬棘。在這里給大家推薦一個大數據學習交流圈:658558542 歡迎大家進群交流討論,學習交流,共同進步。

當真正開始學習的時候難免不知道從哪入手,導致效率低下影響繼續學習的信心。

但最重要的是不知道哪些技術需要重點掌握,學習時頻繁踩坑,最終浪費大量時間,所以有有效資源還是很有必要的。

消費者是以consumer group消費者組的方式工作,由一個或者多個消費者組成一個組,共同消費一個topic。每個分區在同一時間只能由group中的一個消費者讀取,但是多個group可以同時消費這個partition。在圖中,有一個由三個消費者組成的group,有一個消費者讀取主題中的兩個分區,另外兩個分別讀取一個分區。某個消費者讀取某個分區,也可以叫做某個消費者是某個分區的擁有者。
在這種情況下,消費者可以通過水平擴展的方式同時讀取大量的消息。另外,如果一個消費者失敗了,那麼其他的group成員會自動負載均衡讀取之前失敗的消費者讀取的分區。

  • 消費方式

  • consumer採用pull(拉)模式從broker中讀取數據。

  • push(推)模式很難適應消費速率不同的消費者,因為消息發送速率是由broker決定的。它的目標是盡可能以最快速度傳遞消息,但是這樣很容易造成consumer來不及處理消息,典型的表現就是拒絕服務以及網路擁塞。而pull模式則可以根據consumer的消費能力以適當的速率消費消息。

  • 對於Kafka而言,pull模式更合適,它可簡化broker的設計,consumer可自主控制消費消息的速率,同時consumer可以自己控制消費方式——即可批量消費也可逐條消費,同時還能選擇不同的提交方式從而實現不同的傳輸語義。

  • pull模式不足之處是,如果kafka沒有數據,消費者可能會陷入循環中岩余,一直等待盯粗數據到達。為了避免這種情況,我們在我們的拉請求中有參數,允許消費者請求在等待數據到達的「長輪詢」中進行阻塞(並且可選地等待到給定的位元組數,以確保大的傳輸大小)。

  • 消費者組的偏移量等信息存儲在zookeeper中的consumers節點中。

6.1 Kafka Procer 壓力測試

  • record-size 是一條信息有多大,單位是位元組。

  • num-records 是總共發送多少條信息。

  • throughput 是每秒多凱棗鎮少條信息,設成-1,表示不限流,可測出生產者最大吞吐量。

Ⅸ 「根本就不需要 Kafka 這樣的大型分布式系統!」

作者 | Normcore Tech

譯者 | 彎月,責編 | 屠敏

出品 | CSDN(ID:CSDNnews)

以下為譯文:

可能有人沒有聽說過Kafka,這是一個非常復雜的分布式軟體,可協調多台計算機之間的數據傳輸。更具體地說,該軟體的功能是「展平」數據,然後快速地將數據從一個地方移動到另一個地方。一般來講,如果你有很多數據需要快速處理並發送到其他地方,那麼就可以考慮一下Kafka。Kafka還可以在一定期限內保留數據,比如設置數據保存2天、3天或7天,如果你的下游流程失敗,那麼你還可以利用存儲在Kafka中的數據重新處理。

許多處理匯總數據的公司(比如Facebook和Twitter等社交網路數據,以及每晚需要處理大量星體巧尺運動的天文學家,或需要快速了解車輛周圍環境數據的自動駕駛車輛公司等)都在使用Kafka,將任意地方生產的數據(即用戶通過鍵盤輸入的數據,通過望遠鏡讀取的數據,通過車輛遙測讀取的數據等)移動至下游流程進行處理和分析。

最近,WeWork更為名The We Company,他們在共享工作間領域取得了成功,其官網宣稱公司的使命為:

「提升世界的意識。」其核心業務是從房地產出租公司那裡租下辦公室,然後轉租給無法按照傳統流程租賃辦公室的個人和小公司。

為了「提升世界的意識」,該公司致力於為世界各地的個人和公司的團隊打造獨特卻又不完全相同的辦公空間。最近,該公司還開始涉足教育。

最近,因為上市,WeWork曝光了一些財務信息:

從好的方面來看,根據A xi os的數據,2018年WeWork的入住率為90%,且會員總數在不斷增加。

有人常常將WeWork視為矽谷地區的公司過高估值的完美例子。作為一家房地產企業,WeWork燒錢的速度非常快,毫無疑問他們必須努力讓公眾市場投資者相信公司有長遠的發展,同時和還要維護其作為 科技 公司的地位。

這家公司再三強調說它不是一家房地產公司(畢竟它在不斷燒錢對吧?),那麼一家消息中介技術公司究竟能提供什麼?WeWork曾宣布,它使用Kafka來實現「內部部署的物聯網需求」。這是什麼意思?

「我們的產品是物理空間,」WeWork的首席開發負責人David Fano說,他在會議期間穿著一件印有「bldgs = data」字樣的T恤。

每個辦公室都有10個環境感測器——小巧的壁掛式綠色盒子,這些感測器可跟蹤室內溫度、濕度、空氣質量、氣壓和環境光線水平。還有20個白色的壁掛式信標孝褲高,呈三角形分布在公共空間(開放式辦公區和會議室),用於測量WeWork成員的室內位置(數據是匿名的)。頂部四分之一的感測器通過計算機視覺觀察成員的活動。

換句話說,WeWork會跟蹤WeWork的多個物理事件並記錄所有這些數據。但是......他們真的有必要這樣做嗎?記錄Keith Harring壁畫周圍開放區域的環境溫度能給他們帶來怎樣的競爭優勢?更重要的是,他們能否將這些信息用到重要的項目中?

對於公司而言,重要的是要了解辦公室的「單位組合」 ——私人辦公室、會議空間和開放式辦公桌——的比例,我們可以利用這些信息對下一個辦公間作出調整。

我覺得這家新聞報道機構需要建立一種思考技術的心理模型。Ben Thompson為Stratechery提供了出色的服務,他建立了聚合理論(https://stratechery .com /concepts/),我在努力為這些理論建立一個網站,如果必須從中選擇一個的話,那便是:

大多數創業公司(以及大公司)現有的技術棧都沒有必要。

在此,我想挑戰一下那些自認為可以在一個周末期間獨自建立Facebook的Hacker News上的開發人員,我認為WeWork的實際業務和架構問題在於:

WeWork需要的只不過是清點進出的人數,然後對容量規劃做優化而已,追蹤「氣壓」有什麼用?只要你有WeWork的ID,那你肯定是個人或公司。那麼,在大堂里安裝一個登記系統,並要求會議系統發放名牌,不是更簡單嗎?

第一項要求根本就不需要Kafka:

目前WeWork有280個辦公間。純仔假設每個辦公間平均每天有1000個(有這么多嗎?)成員出入。那麼每天會產生280,000個事務。我們假設每個人在早餐時間進來一次,在午餐時間出入各一次,然後離開。那麼每個人會產生4個事務。那麼每天大約是100萬個事務,這點數據量存儲在最常用的開源關系資料庫Postgres中就可以了。保守地說,Postgres每秒可以提供10,000次寫入(如果設置得當,其寫入次數會更高)。每天100萬個事件,也就是每秒11次。根本就不是問題。

至於第二項要求,受預訂會議室人數的影響,產生的數據量可能更高,但你不需要實時傳輸數據。你完全可以等到一天結束時批量處理或收集,這同樣可以利用司空見慣的關系資料庫。

與大型Postgres(或者是BigQuery,或選擇其他關系資料庫連接到接收JSON感測器數據的Web服務)相比,Kafka的日常開銷要高出很多,因為分布式系統非常非常復雜,比傳統的系統復雜得多。

Kafka是一個非常優秀的強大的工具,但各個公司在採用該軟體時,需要三思而後行。殺雞焉用牛刀,WeWork用Kafka來記錄開放辦公間的氣壓,實屬大材小用。

雖然很多時候我們都不需要Kafka,但開發人員很喜歡推薦這個工具,因為他們可以借機積攢經驗和談資。開發人員喜歡用最尖端的技術來完成工作,有時甚至他們自己都沒意識到這一點。

過度架構真實存在。 Nemil在一篇文章中說:

在職業生涯的早期,你遇到的大量設計不良的軟體系統都要歸咎於那些傳播錯誤觀點的工程媒體。

在大學和培訓班中,你對工程的了解主要來自工程媒體,例如 Hacker News、聚會、會議、Free Code Camp和Hacker Noon等。這些網站廣泛討論的技術(比如微服務、前端框架或區塊鏈)自然會現在你的技術棧中,雖然不是很必要。

使用這些技術棧會導致各個公司承擔不必要的債務,導致他們不得不在風險投資周期中尋求更多的資金,無法邁向精益或從別人的資金中解脫出來。

這種不幸的趨勢只會持續下去,我們唯一能做的就是公之於眾。

原文:https://vicki.substack .com /p/you-dont-need-kafka

【END】

熱點內容
網吧u盤拒絕訪問 發布:2025-05-16 14:13:50 瀏覽:259
無線網檢查網路配置是怎麼回事 發布:2025-05-16 14:04:03 瀏覽:220
網路爬蟲python代碼 發布:2025-05-16 14:03:26 瀏覽:516
汽車小組件怎麼弄到安卓桌面 發布:2025-05-16 13:51:12 瀏覽:220
linuxg編譯器下載 發布:2025-05-16 13:50:58 瀏覽:776
centosc編譯器 發布:2025-05-16 13:50:17 瀏覽:948
安卓手機如何變換桌面 發布:2025-05-16 13:39:33 瀏覽:515
sql存儲過程命令 發布:2025-05-16 13:17:54 瀏覽:146
用紙做解壓小玩具西瓜 發布:2025-05-16 13:04:09 瀏覽:936
區域網xp無法訪問win7 發布:2025-05-16 13:03:58 瀏覽:943