【讀書筆記】人人都是架構師:分散式系統架構落地與瓶頸突破
《人人都是架構師:分散式系統架構落地與瓶頸突破》。書主要介紹作者遇到的一些實際場景,提供了處理一些典型場景的思路,書中介紹了許多開源軟體,但程式碼和一些細節比較少。分散式入門書,開拓了視野。
大流量消鋒/限流的常規手段
1. 擴容
使用叢集技術對伺服器進行擴容,可以很好的提升系統整體的並行處理能力。
2. 動靜分離
靜態資料可以放在CDN上來加速系統的響應速度
3. 快取
合理使用快取的讀寫操作來減輕資料庫的負擔
4. 服務降級
當流量太大時,可以選擇犧牲部分功能的可用性來換取核心功能的正常服務。
5. 使用限流演算法
令牌桶演算法
每秒會有r個令牌被放入桶中,桶的容量時固定不變的,且最多允許存放b個令牌,如果桶滿了,新新增的令牌會被丟棄。當一個n位元組的請求包到達時,將消耗n個令牌,然後再發送該資料包。若桶中可用令牌數小於n,該資料包就會被限流。(拋棄或者被快取)
漏桶演算法
相當於一個桶快取著外界的請求,當快取的請求超過了桶的大小,那麼請求就被限流。利用這個快取的桶,可以實現請求按照固定的速率施加到服務上。
計數器演算法
設定一個單位時間內可以被請求的次數,單位時間內超過該次數的請求將被限流。
使用堆外記憶體的好處
減少GC次數或者降低暫停時間
可以擴充套件和使用更大的記憶體空間
省去實體記憶體和heap之間的資料複製步驟
資料庫的水平分表和垂直分表
水平分表是將一個數據量很大的表,按照某個屬性的特徵,拆分成許多小表(每張表的欄位是相同沒變的),用來提高資料庫的併發查詢和更新效率。
垂直分表是將一個存在很大欄位值的表中的單獨的一個很大的欄位分離出來,用來提高查詢和更新效率。
在分割槽和分表之後(很大可能資料就不在同一臺物理機上),涉及到全域性自增欄位問題,解決方案是
單獨一個數據表儲存自增欄位,所有的區和表的自增id由該表決定。同時可以獲取的時候快取一段sequenceID,不用每次都去訪問該資料表。
利用物理機器IP,資料庫、表劃分自增id範圍,在指定範圍內生成sequence,可以保證全域性唯一性。
SQL和NoSQL的業務場景
NoSQL出現的時機;
SQL無法滿足海量資料、資料高併發、高可擴充套件性和高可用性的管理需求
現代網際網路應用通常不要求嚴格的讀寫實時性,不需要嚴格的資料庫事務,對響應速度要求更高
關係資料庫
優勢:以完善的關係代數理論作為基礎,有嚴格的標準,支援事務 ACID四性
劣勢:可擴充套件性較差,無法較好支援海量資料儲存,資料模型過於死板、無法較好支援Web2.0應用,事務機制影響了系統的整體效能等
NoSQL資料庫
優勢:可以支援超大規模資料儲存,靈活的資料模型可以很好地支援 Web2.0應用,具有強大的橫向擴充套件能力
劣勢:缺乏數學理論基礎,複雜查詢效能不高,大都不能實現事務強一致性,很難實現資料完整性。技術尚不成熟,缺乏專業團隊的技術支援,維護較困難等
相關推薦
【讀書筆記】人人都是架構師:分散式系統架構落地與瓶頸突破
《人人都是架構師:分散式系統架構落地與瓶頸突破》。書主要介紹作者遇到的一些實際場景,提供了處理一些典型場景的思路,書中介紹了許多開源軟體,但程式碼和一些細節比較少。分散式入門書,開拓了視野。 大流量消鋒/限流的常規手段 1. 擴容 使用叢集技術對伺
【讀書筆記】計算機網絡1章:課程介紹、協議、分層
視頻 打印 http dns 物理層 size cli 電子商務 ann 改變 這是我在Coursera上的學習筆記。課程名稱為《Computer Networks》。出自University of Washington。 因為計算機網絡才誕生不久
【讀書筆記】《Effective Java》(2)--對於所有物件都通用的方法
又讀了一章,之前一直覺得Java的體系很完善了,讀了這一章,發現原來Java平臺本身也有一些設計不周到的地方,而且有些地方因為已經成為公開API的一部分還不好改,相信繼續讀下去對Java的瞭解會更深一步的。 昨天下載了VS Code,嘗試了一下,感覺比subl
【讀書筆記】iOS-截屏功能的實現。
ima under auto core cal ica dsm gef control 一。整個project文件。 二,代碼 ViewController.m #import "ViewController.h" #import <Q
【讀書筆記】——終極算法
終極 進行 生物 nbsp 人工 研究院 支持向量機 來源 統計 Note1:網飛的推薦傾向於長尾 Note2: 符號學派:逆向演繹,從哲學、心理學、邏輯學尋求洞見——>逆向演繹 連接學派:對大腦進行逆向分析,來源於神經科學和物理學——>反向傳播 進化學派:在計
【讀書筆記】iOS-查看一個軟件ipa包的內容
技術 -s alt dsm clas rda 軟件 選中 tun 一,打開itunes----->我的iPhone應用程序。 二,右鍵點擊app---->在Finder中顯示---->出現下圖所看到的界面。
【讀書筆記】設計心理學2-如何管理復雜【一】
然而 困難 虛擬 前行 方式 間接 行為 這就是 找到 最近在看一些書籍,感覺不寫一些筆記,效果不是特別明顯。出於這個目的,於是有了下面的讀書筆記文章。 從《設計心理學2-如何管理復雜》開始寫吧。在看這本書之前,其實自己覺得各種事情只要肯學習,其實都是挺簡單的。但看了本書
【讀書筆記】技術每天一點點--2017.08月
files .html pop 演進 lis 我們 ati 檢測 讀書筆記 本文地址:http://www.cnblogs.com/aiweixiao/p/7451352.html 本文提綱: 概述 每天進展 1.【遺留問題】 1.1)【問
【讀書筆記】閱讀的危險
enter 忘記 而是 有趣 人在 很多 新的 tex 下一個 閱讀的危險 我脫離我的極簡主義哲學最大的原因之一就是閱讀,確切地說,是閱讀他人在做什麽。我閱讀博文或者雜誌上的文章,上面寫了別人所做的一些有趣的事情:旅行,使用一種新型高效的系統,烤面包等。然後我也想去做那
【讀書筆記】計算機是如何跑起來的
tab 循環 隊列 mac 消息 傳遞 tracer 私鑰 表示 記錄一下書中每章我認為的要點。 前言 作者在前言闡述了一個道理,計算機基礎知識的牢固是深入學習和興趣來源的所在。 劃分一個知識範圍-》基礎中的基礎的知識-》設定目標,這些知識可以做什麽 第
【讀書筆記】沈默的大多數
style 都是 證明 幸福 如果 沒有 個人 pan 由於 人從來都不能從獲得某件令人幸福的物品而獲得幸福,獲得幸福一定是因為某個人做了令他感到幸福的事情。--羅素 我不敢完全肯定這句話,因為我不能證明它的反面是錯的。正確的前提能推出正確的結論,而錯誤的前提什麽都
【讀書筆記】《Maven實戰》 第7章 生命周期與插件
命令 ide ner 資源 clas res content 獨立 default 7.1什麽是生命周期 軟件開發人員每天都在對項目進行清理、編譯、測試及部署,Maven生命周期是對所有構建過程進行抽象和統一,含項目的清理、初始化、編譯、測試、打包、集成測試、驗證、部署
【讀書筆記】《Effective Java》——創建和銷毀對象
auth static 直接 cdr 也會 pattern cal next false Item 1. 考慮用靜態工廠方法替代構造器 獲得一個類的實例時我們都會采取一個公有的構造器。Foo x = new Foo(); 同時我們應該掌握另一種方法就是靜態工廠方法(st
【讀書筆記】The Swift Programming Language (Swift 4.0.3)
code any 是個 重建 之一 eric esc 傳值 特定 素材:Language Guide 初次接觸 Swift,建議先看下 A Swift Tour,否則思維轉換會很費力,容易卡死或鉆牛角尖。 同樣是每一章只總結3個自己認為最重要的點。這樣挺好!強迫你去思考去取
【讀書筆記】周誌華《機器學習》第三版課後習題討<第一章-緒論>
樣本 聲明 同時 body 集合 不管怎麽說 單個 clas 機器 雖然是緒論。。但是。。。真的有點難!不管怎麽說,一點點前進吧。。。 聲明一下答案不一定正確,僅供參考,為本人的作答,希望大神們能多多指教~ 1.1 表1.1中若只包含編號為1和4的兩個樣例,試給出相應的版本
【讀書筆記】讀《活著》有感
需要 有感 size 作者 家庭 鬧鐘 宿舍 出版 變化 一、書籍介紹 書名:《活著》 作者:余華 出版社:作家出版社 二、正文 人是為了活著本身而活著的,而不是為了活著之外的任何事物所活著。—— 余華,中文序。 前天早上,我拿到了《活著》,比我想象中要
【讀書筆記】讀《重構 改善既有代碼的設計》有感
表達 感悟 quic -s 根據 bsp 關註 計算 有感 一、書籍介紹 書名:《重構 改善既有代碼的設計》 作者:[美]Martun Fowler 譯者:熊節 出版社:人民郵電出版社 二、背景 深知自己的代碼水平,但自己又有一點代碼潔癖,看不慣的
【讀書筆記】構建之法(CH7~CH8)
計劃 isp 數量 round 體驗 讀書 alert com 人力 MSF九大原則: 1. 推動信息共享與溝通:“諧”,Alert 2. 為共同的遠景而工作:目標明確—用戶/老板 3. 充分授權和信任: 4. 各司其職,對項目共同負責: 5. 交付增量的價值: 6. 保持
【讀書筆記】深入分布式緩存 第一章
取數 網絡 第一章 接收 分布 利用 一個 pan 網絡傳輸 什麽是緩存? 緩存就是存儲在計算機上的一個原始數據的復制集,以便於訪問 為什麽使用緩存 因為從緩存中讀取數據非常,能有效的提升用戶體驗 系統的性能指標 指標一般包括響應時間、延遲時間、吞吐量、
【讀書筆記】——《代碼大全》(六)
variable 數據 borde 代碼 In 自然 dex ont 列表 The Power of Variable Names 摘錄與總結一些有用的東西。 語義前綴 語義前綴 含義 c 數量(count,如記錄、字符或者其他東西的個數)