人
已閱讀
已閱讀
分布式系統(tǒng)架構(gòu)在APP開發(fā)中的應(yīng)用
來(lái)源:lexintech.com ?? ?? 發(fā)布時(shí)間:2018-01-17
在APP開發(fā)等軟件項(xiàng)目中,系統(tǒng)架構(gòu)的選擇非常重要。我們說(shuō)的系統(tǒng)架構(gòu)主要是指軟件項(xiàng)目在服務(wù)器運(yùn)行時(shí)所需要的操作系統(tǒng)、硬件、網(wǎng)絡(luò)、各種應(yīng)用服務(wù)等。
目前常見(jiàn)的一些APP開發(fā)系統(tǒng)架構(gòu)有高并發(fā)架構(gòu)、異地多活架構(gòu)、容器化架構(gòu)、微服務(wù)架構(gòu)、高可用架構(gòu)、彈性化架構(gòu)等等。還有和這些架構(gòu)相關(guān)的管理型的技術(shù)方法,如 DevOps、應(yīng)用監(jiān)控、自動(dòng)化運(yùn)維、SOA 服務(wù)治理等。
分布式系統(tǒng)架構(gòu)是區(qū)別于單體架構(gòu)而言的。為什么要使用分布式系統(tǒng)架構(gòu)呢?
1、增大系統(tǒng)容量。我們的業(yè)務(wù)量越來(lái)越大,而要能應(yīng)對(duì)越來(lái)越大的業(yè)務(wù)量,一臺(tái)機(jī)器的性能已經(jīng)無(wú)法滿足了,我們需要多臺(tái)機(jī)器才能應(yīng)對(duì)大規(guī)模的應(yīng)用場(chǎng)景。所以,我們需要垂直或是水平拆分業(yè)務(wù)系統(tǒng),讓其變成一個(gè)分布式的架構(gòu)。
2、加強(qiáng)系統(tǒng)可用。我們的業(yè)務(wù)越來(lái)越關(guān)鍵,需要提高整個(gè)系統(tǒng)架構(gòu)的可用性,這就意味著架構(gòu)中不能存在單點(diǎn)故障。這樣,整個(gè)系統(tǒng)不會(huì)因?yàn)橐慌_(tái)機(jī)器出故障而導(dǎo)致整體不可用。所以,需要通過(guò)分布式架構(gòu)來(lái)冗余系統(tǒng)以消除單點(diǎn)故障,從而提高系統(tǒng)的可用性。
3、除了以上主要兩點(diǎn),分布式架構(gòu)還有一些優(yōu)勢(shì),比如:
因?yàn)槟K化,所以系統(tǒng)模塊重用度更高;
因?yàn)檐浖?wù)模塊被拆分,開發(fā)和發(fā)布速度可以并行而變得更快;
系統(tǒng)擴(kuò)展性更高;
團(tuán)隊(duì)協(xié)作流程也會(huì)得到改善;
等等。
不過(guò),這個(gè)世界上不存在完美的技術(shù)方案,采用任何技術(shù)方案都是有得有失,也就是說(shuō),分布式系統(tǒng)在消除上述問(wèn)題的同時(shí),也給我們帶來(lái)了其他的問(wèn)題。因此,我們需要清楚地知道分布式系統(tǒng)所帶來(lái)的問(wèn)題。下面這個(gè)表格比較了單體應(yīng)用和分布式架構(gòu)的優(yōu)缺點(diǎn)。
![分布式系統(tǒng)架構(gòu)在APP開發(fā)中的應(yīng)用](/uploads/allimg/180117/1-1P11FUA33V.png)
從上面的表格我們可以看到,分布式系統(tǒng)雖然有一些優(yōu)勢(shì),但也存在一些問(wèn)題。
架構(gòu)設(shè)計(jì)變得復(fù)雜(尤其是其中的分布式事務(wù))。
部署單個(gè)服務(wù)會(huì)比較快,但是如果一次部署需要多個(gè)服務(wù),部署會(huì)變得復(fù)雜。
系統(tǒng)的吞吐量會(huì)變大,但是響應(yīng)時(shí)間會(huì)變長(zhǎng)。
運(yùn)維復(fù)雜度會(huì)因?yàn)榉?wù)變多而變得很復(fù)雜。
架構(gòu)復(fù)雜導(dǎo)致學(xué)習(xí)曲線變大。
測(cè)試和查錯(cuò)的復(fù)雜度增大。
技術(shù)可以很多樣,這會(huì)帶來(lái)維護(hù)和運(yùn)維的復(fù)雜度。
管理分布式系統(tǒng)中的服務(wù)和調(diào)度變得困難和復(fù)雜。
也就是說(shuō),分布式系統(tǒng)架構(gòu)的難點(diǎn)在于系統(tǒng)設(shè)計(jì),以及管理和運(yùn)維。所以,分布式架構(gòu)解決了“單點(diǎn)”和“性能容量”的問(wèn)題,但卻新增了一堆問(wèn)題。而對(duì)于這些新增的問(wèn)題,還會(huì)衍生出更多的子問(wèn)題,這就需要我們不斷地用各式各樣的技術(shù)和手段來(lái)解決這些問(wèn)題。
這就出現(xiàn)了我前面所說(shuō)的那些架構(gòu)方式,以及各種相關(guān)的管理型的技術(shù)方法。這個(gè)世界就是這樣變得復(fù)雜起來(lái)的。
總的來(lái)說(shuō),在APP開發(fā)時(shí),選擇什么樣的系統(tǒng)架構(gòu),要綜合各方面的因素,以上的分析希望能給您提供一些參考。