去年的專案涉及了不少和資料流相關的內容,當時的自己還只會使用aws sqs來處理訊息資料流,一年下來雖然完成了既定計畫,但是也暴露了一些問題。由於我們會用多個執行緒同時讀取兩條資料流來更新dynamodb中儲存的一條資料,時不時就會出現由於optimistic locking造成的conditional checker failure。在流量很大的時候,這種failure的數量會劇增導致訊息處理的效率降低。
年末在和另乙個組的交流中發現,他們也遇到過類似的問題。出現問題的原因,就是在專案開始的時候做出了錯誤的估計:「這種資料更新造成locking的情況不怎麼會出現」,而實際情況則是呵呵呵啊。最後他們的解決方法是使用了kinesis stream。kinesis stream通過乙個使用者提供的partition key,把同乙個key的資料都放到乙個shard當中,而每乙個shard都會被乙個(且僅有乙個)處理器processor處理。processor和shard之間是一一對應的關係。這樣一來,只要id一樣的資料都被放到同乙個shard當中並且由乙個processor處理,就不會出現執行緒之間的race condition,自然也就能緩解資料量增加時系統的壓力了。
於是乎這個假期跟隨著aws的文件,把kinesis stream的基本概念過了一遍。有些概念我自己覺得文件說的不是那麼清楚,在讀的過程中會萌生各種問題和假設,不過好在看完所有的文件後我的假設都得到了驗證。為了免得以後忘記,在此記錄一下(這裡省略了一些其他概念,只是記錄讓我自己產生疑惑的地方)。
在第一點中提到的不同應用的情況,可以認為是有另乙個fleet上部署的是另一種應用且同時也在讀取這個kinesis stream當中的資料。
這裡的dynamodb狀態表也應該就是不同的應用能夠同時處理同乙個kinesis stream中的資料的原因。各讀各的,每個人讀到**自己記錄到不同的表裡,你讀到**跟我也沒什麼關係。
以上只是讀文件的一些總結,具體使用後的情況還要具體**實現以後再看。
Vue學習記錄 初探Vue
說完了這一些,接下來的重點,就是選型了。經過一天的搜尋,最終定位到了vue 根據vue官網的引導,搭建的過程其實很簡單 1.安裝 vue npm install vue2.命令列工具 npm install global vue cli3.初始化專案 vue init webpack office ...
python資料處理初探過程記錄
非常棒的乙個教程,一步一步走可以接觸和熟悉很多基礎方面的使用方法。迅速上手必備神器。excel等檔案的讀取 pandas.read csv filename pandas.read excel filename 散點圖 這些是還沒看但是碼了的教程 pandas教程 一 series與datafram...
Docker新手初探之常用命令實踐記錄
在正式使用docker之前,我們先來熟悉下docker中常用的命令,因為對docker的操作就如同操作linux一樣,大部分操作通過命令完成。一 登入 為什麼要使用登入?因為我們使用docker,其實主要使用映象從而執行容器。那麼映象可以通過倉庫獲得,因為倉庫是集中存放映象的地方。有的倉庫是公開的,...