常用的云平臺:
云平臺發(fā)展至今主流的平臺已成N足鼎立之勢,國外云有AWS、Google云、微軟云,國內(nèi)云有阿里云、騰訊云、AWS中國,私有云有OpenStack。
AWS這里單獨(dú)拿出來強(qiáng)調(diào)下,國際版與國內(nèi)版需要區(qū)別對待,因?yàn)閮烧叩挠蛎灰粯樱覈鴥?nèi)版比國際版缺少很多功能,所以很多AWS開源的項(xiàng)目拿到國內(nèi)不見得能使用。雖然國內(nèi)版目前還在不斷優(yōu)化,但是距離國際版還有不少的差距。所以如果要使用國內(nèi)云,不推薦AWS。
云平臺的計(jì)費(fèi),國外統(tǒng)一只有一種計(jì)費(fèi)模式,流量模式,也叫后付費(fèi)模式。國內(nèi)的除開流量模式外,還有符合國情的包年包月模式,也叫預(yù)付費(fèi)模式。后付費(fèi)是按照水電煤的計(jì)費(fèi)方式,用多少給多少錢;預(yù)付費(fèi)模式是直接買斷一臺云服務(wù)器,價(jià)格大約是后付費(fèi)的3-4折左右。
本人不推薦預(yù)付費(fèi)模式,有以下幾個原因:
1 包年包月的模式違背了云平臺設(shè)計(jì)的初衷,云平臺本意是多用戶租用,大家只要拿著自己的賬號操作即可,不需要關(guān)心水電煤打哪來,有多少量。而包年包月模式還需要關(guān)心自己的服務(wù)器IP等信息,相當(dāng)于在云上租了臺物理機(jī),這不是云平臺使用的思路。
2 包年包月并沒有想象中的優(yōu)惠,換句話說按流量并沒有想象中那么貴。云平臺會提供自動擴(kuò)容縮容的技術(shù),通過動態(tài)擴(kuò)縮充分壓榨機(jī)器性能可以使單臺服務(wù)信價(jià)比更高,而包年的機(jī)器是無法動態(tài)擴(kuò)縮的。
3 在CI、CD領(lǐng)域immutable的運(yùn)維方式比面向IP的運(yùn)維方式有巨大的優(yōu)勢,而immutable必須建立在流量型云平臺的基礎(chǔ)之上。
Openstack是非常流行的私有云技術(shù),私有云在價(jià)格上可能會比公有云便宜(可能的意思是,也得需要考慮房產(chǎn)、電費(fèi)、人力維護(hù)等成本),在使用時其實(shí)并沒有公有云來的那么“痛快”。因?yàn)樗娜萘坎⒉幌窆性颇菢訜o窮盡也,飽和時也會遇到捉襟見肘申請不到資源的問題。
云平臺的幾種訪問方式:
1 Console方式,最簡單的,直接用賬號密碼登陸到云平臺控制臺進(jìn)行操作。
2 API方式,HttpRestFul請求的方式向平臺發(fā)起命令。
3 SDK方式,平臺提供Java、python、go、php等語言發(fā)開的擴(kuò)展包,集成到項(xiàng)目中,用編程語言調(diào)用這些包向平臺發(fā)起命令。
4 命令方式,平臺提供二進(jìn)制的客戶端供客戶下載,下載安裝后用linux命令方式向平臺發(fā)起命令。
其中前兩種是平臺必備,SDK方式也基本是標(biāo)配,命令方式只有極少平臺支持。
以上是對目前優(yōu)秀的云平臺做了簡單概括,要熟練使用平臺還需要掌握它的基礎(chǔ)名詞,請注意我們這里側(cè)重于平臺的運(yùn)算,存儲方面這里暫不做介紹。
名詞解釋:
公共相關(guān):
Region:區(qū)域,平臺的空間范圍的劃分。
Zone:Region下的第二級區(qū)域,一個Region包含多個Zone。
其中Region是平臺標(biāo)配的區(qū)域單位,而Zone并不是每個平臺都支持。為什么會有區(qū)域這種概念呢,你可以理解Region代表這這家云平臺在某個省份拿下來的機(jī)房,經(jīng)濟(jì)發(fā)展程度不一樣,機(jī)房的成本不一樣,那么每個Region提供服務(wù)時相同流量的報(bào)價(jià)可能就不一樣。再比如有些黑科技,RegionA支持,但是RegionB并不一定可以支持。
實(shí)例相關(guān):
Instance:實(shí)例的基本單元,相當(dāng)于平臺上的一臺服務(wù)器,承載運(yùn)算的主體。
Image:鏡像,平臺會把Image劃分為共有鏡像、私有鏡像、第三方鏡像等,這個也好理解,Instance是由鏡像產(chǎn)生的。
InstanceType:實(shí)例規(guī)格,選定了實(shí)例規(guī)格,也就選定了你所創(chuàng)建的Instance的CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)等規(guī)格。實(shí)例規(guī)格的意義在于兩方面,第一方便客戶使用,客戶不用自己去調(diào)配這些配置;第二方便平臺內(nèi)部計(jì)算承載力。
SecurityGroup:安全組,對云服務(wù)的訪問權(quán)限,控制手段分為禁止和允許兩種配置,按流向可以分為input和output兩種,可以精確到端口,需要記住常用的端口。
網(wǎng)絡(luò)相關(guān):
LoadBalance:負(fù)載均衡,負(fù)責(zé)請求的轉(zhuǎn)發(fā)。在云平臺的API中狹義的LB是指的單獨(dú)的一種實(shí)例,而單獨(dú)一個LB實(shí)例是不具備任何負(fù)載均衡的能力的。所以廣義的LB是一套負(fù)載均衡的組件,包括LB實(shí)例、轉(zhuǎn)發(fā)規(guī)則、健康檢查等。不同的平臺對LoadBalance的分類方式也不同,有的劃分為四層LB和七層LB,有的劃分為傳統(tǒng)型LB和應(yīng)用型LB。
Listener:監(jiān)聽,主流的有tcp、udp、http/https三種監(jiān)聽,監(jiān)聽是LB用來觀察其下面掛在的服務(wù)是否存活的手段,Listener會配置健康檢查的策略。
VPC:Virtual Private Cloud,從服務(wù)的角度來看是虛擬私有云,表示的公有云運(yùn)營商提供給用戶的隔離資源的集合。它相當(dāng)于是漂浮在公有云上的孤島。真正讓VPC變得強(qiáng)大的是它各式各樣的連接技術(shù)。VPC并不是必須的,但是對于大型項(xiàng)目要接入到企業(yè)內(nèi)容組成混合網(wǎng)絡(luò)的服務(wù)時,VPC才有意義。
彈性伸縮:
ServerGroup:我們把一組具備相同鏡像、相同服務(wù)、相同規(guī)格能力的一組instance的組合,稱為是一個ServerGroup。ServerGroup在不同平臺的實(shí)現(xiàn)方式略不一樣,例如在AWS中是通過自動擴(kuò)容組,在阿里云中是通過彈性伸縮組。與LoadBalance一樣,狹義上的彈性伸縮組并不具備自動伸縮等能力,廣義上配備有其它組建之后的ServerGroup才是我們想要的彈性伸縮組。
ScalingRule:伸縮規(guī)則,按照什么樣的力度來進(jìn)行一次伸縮。例如每次伸縮30%,或者每次伸縮5臺實(shí)例等。ScalingRule并沒有指定誰來觸發(fā)伸縮,所以只配置ScalingRule也是沒有任何意義的。
Schedule:定時任務(wù),設(shè)置時間規(guī)則并執(zhí)行某個ScalingRule。該功能適合潮汐規(guī)律的產(chǎn)品,例如我所從事的視頻行業(yè),中午11-2點(diǎn)是個小高潮,晚上7-10點(diǎn)是個大高潮,凌晨和早上是個低谷,所以我們可以按照產(chǎn)品特性來設(shè)置Schedule在這些時間段進(jìn)行擴(kuò)容縮容。
AlarmPolicy:告警策略,是彈性伸縮的核心。我們可以配置一些策略規(guī)則,例如CPU使用率大于85%時執(zhí)行某個ScalingRule,或者內(nèi)存使用率小于30%時執(zhí)行某個ScalingRule。它與Schedule的區(qū)別是,更智能的動態(tài)的進(jìn)行伸縮,可以規(guī)避我們計(jì)劃外的流量激增的情況。
生產(chǎn)環(huán)境一般Schedule+ AlarmPolicy配合使用。
其它:
CDN:Content Delivery Network,內(nèi)容分發(fā)網(wǎng)絡(luò)。十年前,我剛?cè)胄凶鯥PTV流媒體業(yè)務(wù)時,都是自己寫代碼來完成省份區(qū)縣間片源的調(diào)度的,無外呼是客戶機(jī)頂盒請求到中心服務(wù),算法會根據(jù)IP重定向到距離IP最近的機(jī)房提供服務(wù),但是該機(jī)房不見得有客戶要點(diǎn)播的這個片源,所以還可能要從其它機(jī)房ftp過來或者重定向到其它機(jī)房。當(dāng)時沒有大數(shù)據(jù)存儲,機(jī)房的磁盤可以存儲的片子也有限,所以還要計(jì)算哪些事熱門片源互相分享、哪些是冷門片源在該機(jī)房刪除,等等等等。現(xiàn)在這一切的一切,從大數(shù)據(jù)存儲和緩存技術(shù)過來的靈感,我們只需要租用云平臺的CDN服務(wù),就都幫我們搞定了。CDN干的事情,也就是十年前我寫代碼干的事情了,在距離客戶最近的服務(wù)點(diǎn)上緩存服務(wù)內(nèi)容,一來提高相應(yīng)速率,二來減少核心數(shù)據(jù)中心的請求次數(shù)。了解了CDN的原理,也要注意云平臺采購的問題了,例如你的服務(wù)對象都在國內(nèi),你買個國外的CDN,人家壓根在國內(nèi)就沒有布網(wǎng),也就用不起來了。
S3:這是AWS中的叫法,Simple Storage Server,鍵值對形式存儲數(shù)據(jù)的一種云存儲。其他平臺也有類似的服務(wù),只不過名稱不同。
容器服務(wù):隨著Docker的發(fā)展,微服務(wù)的盛行,云平臺產(chǎn)商們也與時俱進(jìn)將K8s集成到平臺中提供容器服務(wù)。
Saas服務(wù):一些成熟的方案也被搬遷到云平臺中,云平臺供應(yīng)商拿這些SaaS服務(wù)來賣錢,本質(zhì)是帶有某一個特定功能鏡像的instance,不再是只提供簡單的運(yùn)算、網(wǎng)絡(luò)、存儲的租賃服務(wù)了。云平臺推出SaaS服務(wù)國外廠商比較流行,例如AWS推出了Spinnaker服務(wù)來提供CI+CD的解決方案。