首先,正如上文中提到的用戶密碼、手機號等登錄資訊和其他的信息分離,而且在不同的資料庫中。 其次,對用戶設置的密碼進行了黑名單校驗,只要符合條件的弱密碼,都會拒絕提交,因為不管使用了什麼加密方式的弱密碼,都極其容易破解。 為什麼呢? 因為人的記性很差,大部分人總是最傾向於選擇生日,單詞等來當密碼。 6位純數位可以生成100萬個不同的密碼,8位小寫字母和數字的組合大概可以生成2.8萬億個不同的密碼。 一個規模為7.8萬億的密碼庫足以覆蓋大部分用戶的密碼,對於不同的加密演算法都可以擁有這樣一個密碼庫,這也就是為什麼大部分網站都建議使用者使用8位以上數位加字母密碼的原因。 當然,如果一方面加了鹽值,另一方面對密鑰分開保管,破解難度會指數級增加。美國GOOGMAN GOOGMAN增大丸官網 goodman增大丸評價 增大丸 增大丸推薦
最後,可以用bcrypt/scrypt的方式來加密。 bcrypt演算法是基於Blowfish塊密鑰演演算法來實現的,bcrypt內部實現了隨機加鹽處理,使用bcrypt之後每次加密后的密文都不一樣,同時還會使用記憶體初始化hash過程。 由於使用記憶體,雖然在CPU上運行很快,但是在GPU上並行運算並不快。 隨著新的FPGA集成了大型RAM,解決了記憶體密集IO的問題,但是破解難度依然不小。 而scrypt演演算法彌補了bcrypt演算法的不足,它將CPU計算與記憶體使用開銷都指數級提升了。 bcrypt和scrypt演算法能夠有效抵禦彩虹表,但是安全性的提升帶來了用戶登錄性能的下降。 用戶登錄註冊並不是一個高併發的介面,所以影響並不會特別大。 因此在安全和性能方面需要依據業務類型和大小來做平衡,並不是所有的應用都需要使用這種加密方式來保護用戶密碼
此處的異步消費,就是上文提到的異步消費服務。 使用者在做完登錄註冊等操作后,需要記錄使用者的操作日誌。 同時,用戶註冊登錄完畢后,下游業務需要對使用者增加積分,贈送禮券等獎勵操作。 這些系統如果都同步依賴於使用者中心,那麼整個使用者中心將異常龐大,鏈路非常冗長,也不符合業內的"大系統做小"的原則。 依賴的服務不可用之後將會造成用戶無法登錄註冊。 因此,使用者中心在使用者操作完之後,將使用者事件入庫后發送至MQ,第三方業務監聽使用者事件。 使用者中心和下游業務解耦,同時使用者操作事件入庫后,在MQ不可用或者消息丟失的時候可做補償處理。 用戶的畫像數據也在很大程度上來源於此處的數據
使用者中心涉及到使用者的登錄註冊更改密碼等核心功能,能否及時發現系統的問題成為關鍵指標,因此對業務的監控顯得尤為重要。 需要對使用者中心重要介面的QPS、機器的記憶體使用量、垃圾回收的時間、服務的調用時間等做詳細的監控。 當某個介面的調用量下降的時候,監控會及時發出報警。 除了這些監控之外,還有對資料庫Binlog的寫入,前端元件,以及基於ZipKin全鏈路調用時間的監控,實現從用戶發起端到結束端的全面監控,哪怕出現一點問題,監控隨時會告訴你哪裡出問題了。 比如運營互動推廣註冊量下降的時候,使用者中心就會發出報警,可以及時通知業務方改正問題,挽回損失。增大丸推薦 增大丸效果 增大丸ptt goodman增大丸怎麼吃增長增粗
本文從服務架構設計,介面設計,token降級,數據安全和監控等方面介紹了億級使用者中心的設計,當然使用者中心的設計遠不止這些,還會包含用戶數據的分庫分表,熔斷限流,第三方登錄等,在本文中就不一一贅述。 儘管本文中設計的使用者中心能夠滿足大部分公司的需求,但是還存在一些比較大的挑戰:在鑒權服務增長的情況下,如何平滑的從使用者中心剝離;監控的侵入性以及監控的粒度的完善;另外服務的安全性、可用性、性能的提升永遠都沒有盡頭,也是我們孜孜追求的目標。 在未來的日子里,希望能夠通過大家的努力,使用戶中心的技術體系更上一層樓。
文章定位: