Soft_Job 板


LINE

隨便試著寫一下考卷 賺個P幣 ※ 引述《taliao (雲淡風清)》之銘言: : 有趣的問題,來一些激盪吧~ : Q: 你怎麼知道 CRUD 分別吃多少系統資源?需要多少 IOPS / CPU? : Q: 承上,要如何知道 CURD 吃了哪些資源? : Q: 承上,怎麼解開這些資源的分配問題? 其實這題超難回答。實務上會分為 Script 所吃的資源跟儲存對象所吃的資源。 Script 來說 Python/Ruby/Node.js 等每個 Process 都會吃到 CPU + 記憶體 儲存對象除了 CPU 跟記憶體之外也會吃到 Disk I/O。 當你做 Create 的動作時,Script 端會需要用 CPU 跟記憶體去運算邏輯 把插入的指令傳給資料庫,資料庫除了 CPU 運算,以及將資料寫入磁碟的 I/O 外 還會視資料庫的索引跟快取優化去做其他優化的記憶體/磁碟 I/O 運算 因此一個準確的 IOPS/CPU 不太容易得出,但是我們可以透過系統監測 透過實質的 CPU、記憶體、I/O 使用率去得到系統大致的運轉狀態 並使用資料庫系統的 EXPLAIN 得知儲存上的瓶頸點 : Q: 1 個連線的 CRUD、10 個連線的 CRUD、100 個的 CRUD ..... 類推, : 他們的架構是怎樣? 很簡單的 CRUD 1 個連線 1個實體 =============== DB 實務上的 CRUD 架構 Load balancer -- A XX個實體 == 連線 Pool == DB with sharding -- B XX個實體 == 連線 Pool == -- C XX個實體 == 連線 Pool == -- D XX個實體 == 連線 Pool == : Q: CRUD 的對象是 RDBMS? NoSQL? Block Storage? Cache? Buffer? : Q: 承上: CRUD 的對象怎麼選?我只會 MySQL 啦,都往裡面塞就是了 ..... 這題每個人答案應該都不一樣,以下是我個人見解。 Block Storage 跟 Buffer 我不知道他想表達什麼,先 Skip QQ RDBMS 解決問題的方式是透過表格與關聯,複雜的查詢可以透過 JOIN 關聯解決。 通常適用於大多數的使用情境,但需要定義固定 Schema 是一個考量點。 NoSQL 要視其使用的資料結構和分散式儲存的策略來選擇 嚴格說來某些 Cache (e.g. Redis) 甚至都可以算是一種 NoSQL 了 你需要儲存簡單的資料結構就可以塞在 Redis 你需要一個給我 JSON 內容我就可以塞進去的儲存空間就可以用 MongoDB : Q: 前端怎麼知道 CRUD 瓶頸在哪? 最爛的答案:開發者工具,看哪一個 Request 吃掉最多秒數...... : Q: CRUD 的操作對象,不管是 RDBMS, NoSQL, Storage, Cache, : 瞬間流量衝進來怎麼處理?會遇到什麼問題? : Q: 線上的系統 CRUD 出問題了,怎麼知道哪裡出問題? 就像連假高速公路塞車一樣,一超出設計極限,哪邊就會炸掉 這個時候就要找出系統的瓶頸點,試著去一個一個解決問題 首先你 Script 的執行實體夠不夠多?不夠的話就會塞在最前面 這個時候的症狀是你的 QPS (等待人數) 很多,但你的櫃台開不夠多所以塞住 這個時候就要打一個 Process Manager 讓它 Spawn 好幾個實體進去 如果櫃台都開很多了,結果每一個櫃台處理業務的時候都後台當住 這個時候就要思考 Storage 上是不是有瓶頸點 首先,在 DB 跟 Script 之間要不要做 Connection Pool 再來,你有沒有優化資料庫的 Query?哪些 Query 特別慢? EXPLAIN 出來發現哪裏有問題?要怎麼打 Index 或著重新設計結構來優化? : Q: 當現有的架構要拆分的時候 (microservices),你的 CRUD 還是 CRUD? 我的猜測:嚴格說來還是 CRUD 只是本來單一架構中不同資料的互動,會變成不同微服務之間的溝通 : Q: 當系統是分散式的時候,CRUD ... 要怎麼辦? 我不知道怎麼回答 QQ : Q: 你的 CRUD 考慮的是 ACID or BASE? 還是這啥? ACID 是傳統 RDBMS 為了資料安全性做的保障 BASE 是 NoSQL 為了犧牲一部份保障換取更高效率或擴張性做的妥協 願不願意接受這個妥協要視服務本身的特性而定 如果你的資料量非常大,而且可以接受幾微秒的資料不一致性,那 BASE 就可以了 : Q: 寫十年的 CRUD 然後都做一樣的事情?那中年一定失業。 : 但是可以處理瞬間百萬 qps 的 CRUD,你中年一定很忙。 : 下一系列的 Q : Q: 哪裡有百萬 qps 的系統啊?qps 是啥? : Q: 當有的時候,你準備好了嗎? : Q: 台灣沒有百萬的 qps 啊,國外有,你準備好了嗎? : Q: golang 很屌,可處理百萬 qps,是這樣?node.js 不行?C# 不行? : Q: 買一台 2048 core 的機器就可以搞定了,需要說那麼多嗎? ..... : .... 其實我覺得任何程式語言處理百萬 QPS,技術上只要機器夠大就可以 但是你了不了解這個程式語言的特性,它能做什麼,怎麼優化它 才是一個長期而且可能沒有盡頭的學問 如果你的框架很大,如何優化記憶體使用? 你的程式語言是編譯的還是直譯的?如果是直譯,直譯器有沒有 JIT? 記憶體如何管理/需不需要 GC?如何偵測 Memory Leak? 這些問題的答案會隨你用的程式語言跟框架而不同 而同樣的機器可以應付多少 Request per sec 也隨技術上花了多少力氣而不同 --- 大概是這樣,鞭小力一點 QQ --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.168.79.225
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1527961025.A.BC9.html
1F:推 locklose: 推 06/03 01:42
2F:推 dsilver: 推 06/03 02:01
3F:推 vn509942: 感謝分享 06/03 02:21
4F:推 bheegrl: 推分享 06/03 07:30
5F:推 handwu: 推 06/03 08:57
6F:推 showken: 推 06/03 10:16
7F:推 lds74: 推分享 06/03 10:30
8F:推 APTON: 推 06/03 12:06
9F:推 devilkool: 感謝分享 06/03 13:01
10F:推 Ekmund: 雖說是最爛的答案 但前端有什麼更好用的手段嗎QQ? 06/03 14:40
11F:推 accessdenied: 前端可以學一下Jmeter瞭解怎麼做壓力測試和統計分析 06/03 14:49
12F:推 ripple0129: 分散式CRUD是啥,還是單一資料庫吧,不然consistency 06/03 19:05
13F:→ ripple0129: 處理起來要人命吧。多資料庫也是按照商業邏輯來拆分 06/03 19:05
14F:→ ripple0129: 關聯性。 06/03 19:05
15F:推 akito117: 推 06/04 00:56
16F:→ free112136: 前端用jmeter做壓力測試?小弟愚昧,還請accessdenied 06/04 09:15
17F:→ free112136: 演示一下用jemter測"前端"的"壓力"測試 06/04 09:15
18F:→ alan3100: saga pattern 如何在分散式系統實現trans或部分rollback 06/04 13:22
19F:推 accessdenied: @free哥你是要測瀏覽器的壓力還是測backend的壓力? 06/04 16:40
20F:→ accessdenied: 這篇在說後端喔!如何從前端測後端CRUD的壓力,中 06/04 16:40
21F:→ accessdenied: 文去唸唸好嗎?找碴也不用秀閱讀障礙吧? 06/04 16:40
22F:推 free112136: 你回文自己說前端,是你不會說話還是我有閱讀障礙就 06/04 18:51
23F:→ free112136: 看各位看官的心理那把尺嘍 06/04 18:51
24F:推 accessdenied: 文章是「前端怎麼知道CRUD的瓶頸」這句話你有閱讀 06/04 20:05
25F:→ accessdenied: 障礙吧?CRUD會發生在前端嗎?文章也討論從Request 06/04 20:05
26F:→ accessdenied: time判斷了,你閱讀能力這麼差一定是歪國人 06/04 20:05
27F:→ accessdenied: Jmeter就是一個end to end從前端來觀測後端效能的工 06/04 20:06
28F:→ accessdenied: 具,麻煩月領30K的不要出來丟臉好嗎? 06/04 20:06
29F:→ accessdenied: 300萬和30K之間沒有溝通頻率好嗎! 06/04 20:07
30F:推 free112136: 300萬原來是這樣崩潰的…你繼續吧! 06/04 20:22
31F:推 accessdenied: 你也繼續領30K吧...... 06/05 08:33
32F:推 wanlinlin: 推 06/06 08:01







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job 或 站內搜尋

TOP