【geekband】系統設計第二周

CAP理論Cibsustebct、availability、partition tolerance

一致性:對數據有同樣的view
可用性:所有客戶端都可以讀寫
分區可容忍性:在物理網絡分區下很好的工作
CAP只能三取二
強一致性:一臺機器只能被一臺服務器服務,實現的代價也高

數據庫系統

早期:ACID propeties
A-aomic原子性 對數據的修改:要么全部執行,要么全部不執行
C-consistent
I-isolated 隔離性 一個任務執行完成之前是不可見的,也就是說對于其他任務,其中間狀態是不可見的
D-durable 持久性

ACID VS BASE

basically available, soft state, eventually consistent

數據庫拆分

  • horizontal scaling(sharding)
  • functional scaling(scale out)
    單一->master/slave->垂直分區->sharding

stateless

一個系統伸縮性的好壞取決于對狀態的管理(的好壞)
session VS Cookie

異步通信

rpc-遠程架構框架
就是一個分包和解包的過程
最大化將子系統分割與解耦
好處--提高可用性

有效利用Cache

一致性與復制性:

一致性介紹

強一致性 某一個數據被更新之后,后續的任何操作所達到的結果都應該是更新之后的數據(傳統關系型數據庫所提供的保障)
弱一致性 與強一致性相對
最終一致性 弱一致性的一種

一致性哈希

分布式哈希table-擴展性和容錯性不好
平衡性,單調性 ,分散性,負載

一致性哈希算法:

通過32位環確定節點,變動只會影響局部

虛擬節點:解決數據傾斜問題
計算多個哈希,在多個位置放置虛擬節點,在虛擬節點上設置映射關系

案例:cassandra,
amazon's dynamo
hbase
mongoDB

NoSQL數據庫

對數據庫進行水平的切分
簡單的queriy方式:gets() 和 sets()
通過key/value pairs獲取
不支持joins(因為做了水平切分)
十億以上記錄都很高效

thrift--facebook開發,protocol buffers--google開發

scalability原則

1.cashe--遇到性能問題的時候
2.queue
3.異步
4.負載均衡
5.并發
6.replication賦值
7.切分

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容