网站技术架构
高可用性
什么是可用性?
可用性(Availablility)是指服務(wù)可被有效訪問的特性,不是指有用性(Usability)。
能夠保證服務(wù)永遠(yuǎn)可用嗎?
保證服務(wù)永遠(yuǎn)可用幾乎是一件不可能完成的任務(wù)。
實(shí)現(xiàn)高可用的手段
預(yù)發(fā)布和線上發(fā)布的區(qū)別
預(yù)發(fā)布和線上發(fā)布的唯一不同是沒有配置在負(fù)載均衡服務(wù)中,所以外部無法訪問預(yù)發(fā)環(huán)境的機(jī)器。
保證服務(wù)可用性的意義
工程師對應(yīng)用做出性能的優(yōu)化、代碼的重構(gòu),但是未必能讓人直觀感受到,也許你的領(lǐng)導(dǎo)都不知道你做這件事情的意義何在。但是,如果你的產(chǎn)品出現(xiàn)了重大故障,那么CEO都會(huì)知道你的名字。
伸縮性
什么是伸縮性
指系統(tǒng)能夠通過增加(減少)自身資源規(guī)模的方式增強(qiáng)(減少)自己計(jì)算處理事務(wù)的能力。
什么是一致性Hash
在緩存服務(wù)中,會(huì)根據(jù)用戶的key將數(shù)據(jù)緩存至某個(gè)緩存節(jié)點(diǎn),選擇節(jié)點(diǎn)的過程需要用到hash值。
傳統(tǒng)算法:將key的hash值模緩存節(jié)點(diǎn)數(shù)目,獲得index,則該index對應(yīng)的節(jié)點(diǎn)就是數(shù)據(jù)要緩存入的節(jié)點(diǎn)。這種方法的缺點(diǎn)是動(dòng)態(tài)的添加、下線緩存節(jié)點(diǎn)時(shí),會(huì)導(dǎo)致大量的緩存無法命中和緩存遷移。
一致性hash:構(gòu)建一個(gè)長度為$2^{32}$的環(huán),所有的緩存節(jié)點(diǎn)會(huì)散布到環(huán)中的某些位置上,需要緩存的數(shù)據(jù)根據(jù)key計(jì)算hash值后會(huì)映射到環(huán)中的某個(gè)位置,然后找到不小于該位置且最近的緩存節(jié)點(diǎn),作為其數(shù)據(jù)存放的節(jié)點(diǎn)。在動(dòng)態(tài)的添加緩存節(jié)點(diǎn)時(shí),只有和它相鄰的緩存節(jié)點(diǎn)中的數(shù)據(jù)受到影響。該方法的問題是,當(dāng)添加節(jié)點(diǎn)時(shí),會(huì)導(dǎo)致環(huán)上的緩存節(jié)點(diǎn)疏密不均,從而使得每個(gè)緩存節(jié)點(diǎn)上的緩存數(shù)量不均勻。
一致性hash+虛擬節(jié)點(diǎn)。上述問題的解決方案是在一致性hash算法的基礎(chǔ)上,每個(gè)緩存節(jié)點(diǎn)會(huì)被當(dāng)做多個(gè)虛擬節(jié)點(diǎn)分散到環(huán)中。所以在添加一個(gè)新的緩存節(jié)點(diǎn)時(shí),會(huì)當(dāng)做多個(gè)虛擬節(jié)點(diǎn)添加到環(huán)中,這樣就防止環(huán)中緩存節(jié)點(diǎn)疏密不均的問題。
擴(kuò)展性
什么是擴(kuò)展性
指對現(xiàn)有系統(tǒng)影響最小的情況下,系統(tǒng)功能可持續(xù)擴(kuò)展或提升的能力。
SOA是實(shí)現(xiàn)服務(wù)擴(kuò)展性的一種方式
SOA(面向服務(wù)的設(shè)計(jì)架構(gòu))是將不同的業(yè)務(wù)模塊劃分為不同的服務(wù),這些服務(wù)具有高內(nèi)聚和低耦合的特點(diǎn),通過服務(wù)發(fā)現(xiàn)機(jī)制,可以方便的發(fā)布新的服務(wù)以提供新的功能。
NoSQL是實(shí)現(xiàn)數(shù)據(jù)庫擴(kuò)展性的一種方式
修改關(guān)系型數(shù)據(jù)庫的schema是困難的,并且對于稀疏性的數(shù)據(jù)而言,關(guān)系型數(shù)據(jù)庫會(huì)浪費(fèi)存儲(chǔ)空間。而NoSQL可以提供列族來靈活的增減列屬性,并且不要求每個(gè)數(shù)據(jù)都具有所有的屬性。
不斷上新產(chǎn)品是互聯(lián)網(wǎng)公司的生存本能
互聯(lián)網(wǎng)公司不停上新產(chǎn)品是其生存的本能,誰能更快更好地推出更多的新產(chǎn)品,誰就活得更滋潤,那么工程師就要做好準(zhǔn)備應(yīng)付這種局面。
網(wǎng)絡(luò)安全
加密技術(shù)
布隆過濾器
在需要過濾大量黑名單的場景中,如果采用Hash表來存儲(chǔ)黑名單,則需要耗費(fèi)很大的存儲(chǔ)空間。布隆過濾器則可以在較小的存儲(chǔ)空間中實(shí)現(xiàn)過濾功能。布隆過濾器首先申請一個(gè)固定大小的存儲(chǔ)空間,該空間共有n個(gè)bit,初始為0,需要加入黑名單的名字通過8個(gè)函數(shù),映射到n個(gè)bit中的8個(gè)bit中,將這些bit置為1。如果一個(gè)名字通過上述8個(gè)函數(shù)映射到的位置都被置為1,則該名字在黑名單中。使用布隆過濾器,一個(gè)名字最多只需要占用一個(gè)字節(jié)。布隆過濾器可能會(huì)誤殺,因?yàn)榇嬖诿植辉诤诿麊沃?#xff0c;但是由于其它黑名單中的名字,導(dǎo)致其映射的位置都被置為1。
架構(gòu)師
什么是好的架構(gòu)師
所以最好的軟件項(xiàng)目管理不是制訂計(jì)劃,組織資源,跟蹤修正項(xiàng)目進(jìn)展,對成員進(jìn)行激勵(lì)和懲罰,而是發(fā)掘項(xiàng)目組每個(gè)成員的優(yōu)秀潛能,讓大家理解并熱愛軟件產(chǎn)品最終的藍(lán)圖和愿景。每個(gè)人都是為實(shí)現(xiàn)自我價(jià)值而努力,不是為了領(lǐng)工資而工作。
事成就了人
有些企業(yè)喜歡挖優(yōu)秀的人,而不是去把自己打造成一個(gè)培養(yǎng)優(yōu)秀人才的地方。殊不知:是事情成就了人,而不是人成就了事。指望優(yōu)秀的人來幫自己成事,不如做成一件事讓自己和參與的人都變得優(yōu)秀。
轉(zhuǎn)載于:https://www.cnblogs.com/qixidi/p/10085445.html
總結(jié)
- 上一篇: [源码和文档分享]C语言实现的基于Huf
- 下一篇: 平面镜成像