網站技術架構

《大型網站技術架構:核心原理與案例分析》筆記

高可用性

什麼是可用性?

可用性(Availablility)是指服務可被有效訪問的特性,不是指有用性(Usability)。算法

可以保證服務永遠可用嗎?

保證服務永遠可用幾乎是一件不可能完成的任務。數據庫

實現高可用的手段

  1. 由集羣提供服務,經過負載均衡手段將請求分發到具體節點上,在節點不可用時,從服務註冊列表中清楚。
  2. 分級管理。高優先級的服務擁有更好和更多的資源。
  3. 超時設置。控制訪問的超時,防止大量的請求即佔用資源,又沒法得到響應。
  4. 服務降級。對一些請求直接失敗,防止機器負載太高致使機器崩潰,結果致使整個服務崩潰。

預發佈和線上發佈的區別

預發佈和線上發佈的惟一不一樣是沒有配置在負載均衡服務中,因此外部沒法訪問預發環境的機器。緩存

保證服務可用性的意義

工程師對應用作出性能的優化、代碼的重構,可是未必能讓人直觀感覺到,也許你的領導都不知道你作這件事情的意義何在。可是,若是你的產品出現了重大故障,那麼CEO都會知道你的名字。安全

伸縮性

什麼是伸縮性

指系統可以經過增長(減小)自身資源規模的方式加強(減小)本身計算處理事務的能力。網絡

什麼是一致性Hash

在緩存服務中,會根據用戶的key將數據緩存至某個緩存節點,選擇節點的過程須要用到hash值。 架構

傳統算法:將key的hash值模緩存節點數目,得到index,則該index對應的節點就是數據要緩存入的節點。這種方法的缺點是動態的添加、下線緩存節點時,會致使大量的緩存沒法命中和緩存遷移。
一致性hash:構建一個長度爲$2^{32}$的環,全部的緩存節點會散佈到環中的某些位置上,須要緩存的數據根據key計算hash值後會映射到環中的某個位置,而後找到不小於該位置且最近的緩存節點,做爲其數據存放的節點。在動態的添加緩存節點時,只有和它相鄰的緩存節點中的數據受到影響。該方法的問題是,當添加節點時,會致使環上的緩存節點疏密不均,從而使得每一個緩存節點上的緩存數量不均勻。 負載均衡

一致性hash+虛擬節點。上述問題的解決方案是在一致性hash算法的基礎上,每一個緩存節點會被當作多個虛擬節點分散到環中。因此在添加一個新的緩存節點時,會當作多個虛擬節點添加到環中,這樣就防止環中緩存節點疏密不均的問題。函數

擴展性

什麼是擴展性

指對現有系統影響最小的狀況下,系統功能可持續擴展或提高的能力。性能

SOA是實現服務擴展性的一種方式

SOA(面向服務的設計架構)是將不一樣的業務模塊劃分爲不一樣的服務,這些服務具備高內聚和低耦合的特色,經過服務發現機制,能夠方便的發佈新的服務以提供新的功能。優化

NoSQL是實現數據庫擴展性的一種方式

修改關係型數據庫的schema是困難的,而且對於稀疏性的數據而言,關係型數據庫會浪費存儲空間。而NoSQL能夠提供列族來靈活的增減列屬性,而且不要求每一個數據都具備全部的屬性。

不斷上新產品是互聯網公司的生存本能

互聯網公司不停上新產品是其生存的本能,誰能更快更好地推出更多的新產品,誰就活得更滋潤,那麼工程師就要作好準備應付這種局面。

網絡安全

加密技術

  1. 單向散列加密。對明文進行加密,加密算法固定,可是沒法經過密文解密爲明文。一般用於對用戶密碼進行加密,加密後存入數據庫。即便數據庫被別人獲取,也沒法得到用戶的明文密碼,也沒法經過密文密碼登錄用戶帳戶。採用加鹽來防止對密文的破解。如,MD5,SHA。
  2. 對稱加密。明文的加密和密文的解密採用的都是同一個祕鑰。如,DES,RC。
  3. 非對稱加密。明文經過公鑰加密,密文經過私鑰解密。私鑰也能夠對明文加密,用公鑰解密,起到數字簽名的做用。如,RSA算法。

布隆過濾器

在須要過濾大量黑名單的場景中,若是採用Hash表來存儲黑名單,則須要耗費很大的存儲空間。布隆過濾器則能夠在較小的存儲空間中實現過濾功能。布隆過濾器首先申請一個固定大小的存儲空間,該空間共有n個bit,初始爲0,須要加入黑名單的名字經過8個函數,映射到n個bit中的8個bit中,將這些bit置爲1。若是一個名字經過上述8個函數映射到的位置都被置爲1,則該名字在黑名單中。使用布隆過濾器,一個名字最多隻須要佔用一個字節。布隆過濾器可能會誤殺,由於存在名字不在黑名單中,可是因爲其它黑名單中的名字,致使其映射的位置都被置爲1。

架構師

什麼是好的架構師

因此最好的軟件項目管理不是制訂計劃,組織資源,跟蹤修正項目進展,對成員進行激勵和懲罰,而是發掘項目組每一個成員的優秀潛能,讓你們理解並熱愛軟件產品最終的藍圖和願景。每一個人都是爲實現自我價值而努力,不是爲了領工資而工做。

事成就了人

有些企業喜歡挖優秀的人,而不是去把本身打形成一個培養優秀人才的地方。卻不知:是事情成就了人,而不是人成就了事。期望優秀的人來幫本身成事,不如作成一件事讓本身和參與的人都變得優秀。

相關文章
相關標籤/搜索