本文是新系列“從零開(kāi)始搭建微服務(wù)”的開(kāi)篇枫耳,該系列將圍繞微服務(wù)展開(kāi)老客,重點(diǎn)在于動(dòng)手搭建。
微服務(wù)是個(gè)很大的話題茵臭,關(guān)于微服務(wù)和單體服務(wù)的優(yōu)缺點(diǎn)眾說(shuō)紛紜疫诽。但不可否認(rèn)的是:微服務(wù)對(duì)產(chǎn)品的快速迭代,小步快跑有著巨大的作用。移動(dòng)互聯(lián)的時(shí)代奇徒,更要擁抱變化雏亚。因此,從我司的實(shí)際出發(fā)摩钙,如何基于有限的研發(fā)人手罢低,落地微服務(wù),這是從創(chuàng)業(yè)之初胖笛,就擺在我們面前的問(wèn)題网持。
工欲善其事 必先利其器
要搭建服務(wù),首先要有服務(wù)器长踊,最好還有各類開(kāi)箱即用的基礎(chǔ)服務(wù)功舀。有限的人手,讓我們沒(méi)有多做猶豫就確定了“一切都放到云上”的決策身弊。
在《Netty 內(nèi)存管理探險(xiǎn): PoolArena 分配之謎》中曾經(jīng)提到過(guò)日杈,我司重度使用阿里云。是的佑刷,最終我們選擇的云供應(yīng)商是阿里云莉擒。阿里云中各種五花八門的產(chǎn)品和其購(gòu)買選項(xiàng)會(huì)讓很多初識(shí)者眼花繚亂,無(wú)從下手瘫絮。本文就來(lái)談?wù)勥@方面的一點(diǎn)心得涨冀。
一. 阿里云的正確打開(kāi)方式
打開(kāi)鏈接 www.aliyun.com,首先我們得注冊(cè)一個(gè)阿里云賬號(hào)麦萤。對(duì)企業(yè)用戶來(lái)說(shuō)鹿鳖,應(yīng)盡快申報(bào)企業(yè)實(shí)名認(rèn)證。只有企業(yè)實(shí)名認(rèn)證賬號(hào)才能進(jìn)行對(duì)公賬號(hào)轉(zhuǎn)賬充值壮莹,開(kāi)具增值稅發(fā)票等企業(yè)專用功能翅帜。實(shí)名認(rèn)證入口位于“賬號(hào)管理”中:
接下來(lái),得根據(jù)產(chǎn)品的目標(biāo)人群選定一個(gè)主要的產(chǎn)品地域命满。幾乎所有的阿里云產(chǎn)品都會(huì)要求用戶選擇所在地域涝滴,這也很好理解,云產(chǎn)品也實(shí)際落地在阿里云維護(hù)的某個(gè)物理機(jī)房中胶台,就會(huì)有地域?qū)傩约叽M粋€(gè)地域內(nèi)的阿里云產(chǎn)品的互通可以近似理解為內(nèi)網(wǎng)訪問(wèn),而跨地域的阿里云產(chǎn)品互通就得通過(guò)互聯(lián)網(wǎng)進(jìn)行公網(wǎng)通信诈唬,其可靠性和實(shí)時(shí)性都會(huì)受到影響韩脏。另外,通過(guò)公網(wǎng)互通铸磅,一般來(lái)說(shuō)赡矢,除產(chǎn)品本身的費(fèi)用外杭朱,阿里云還會(huì)收取相應(yīng)的公網(wǎng)出站流量費(fèi)用。
由于阿里云目前尚不支持在產(chǎn)品購(gòu)買后吹散,遷移地域痕檬,因此,除非目的明確(例如異地互備)送浊,建議從屬于同一系統(tǒng)的阿里云產(chǎn)品都購(gòu)買在相同地域中梦谜。目前,阿里云地域有:
如果面向目標(biāo)人群主要為國(guó)內(nèi)用戶袭景,可選擇的地域包括:華北1/2唁桩、華東1/2和華南1。根據(jù)筆者實(shí)測(cè),這五個(gè)區(qū)域的國(guó)內(nèi)南北互通和運(yùn)營(yíng)商互通沒(méi)有太大差異。而華東1的物理位置就在阿里云的大本營(yíng): 杭州喻旷,不少阿里云的新產(chǎn)品也會(huì)第一時(shí)間在華東1試運(yùn)營(yíng)普碎,因此狂芋,建議優(yōu)先選擇。
二. 云服務(wù)器: ECS
一般來(lái)說(shuō),首先需要采購(gòu)的是云服務(wù)器(ECS)。在阿里云的ECS購(gòu)買界面中米奸,用戶可根據(jù)CPU類型,CPU核數(shù)和內(nèi)存的配比爽篷,公網(wǎng)帶寬悴晰,ECS綁定的云盤大小靈活組合,但這樣的靈活性也帶來(lái)了令人眼花繚亂的定價(jià)逐工。我們來(lái)一一分析:
2.1 CPU 類型及內(nèi)存配比
目前阿里云 ECS 的實(shí)例類型分為:系列I铡溪、系列II和系列III三大類,這三個(gè)系列的差異主要表現(xiàn)在CPU類型(支持指令集等)泪喊、對(duì)應(yīng)采用的內(nèi)存型號(hào)和是否I/O優(yōu)化棕硫,用戶可根據(jù)實(shí)際運(yùn)行應(yīng)用的特性(IO密集型 或 計(jì)算密集型)來(lái)選擇。從筆者的實(shí)踐來(lái)看袒啼,即便是采用最低配置的系列I哈扮,也足以在 CentOS 6.5 / 7 上,基于 JDK8瘤泪,運(yùn)行常規(guī)的IO密集型 JVM 應(yīng)用服務(wù)灶泵。在采用了微服務(wù)架構(gòu),單個(gè)服務(wù)的業(yè)務(wù)邏輯在基于異步IO和異步接口模式充分優(yōu)化后对途,由復(fù)雜度的不同,單組后端服務(wù)能輕松支撐 1K~ 5K 甚至更高的并發(fā)髓棋。摘錄說(shuō)明如下:
- 系列 II 較系列 I 進(jìn)行了硬件升級(jí)实檀,采用 Haswell CPU惶洲、DDR4 內(nèi)存,并默認(rèn)為 I/O 優(yōu)化實(shí)例膳犹,同時(shí)增加了一些新的指令集恬吕,使整數(shù)和浮點(diǎn)運(yùn)算的性能翻倍,整體計(jì)算能力更強(qiáng)须床。
- 系列 III 相對(duì)系列 I 和系列 II 進(jìn)行了硬件升級(jí)铐料,采用 Intel Broadwell CPU、DDR4 內(nèi)存豺旬,并默認(rèn)為 I/O 優(yōu)化實(shí)例钠惩,高主頻和中主頻兩種 CPU 配合多種內(nèi)存配比,可以提供給用戶更好的性能以及更多的選擇族阅。
而是否I/O優(yōu)化的差異主要和掛載的云盤IOPS相關(guān)篓跛,具體為:
- 支持 I/O 優(yōu)化的實(shí)例:
掛載 SSD云盤或高效云盤時(shí)能夠獲得云盤的全部存儲(chǔ)性能,因?yàn)?I/O 優(yōu)化為實(shí)例與云盤之間提供更好的網(wǎng)絡(luò)能力坦刀,可保證云盤存儲(chǔ)性能的發(fā)揮愧沟。
-
不支持 I/O 優(yōu)化的實(shí)例:
掛載 SSD云盤時(shí),通常最高可獲得 1000 左右的 IOPS 性能鲤遥;掛載高效云盤時(shí)沐寺,通常最高可獲得數(shù)百的 IOPS 性能
在實(shí)例的選擇界面,根據(jù)不同系列盖奈,CPU核數(shù)和內(nèi)存大小有若干固定搭配提供芽丹。CPU核數(shù)和內(nèi)存的配比有四種:1:1(1核配1G內(nèi)存)、1:2(1核配2G內(nèi)存)和1:4(1核配4G內(nèi)存)和1:8(1核配8G內(nèi)存)卜朗。在上述的三個(gè)系列中拔第,最低配置都有1核1G,而目前最高配置场钉,竟然能選擇到56核224G【注1】蚊俺。如對(duì)實(shí)例有特殊需求(需要更多CPU核數(shù)或是更大的內(nèi)存),則可如下截圖所示填寫工單逛万,提交阿里云后臺(tái)泳猬,由人工進(jìn)行處理。
如前文所述宇植,后端服務(wù)大多數(shù)是IO密集型的得封,特別地,對(duì)于 JVM 應(yīng)用而言指郁,出現(xiàn) OutOfMemory 異常的場(chǎng)景比起CPU居高不下要多得多(大多數(shù)系統(tǒng)負(fù)載異常升高也都直接或間接由于 OutOfMemory 引起的
)忙上。因此,我們?cè)趯?shí)踐中以選擇 2核16G 的內(nèi)存型實(shí)例為主闲坎,下面以該配置為例疫粥,并固定幾個(gè)因素來(lái)比較三個(gè)系列實(shí)例的采購(gòu)成本:
- 計(jì)費(fèi)方式均為“按量付費(fèi)”
- 帶寬計(jì)費(fèi)模式為“固定帶寬”茬斧,并設(shè)置為0Mps;此時(shí)ECS只有內(nèi)網(wǎng)IP梗逮,沒(méi)有公網(wǎng)IP项秉,后文會(huì)提到此類內(nèi)網(wǎng)ECS的優(yōu)缺點(diǎn)和使用場(chǎng)景
- 只有一塊默認(rèn)的40G系統(tǒng)盤,沒(méi)有額外的數(shù)據(jù)盤慷彤,且都采用該區(qū)域允許的最低配類型云盤
如下表列出了在2核16G配置下娄蔼,不同系列,不同區(qū)域?qū)嵗拿啃r(shí)費(fèi)用:
實(shí)例類型 | 華東1 | 華東2 | 華北1 | 華北2 | 華南1 |
---|---|---|---|---|---|
系列I(2核16G) | ¥1.707/時(shí) | ¥1.71/時(shí) | N/A | ¥1.71/時(shí) | ¥1.71/時(shí) |
系列II(2核16G) | ¥1.75/時(shí) | ¥1.75/時(shí) | ¥1.75/時(shí) | ¥1.75/時(shí) | ¥1.75/時(shí) |
系列III(2核16G) | ¥1.83/時(shí) | ¥1.83/時(shí) | ¥1.83/時(shí) | ¥1.83/時(shí) | ¥1.83/時(shí) |
ECS不同系列成本對(duì)比
表中數(shù)據(jù)均為本文成文時(shí)(2017.2)的數(shù)據(jù)底哗,僅供參考
從上表可以看到岁诉,如我們所預(yù)期的,在內(nèi)核個(gè)數(shù)和內(nèi)存大小相同的前提下艘虎,系列III的成本最高唉侄,系列I的成本最低,而相同系列幾乎不存在地域差異野建。唯一的異常是在華東1中属划,系列I的每小時(shí)費(fèi)用相比其它三個(gè)地域便宜0.003元,這是由于在華東1地域候生,系列I的存儲(chǔ)只能選擇普通云盤同眯,而其它區(qū)域的系列I只能選擇高效云盤或性能更高也更貴的SSD云盤。
注1:
- 按量計(jì)費(fèi)方式下的實(shí)例最高配置目前為:4核16G
- 包年包月計(jì)費(fèi)方式下的實(shí)例最高配置目前可達(dá)驚人的:56核224G唯鸭;當(dāng)然費(fèi)用也驚人的貴须蜗!
2.2 計(jì)費(fèi)方式:按量付費(fèi) vs 包年包月
阿里云所有產(chǎn)品都支持的計(jì)費(fèi)方式是:按量付費(fèi),這也是云服務(wù)相比于傳統(tǒng)IDC的根本優(yōu)勢(shì)之一目溉。所謂打開(kāi)水龍頭就用明肮,那當(dāng)然是用了多少資源付多少錢,這一計(jì)費(fèi)方式對(duì)用戶來(lái)說(shuō)最容易理解缭付。另一方面柿估,對(duì)于包括ECS在內(nèi)的幾個(gè)核心產(chǎn)品,阿里云還提供了包年包月的計(jì)費(fèi)方式來(lái)鎖定長(zhǎng)期用戶陷猫。具體來(lái)說(shuō)秫舌,用戶可以一次性為今后一段時(shí)間的資源使用預(yù)先付費(fèi)。相比于每小時(shí)結(jié)算一次的按量計(jì)費(fèi)绣檬,如果使用時(shí)長(zhǎng)相同足陨,這筆預(yù)付費(fèi)用會(huì)便宜不少。讓我們來(lái)具體算算有多劃算娇未。以系列I的2核16G的配置為例墨缘,地域?yàn)槿A東2,都按照使用時(shí)長(zhǎng)為1年,不同計(jì)費(fèi)方式下的1年成本對(duì)比如下:
系列I(2核16G) | 按量 | 包月 | 包1年 | 包2年 | 包3年 |
---|---|---|---|---|---|
計(jì)費(fèi)單價(jià) | ¥1.71/時(shí) | ¥500.00/月 | ¥5100/年 | ¥8400/2年 | ¥9000/3年 |
計(jì)費(fèi)周期數(shù) | × 24 × 365 | × 12 | × 1 | ÷ 2 | ÷ 3 |
總費(fèi)用(元) | 14979.60 | 6000 | 5100 | 4200 | 3000 |
一比嚇一跳办俊搁凸!包月使用1年的費(fèi)用僅僅是按量使用1年的40%媚值。更不用提狠毯,目前阿里云在大力做促銷的包2年、包3年的打折力度了褥芒。當(dāng)然嚼松,包年包月的優(yōu)惠付出的代價(jià)是鎖定了使用期限。
需要注意锰扶,包年包月ECS有5天內(nèi)無(wú)理由退款的選項(xiàng):在購(gòu)買包年包月ECS后献酗,發(fā)現(xiàn)配置有誤,或是地域選擇錯(cuò)誤坷牛,或者任何其它原因罕偎,如距離購(gòu)買生效時(shí)還未超過(guò)5天的,可以進(jìn)行退款京闰。但請(qǐng)注意颜及,截止目前為止,該規(guī)定細(xì)則仍然是:每個(gè)用戶累積只有1次ECS 5天內(nèi)無(wú)理由退款的機(jī)會(huì)蹂楣,也就是只要該阿里云賬號(hào)已經(jīng)進(jìn)行過(guò)一次成功的ECS退款操作俏站,就不能再次退款了。因此痊土,下單要慎重耙拊!
綜上赁酝,我們對(duì)選擇何種計(jì)費(fèi)方式犯祠,可以歸納如下:
- 以試用、臨時(shí)使用為目的的ECS購(gòu)買酌呆,無(wú)論是測(cè)試配置衡载,測(cè)試地域,最好采用按量付費(fèi)方式肪笋,最少只需要掏1小時(shí)的費(fèi)用月劈,只要記得試用完成后,立刻通過(guò)控制臺(tái)釋放實(shí)例即可(不足一小時(shí)按照一小時(shí)計(jì)費(fèi))
- 以長(zhǎng)期使用為目的藤乙,在ECS的配置和地域都已經(jīng)完全明確的前提下猜揪,能包多長(zhǎng)時(shí)間包多長(zhǎng)時(shí)間,享受超值的打折優(yōu)惠
2.3 網(wǎng)絡(luò)和安全組
在購(gòu)買ECS時(shí)坛梁,我們可以選擇使用何種網(wǎng)絡(luò)類型而姐,阿里云提供了“經(jīng)典網(wǎng)絡(luò)”和“專用網(wǎng)絡(luò)”兩種:
- 經(jīng)典網(wǎng)絡(luò):內(nèi)網(wǎng)IP地址由阿里云統(tǒng)一分配,且不可更改划咐,可方便的與用戶購(gòu)買的其它實(shí)例或阿里云產(chǎn)品進(jìn)行同地域的內(nèi)網(wǎng)互訪拴念,適合對(duì)網(wǎng)絡(luò)自定義及自主性管理要求適中的用戶
- 專用網(wǎng)絡(luò):是指邏輯隔離的私有網(wǎng)絡(luò)钧萍,用戶可以自定義網(wǎng)絡(luò)拓?fù)浜?IP 地址,支持通過(guò)專線連接政鼠,網(wǎng)絡(luò)可擴(kuò)展性強(qiáng)风瘦。適合于對(duì)網(wǎng)絡(luò)有個(gè)性化定制及高級(jí)定制需求的客戶
簡(jiǎn)言之,“專用網(wǎng)絡(luò)”給了有能力且有需求使用“虛擬交換機(jī)/路由器”來(lái)規(guī)劃定義私有網(wǎng)絡(luò)用戶這樣一種可能性:在阿里云的基礎(chǔ)網(wǎng)絡(luò)內(nèi)建立一個(gè)可以自定義的專有隔離網(wǎng)絡(luò)公般,自定義這個(gè)專有網(wǎng)絡(luò)的網(wǎng)絡(luò)拓?fù)?/strong>和 IP 地址万搔。兩種網(wǎng)絡(luò)類型的功能對(duì)比如下表:
功能點(diǎn) | 經(jīng)典網(wǎng)絡(luò) | 專有網(wǎng)絡(luò) |
---|---|---|
二層邏輯隔離 | 不支持 | 支持 |
自定義私網(wǎng)網(wǎng)段 | 不支持用戶自定義 | 用戶自定義 |
私網(wǎng) IP 規(guī)劃 | 經(jīng)典網(wǎng)絡(luò)內(nèi)唯一 | 專有網(wǎng)絡(luò)內(nèi)唯一,專有網(wǎng)絡(luò)間可重復(fù) |
自建 VPN | 不支持 | 支持 |
私網(wǎng)互通 | 賬號(hào)內(nèi)相同地域內(nèi)互通 | 專有網(wǎng)絡(luò)內(nèi)互通官帘,專有網(wǎng)絡(luò)間隔離 |
自建 NAT 網(wǎng)關(guān) | 不支持 | 支持 |
經(jīng)典網(wǎng)絡(luò) vs 專有網(wǎng)絡(luò)
“專用網(wǎng)絡(luò)”的一種應(yīng)用場(chǎng)景是搭配高速通道組建混合云瞬雹,如下圖所示:
使用“專用網(wǎng)絡(luò)”(VPC)、ECS和其它云產(chǎn)品搭建云上業(yè)務(wù)系統(tǒng)刽虹,而出于數(shù)據(jù)保密性考慮酗捌,核心數(shù)據(jù)放置在云下用戶的自建數(shù)據(jù)中心(IDC),使用高速通道專線接入涌哲,實(shí)現(xiàn)云上云下數(shù)據(jù)互通胖缤,形成混合云使用環(huán)境。
專用網(wǎng)絡(luò)還有其它使用場(chǎng)景膛虫,參見(jiàn)文后所附參考資料(阿里云:VPC專用網(wǎng)絡(luò)常用應(yīng)用場(chǎng)景)草姻,這里不再贅述。
對(duì)于大多數(shù)用戶而言稍刀,“經(jīng)典網(wǎng)絡(luò)”已經(jīng)足夠使用撩独。而使用“安全組”防火墻可做到三層網(wǎng)絡(luò)訪問(wèn)控制,所以账月,如果要在經(jīng)典網(wǎng)絡(luò)中综膀,進(jìn)行簡(jiǎn)單的訪問(wèn)隔離,可使用創(chuàng)建多個(gè)“安全組”來(lái)實(shí)現(xiàn)局齿,具體說(shuō)明參見(jiàn)文后所附參考資料安全組使用FAQ剧劝。在小規(guī)模使用中,"偷懶"一點(diǎn)抓歼,全局使用一個(gè)默認(rèn)安全組讥此,通常也足夠了。
2.4 ECS綁定的存儲(chǔ)
無(wú)論選擇何種實(shí)例類型谣妻,小到1核1G萄喳,大到56核224G,ECS默認(rèn)的系統(tǒng)盤大小均為40G蹋半,用戶可以調(diào)整系統(tǒng)盤最大到500G他巨,或是購(gòu)買額外的數(shù)據(jù)盤。增大系統(tǒng)盤或另購(gòu)數(shù)據(jù)盤都會(huì)增加ECS的采購(gòu)成本。從筆者的實(shí)踐來(lái)看染突,如果只是安裝后端服務(wù)捻爷,以及臨時(shí)保存運(yùn)行日志,默認(rèn)的40G系統(tǒng)盤在安裝完系統(tǒng)后的剩余空間已完全足夠份企。
-
問(wèn)題1:要用云盤長(zhǎng)期保存文件(用戶上傳的圖片也榄、音視頻)怎么辦,而且文件的數(shù)量估計(jì)還挺多薪棒?
如業(yè)務(wù)中需要長(zhǎng)期保存文件手蝎,則建議單獨(dú)采購(gòu)阿里云的OSS產(chǎn)品榕莺,使用其SDK二次開(kāi)發(fā)來(lái)完成功能俐芯。從安全性、數(shù)據(jù)完整性以及結(jié)合使用阿里云CDN的方便性看钉鸯,OSS都提供了遠(yuǎn)超云盤文件系統(tǒng)的能力吧史。本系列后續(xù)文章中會(huì)再做詳細(xì)介紹。 -
問(wèn)題2:系統(tǒng)產(chǎn)生的運(yùn)行日志中有很多有用信息唠雕,想長(zhǎng)期保存贸营,以后估計(jì)還得做個(gè)分析,40G空間不夠咋辦岩睁?
后端服務(wù)運(yùn)行產(chǎn)生的日志類文件钞脂,如需要長(zhǎng)期保存,建議結(jié)合使用阿里云日志服務(wù)和OSS捕儒、表格存儲(chǔ)冰啃、MaxCompute等存儲(chǔ)類服務(wù),并配合 E-MapReduce刘莹、MaxCompute 進(jìn)行離線日志分析阎毅。
另外,如確需購(gòu)買額外云盤点弯,也建議采購(gòu)獨(dú)立型云盤扇调。其購(gòu)買入口位于“云服務(wù)器ECS”-"磁盤"下,如截圖所示:
獨(dú)立型云盤可以在不同的時(shí)間抢肛,掛載到相同地域的不同ECS實(shí)例上狼钮,這種云盤的使用方式更為靈活和經(jīng)濟(jì)。
2.5 帶寬方式
ECS在帶寬計(jì)費(fèi)方式上也提供了兩種選擇 —— “按固定帶寬” 和 “按使用流量”:
- 按固定帶寬的方式:
需指定公網(wǎng)出站的帶寬的大小捡絮,如 10Mbps熬芜,適用于業(yè)務(wù)場(chǎng)景對(duì)于網(wǎng)絡(luò)帶寬要求比較穩(wěn)定的客戶,費(fèi)用較低
- 按使用流量的方式:
是按公網(wǎng)出站的實(shí)際發(fā)生的網(wǎng)絡(luò)流量進(jìn)行收費(fèi)锦援,適用于業(yè)務(wù)場(chǎng)景對(duì)網(wǎng)絡(luò)帶寬需求變化較大的場(chǎng)景猛蔽,如平時(shí)帶寬使用較低但間歇性的出現(xiàn)網(wǎng)絡(luò)訪問(wèn)高峰的場(chǎng)景;為了防止突然爆發(fā)的流量產(chǎn)生較高的費(fèi)用,可以指定容許的最大網(wǎng)絡(luò)帶寬進(jìn)行限制
對(duì)于如何選定帶寬方式曼库,我們可以從接入架構(gòu)考慮区岗。從我司的實(shí)踐來(lái)看,一個(gè)相對(duì)合理的生產(chǎn)系統(tǒng)接入架構(gòu)是:將阿里云負(fù)載均衡(SLB)前置于業(yè)務(wù)系統(tǒng)前毁枯。此時(shí)慈缔,由前端APP或WEB與后端服務(wù)交互產(chǎn)生的入站和出站公網(wǎng)流量,均在SLB上計(jì)費(fèi)种玛。一般情況下藐鹤,SLB和后端ECS屬于同一地域,因此兩者通信走的是內(nèi)網(wǎng)流量赂韵,不產(chǎn)生費(fèi)用娱节。
該方式的優(yōu)勢(shì)是巨大的,顯而易見(jiàn)祭示,如果SLB后端對(duì)接多個(gè)運(yùn)行相同功能服務(wù)的ECS肄满,可滿足高可用和吞吐量水平擴(kuò)容的要求。同時(shí)质涛,由于ECS不直接暴露在公網(wǎng)稠歉,可避免一系列由ECS操作系統(tǒng)漏洞帶來(lái)的安全性問(wèn)題。此時(shí)汇陆,作為后端服務(wù)的ECS甚至無(wú)需公網(wǎng)IP怒炸,也就可以配置為前文提及的“內(nèi)網(wǎng)ECS”模式——將固定帶寬直接配置為 0Mbps。關(guān)于 SLB 的使用方式毡代,在本系列的下一篇文章阅羹,還會(huì)詳細(xì)介紹。
是否可將所有ECS都配置為無(wú)公網(wǎng)IP的內(nèi)網(wǎng)ECS呢月趟?
從實(shí)際操作情況看灯蝴,往往做不到,有如下幾個(gè)原因:
- 除使用阿里云提供的ECS控制臺(tái)外孝宗,一般還需要登錄到ECS上穷躁,通過(guò)圖形界面或命令行進(jìn)行操作。即便是在全Linux組成的系統(tǒng)中因妇,還是至少需要一臺(tái)能通過(guò)公網(wǎng)訪問(wèn)的服務(wù)器问潭,來(lái)作為登錄跳板機(jī),使用 ssh 或類似方式婚被,手動(dòng)登錄到組內(nèi)的任何一臺(tái)ECS上
- 公網(wǎng)帶寬為0Mbps的ECS狡忙,除了公網(wǎng)不能直接到達(dá)外(不能直接入站),它本身也不能直接訪問(wèn)公網(wǎng)(不能直接出站)址芯。這一限制灾茁,通常不會(huì)帶來(lái)問(wèn)題窜觉,因?yàn)樗械陌⒗镌飘a(chǎn)品,包括 RDS北专、OSS禀挫、云數(shù)據(jù)庫(kù) Redis,消息隊(duì)列等在內(nèi)拓颓,都有內(nèi)網(wǎng)地址语婴,均能通過(guò)內(nèi)網(wǎng)訪問(wèn)或僅支持內(nèi)網(wǎng)訪問(wèn)。但如ECS上運(yùn)行的后端服務(wù)需要訪問(wèn)非阿里云產(chǎn)品的公網(wǎng)服務(wù)驶睦,例如:第三方短信平臺(tái)砰左、百度系開(kāi)放平臺(tái)、騰訊系開(kāi)放平臺(tái)场航,則ECS必須能夠有公網(wǎng)的訪問(wèn)能力缠导。
綜上,如ECS僅作為運(yùn)維跳板機(jī)使用旗闽,可確定帶寬計(jì)費(fèi)方式必然是選擇“按使用流量”劃算酬核,大致估算運(yùn)維操作中,可能的最大下載(對(duì)ECS來(lái)說(shuō)是出站帶寬)需求适室,即可確定最大網(wǎng)絡(luò)帶寬的數(shù)值。若是后端服務(wù)需要對(duì)公網(wǎng)進(jìn)行訪問(wèn)的举瑰,如果訪問(wèn)操作較為均勻捣辆,建議采用“固定帶寬”方式;若訪問(wèn)操作時(shí)機(jī)及所需帶寬隨機(jī)性較大此迅,則還是采用“按使用流量”計(jì)費(fèi)為妥汽畴。
另外,如需搭建內(nèi)容下載型業(yè)務(wù)耸序,從帶寬成本和體驗(yàn)考慮忍些,應(yīng)優(yōu)先考慮使用阿里云CDN,而非直接通過(guò)ECS或SLB提供下載服務(wù)坎怪。
2.6 延伸問(wèn)題:?jiǎn)闻_(tái)ECS運(yùn)行多少服務(wù)實(shí)例合適
在微服務(wù)架構(gòu)中罢坝,一個(gè)基本的事實(shí)是:相比于大單體,會(huì)存在多得多的獨(dú)立服務(wù)進(jìn)程搅窿,或稱之為“服務(wù)實(shí)例”嘁酿。那么,到底該如何將這些服務(wù)實(shí)例分配到服務(wù)器中去:是盡量在低配ECS上運(yùn)行單實(shí)例男应,還是將更多的實(shí)例納入到CPU核數(shù)和內(nèi)存都更多的高配ECS中去運(yùn)行闹司?為后面行文方便,我們將這一概念稱為:ECS/實(shí)例 配比策略沐飘,前者定義為:1:1配比游桩,后者定義為:1:N配比牲迫。
讓我們來(lái)簡(jiǎn)單測(cè)算下分別采用兩種不同的ECS/實(shí)例 配比策略的成本開(kāi)銷。由于目前阿里云中ECS的最低配實(shí)例就是1核1G內(nèi)存的借卧,我們假定單服務(wù)實(shí)例使用1G內(nèi)存恩溅,一共有12個(gè)這樣的服務(wù)實(shí)例需要運(yùn)行,在該假設(shè)情況下谓娃,成本對(duì)比為:
ECS/實(shí)例 配比策略 | 低配ECS運(yùn)行單實(shí)例(1:1) | 高配ECS運(yùn)行多實(shí)例(1:N) |
---|---|---|
單實(shí)例內(nèi)存資源消耗 | 1G | 1G |
整系統(tǒng)所需實(shí)例數(shù) | 12 | 12 |
單臺(tái)ECS配置 | 1核1G | 2核16G |
所需ECS數(shù)量 | 12 | 1 |
單ECS成本【注2】 | ¥459.00/年 | ¥5079.60/年 |
購(gòu)買ECS總成本(元) | ¥5508 | ¥5079.60 |
ECS/實(shí)例配比策略比較(1)
從上表看脚乡,1:1配比相對(duì)于1:N配比策略,每年就要多花費(fèi)428.4元滨达。更進(jìn)一步奶稠,由于微服務(wù)架構(gòu)更鼓勵(lì)單服務(wù)實(shí)例專注于實(shí)現(xiàn)單個(gè)業(yè)務(wù)功能,因此捡遍,將單服務(wù)實(shí)例基于異步IO和異步接口模式充分優(yōu)化后锌订,內(nèi)存消耗能降到更低。在 《Netty 內(nèi)存管理探險(xiǎn): PoolArena 分配之謎》 一文中画株,就引用了我司在生產(chǎn)系統(tǒng)中的實(shí)際案例:xharbor (API 網(wǎng)關(guān))可配置為 128M堆內(nèi)存(Heap)加上 96M堆外直接內(nèi)存(Direct)總計(jì) 使用 224M系統(tǒng)內(nèi)存來(lái)運(yùn)行辆飘。
目前,我司生產(chǎn)系統(tǒng)的不同類型服務(wù)實(shí)體已經(jīng)多達(dá)30+谓传,按照30種服務(wù)類型算蜈项,為確保高可用性,每種服務(wù)實(shí)體都至少運(yùn)行兩個(gè)實(shí)例续挟,因此總計(jì)有60個(gè)同時(shí)運(yùn)行的實(shí)例紧卒,按照單個(gè)實(shí)例消耗 250M 內(nèi)存來(lái)再次測(cè)算整個(gè)后端系統(tǒng)運(yùn)行1年時(shí)間的所需的ECS成本,兩種配比策略對(duì)比如下:
ECS/實(shí)例 配比策略 | 低配ECS運(yùn)行單實(shí)例(1:1) | 高配ECS運(yùn)行多實(shí)例(1:N) |
---|---|---|
單實(shí)例內(nèi)存資源消耗 | 250M | 250M |
整系統(tǒng)所需實(shí)例數(shù) | 60 | 60 |
單臺(tái)ECS配置 | 1核1G | 2核16G |
所需ECS數(shù)量 | 60 | 2【注3】 |
單ECS成本【注2】 | ¥459.00/年 | ¥5079.60/年 |
購(gòu)買ECS總成本(元) | ¥27540 | ¥10159.2 |
ECS/實(shí)例配比策略比較(2)
此時(shí)诗祸,1:N配比策略的成本僅為 1:1 配比成本的37%跑芳。很明顯,這是由于在1:1配比策略下直颅,大量的系統(tǒng)內(nèi)存資源被浪費(fèi)了博个。在上面的兩次測(cè)算中,細(xì)心的讀者應(yīng)該已經(jīng)注意到功偿,我們忽略了CPU資源的占用差異盆佣,在第二次測(cè)算的1:N配比策略下,每個(gè)服務(wù)實(shí)例只能分?jǐn)偟?1/15 核的CPU資源脖含。但大多數(shù)情況下罪塔,后端服務(wù)由于是IO密集型服務(wù),所占用的CPU資源較低养葵,一般不會(huì)成為系統(tǒng)瓶頸征堪。另一方面,阿里云及其合作伙伴提供了相當(dāng)多的標(biāo)準(zhǔn)計(jì)算密集型服務(wù)关拒,包括:圖像裁剪佃蚜、識(shí)別庸娱,語(yǔ)音識(shí)別,視頻轉(zhuǎn)換谐算,大數(shù)據(jù)分析等熟尉,其投入/產(chǎn)出成本相比于自行搭建更為低廉。如業(yè)務(wù)中用到上述功能洲脂,建議優(yōu)先考慮花錢購(gòu)買標(biāo)準(zhǔn)服務(wù)來(lái)解決問(wèn)題斤儿。
相對(duì)于顯性的采購(gòu)成本,隱性的ECS運(yùn)維成本恐锦,往往更容易被決策者所忽略往果。更多的ECS數(shù)量意味著更多的運(yùn)維行為和更多的系統(tǒng)級(jí)監(jiān)控,也就意味著更多的人力成本投入一铅。運(yùn)維系統(tǒng)的自動(dòng)化程度越高陕贮,運(yùn)維上的人力成本投入會(huì)越低,但這也同時(shí)帶來(lái)了較多的基礎(chǔ)研發(fā)投入潘飘。哪怕是有著阿里云強(qiáng)大的產(chǎn)品控制臺(tái)和OpenAPI作為基礎(chǔ)肮之,從我司的實(shí)踐來(lái)看,這里也是一個(gè)需要精兵強(qiáng)將投入的“艱巨戰(zhàn)場(chǎng)”卜录。
當(dāng)然1:N配比策略也有需要謹(jǐn)慎處理的不足之處:
- 由于計(jì)算資源沒(méi)有被隔離戈擒,存在由單個(gè)服務(wù)實(shí)例負(fù)載異常造成整臺(tái)ECS緩慢的問(wèn)題,這就需要更為實(shí)時(shí)和靈敏的業(yè)務(wù)監(jiān)控系統(tǒng)來(lái)及時(shí)發(fā)現(xiàn)此類問(wèn)題暴凑,給短期的手工解決贏得時(shí)間峦甩,給長(zhǎng)期的自動(dòng)化處理找到線索;
- 由于網(wǎng)絡(luò)資源沒(méi)有隔離现喳,多個(gè)服務(wù)實(shí)例的接入端口必須分離,最好是由操作系統(tǒng)自動(dòng)分配(對(duì)于Socket編程來(lái)說(shuō)犬辰,就是將綁定的端口值設(shè)置為0)嗦篱。因此,即便是物理位置相同的服務(wù)實(shí)例幌缝,它的每次運(yùn)行灸促,服務(wù)端口都會(huì)不同,這也是微服務(wù)架構(gòu)中需要解決的核心問(wèn)題之一:服務(wù)發(fā)現(xiàn)涵卵。
- 同樣由于系統(tǒng)/網(wǎng)絡(luò)資源沒(méi)有隔離浴栽,單個(gè)服務(wù)實(shí)例的網(wǎng)絡(luò)入站或出站流量過(guò)大,也會(huì)影響同ECS上的其它實(shí)例正常提供服務(wù)轿偎,還有諸如TCP連接數(shù)占用過(guò)多典鸡,系統(tǒng)文件句柄占用過(guò)多等問(wèn)題。這就需要在微服務(wù)的統(tǒng)一開(kāi)發(fā)框架中提前埋入相關(guān)監(jiān)控點(diǎn)坏晦,并配合業(yè)務(wù)指標(biāo)監(jiān)控系統(tǒng)及時(shí)排查萝玷、準(zhǔn)確定位發(fā)生異常的業(yè)務(wù)模塊嫁乘。
綜上,借用《人月神話》中的一句名言:“No Silver Bullet 沒(méi)有銀彈”球碉。在實(shí)踐中蜓斧,我們往往根據(jù)微服務(wù)中不同功能實(shí)例的特性,混合使用1:1和1:N這兩種配比策略:對(duì)于業(yè)務(wù)負(fù)載較小的服務(wù)實(shí)例睁冬,在確保高可用性的前提下(相同功能服務(wù)的多個(gè)實(shí)例部署在不同ECS上
)挎春,盡量合用單臺(tái)高配ECS;而對(duì)于業(yè)務(wù)負(fù)載繁重或是業(yè)務(wù)負(fù)載變化較大的服務(wù)實(shí)例豆拨,可以部署在單臺(tái)匹配負(fù)載需求的ECS上直奋,確保其承載能力,同時(shí)也隔離其負(fù)載的劇烈變化辽装。
說(shuō)句題外話帮碰,讓技術(shù)人員能根據(jù)系統(tǒng)的“個(gè)性特點(diǎn)”來(lái)調(diào)整部署方式,用較小的投入拾积,獲得最大的產(chǎn)出殉挽,這不正是研發(fā)團(tuán)隊(duì)?wèi)?yīng)該追求的技術(shù)成就感嗎?
注2:ECS采用系列I拓巧,非I/O優(yōu)化實(shí)例斯碌,且?guī)捙渲脼?0Mbps
注3:同類型服務(wù)的兩個(gè)實(shí)例各自運(yùn)行在不同的ECS上,互為熱備肛度,來(lái)確保高可用性傻唾;此時(shí),每個(gè)高配ECS運(yùn)行30個(gè)實(shí)例承耿,共計(jì)需要 0.25G × 30 = 7.5G 內(nèi)存冠骄,除保留給操作系統(tǒng)2G的運(yùn)行內(nèi)存外,實(shí)際還有6.5G的內(nèi)存資源可運(yùn)行更多的服務(wù)實(shí)例
2.7 最后一個(gè)問(wèn)題:ECS購(gòu)買后的配置變更
給各位耐心讀到此處的讀者吃個(gè)定心丸加袋。ECS購(gòu)買后凛辣,還可以有限的變更配置。參照阿里云相關(guān)文檔總結(jié)如下:
- 按量付費(fèi)ECS不支持變更配置职烧。這個(gè)能理解扁誓,如果配置不合適,直接釋放蚀之,重新購(gòu)買即可蝗敢;
- 包年包月支持有限度的配置變更,具體如下:
- 除獨(dú)享型實(shí)例外足删,對(duì)實(shí)例規(guī)格可隨時(shí)進(jìn)行升級(jí)寿谴,包括 CPU、內(nèi)存壹堰、基礎(chǔ)帶寬進(jìn)行升級(jí)拭卿。升級(jí)實(shí)例規(guī)格后需要在控制臺(tái)重啟實(shí)例骡湖;
- 不能隨時(shí)降配,但可以續(xù)費(fèi)降配峻厚。降配后的新配置會(huì)在新的續(xù)費(fèi)周期內(nèi)生效响蕴。當(dāng)前剩余服務(wù)期限內(nèi)配置不會(huì)發(fā)生改變;
- 提交續(xù)費(fèi)降配操作后惠桃,當(dāng)前剩余服務(wù)期限內(nèi)將不再支持升級(jí)和降配功能浦夷;
- 升降配的時(shí)候,實(shí)例規(guī)格族不能互換辜王,只能選擇同一規(guī)格族中的相關(guān)規(guī)格劈狐;
- 升降配前后,公網(wǎng)和內(nèi)網(wǎng)的 IP 地址不會(huì)改變呐馆。
好吧肥缔,最后還有一個(gè)小問(wèn)題
操作系統(tǒng)鏡像:我們理所當(dāng)然 強(qiáng)烈推薦 Unix Like 系的:CentOS、CoreOS汹来、FreeBSD ... 啥都行续膳,只要你熟悉。
總結(jié)
在本文中收班,我們結(jié)合架構(gòu)(主要是微服務(wù)架構(gòu))坟岔,重點(diǎn)探討分析了阿里云ECS的選型和購(gòu)買的細(xì)節(jié),但也挖了不少坑摔桦,包括 SLB社付、OSS、CDN 等相關(guān)產(chǎn)品邻耕。下一篇文章鸥咖,將會(huì)一并填坑。(TO BE CONTINUED... I WILL BE BACK)
參考資料:
阿里云產(chǎn)品文檔:安全組使用FAQ
阿里云產(chǎn)品文檔:VPC專用網(wǎng)絡(luò)常用應(yīng)用場(chǎng)景
阿里云產(chǎn)品文檔:負(fù)載均衡
阿里云產(chǎn)品文檔:對(duì)象存儲(chǔ) OSS
阿里云產(chǎn)品文檔:內(nèi)容分發(fā)網(wǎng)絡(luò) CDN