Unix哲学,Microservices和DDD (2)
Microservice是微型-服務(wù)的合成詞,一個近年來很新的buzzword。Buzzword意為每個人都喜歡講的流行術(shù)語(大數(shù)據(jù)是另一個有趣的buzzword)。
像其他工程名詞一樣,微服務(wù)并沒有嚴(yán)格的定義。寫這篇筆記的時候搜到一個定義如下:
微服務(wù)架構(gòu)
微服務(wù)架構(gòu)是一種架構(gòu)模式,它提倡將單一應(yīng)用程序劃分成一組小的服務(wù),服務(wù)之間互相協(xié)調(diào)、互相配合,為用戶提供最終價值。每個服務(wù)運行在其獨立的進程中,服務(wù)與服務(wù)間采用輕量級的通信機制互相溝通(通常是基于HTTP協(xié)議的RESTful API)。每個服務(wù)都圍繞著具體業(yè)務(wù)進行構(gòu)建,并且能夠被獨立的部署到生產(chǎn)環(huán)境、類生產(chǎn)環(huán)境等。另外,應(yīng)當(dāng)盡量避免統(tǒng)一的、集中式的服務(wù)管理機制,對具體的一個服務(wù)而言,應(yīng)根據(jù)業(yè)務(wù)上下文,選擇合適的語言、工具對其進行構(gòu)建。
單純看這樣的描述并不會有什么感覺,因此還是先介紹下微服務(wù)相關(guān)的一些技術(shù)背景。從上面的定義對進程、協(xié)作的強調(diào)可以看出,微服務(wù)是強調(diào)并行化、可擴展的模式,因此首先從可擴展性角度分析微服務(wù)的價值。
可擴展性(scalability)也是被廣泛討論的話題。為了優(yōu)化軟件的運行速度,可以縱向擴展(升級運行軟件的硬件),也可以橫向擴展(增加更多的硬件)。在橫向擴展的基礎(chǔ)上,又有三種可用的策略:
The Scale Cube
X. 在網(wǎng)絡(luò)中部署同一軟件的多個拷貝,并使用負(fù)載均衡手段在軟件的各個副本之間分配任務(wù)
Y. 將軟件按照功能模塊拆分,并將不同模塊部署到不同的機器上
Z. 數(shù)據(jù)分區(qū),把每一區(qū)的數(shù)據(jù)放在不同的機器上存儲和處理
而應(yīng)用總的可擴展性(圖中表示為長方體的體積)與應(yīng)用在這三個方面的可擴展性相關(guān)。傳統(tǒng)網(wǎng)站應(yīng)用(CRUD/MVC/RDBMS/3-tier/..)較為容易實現(xiàn)第一種擴展方式。如果要在其他坐標(biāo)上擴展,則需要首先解答更多的問題:
如何保證拆分軟件模塊的正確性(Y)?
如何保證數(shù)據(jù)庫的拆分不會降低性能(Z)?
如何對待分布式系統(tǒng)中的一致性等問題?
總結(jié)
以上是生活随笔為你收集整理的Unix哲学,Microservices和DDD (2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hibernate 、多表关联映射-组件
- 下一篇: 有效用例分析阅读笔记一