2021-03-02 分類: 網(wǎng)站建設(shè)
軟件架構(gòu)(software architecture)就是軟件的基本結(jié)構(gòu)。
合適的架構(gòu)是軟件成功的最重要因素之一。大型軟件公司通常有專門的架構(gòu)師職位(architect),只有資深程序員才可以擔(dān)任。
O'Reilly 出版過一本免費的小冊子《Software Architecture Patterns》(PDF), 介紹了五種最常見的軟件架構(gòu),是非常好的入門讀物。
軟件架構(gòu)就是軟件的基本結(jié)構(gòu)。架構(gòu)的本質(zhì)是管理復(fù)雜性。如果你覺得架構(gòu)不重要,可能是你做的事情不夠復(fù)雜,或者是你沒有管理好復(fù)雜性。架構(gòu)模式雖多,經(jīng)過抽象沉淀之后,也就那么幾種:
1. 分層架構(gòu)(比較傳統(tǒng)的單體架構(gòu))
2. 事件驅(qū)動架構(gòu) (一般適用于應(yīng)用局部場景,用來實現(xiàn)異步解耦)
3. 微核架構(gòu)(又稱插件架構(gòu),開發(fā)難度較高,一般用來做工具軟件開發(fā),如Eclipse,不太適合分布式業(yè)務(wù)場景)
4. 微服務(wù)架構(gòu)(當前比較流行的服務(wù)化架構(gòu),解決單體架構(gòu)面臨的問題,適合敏捷開發(fā),快速迭代)
5. 云架構(gòu)(現(xiàn)在的說法是云原生架構(gòu)-Cloud Native,基于Docker、Kubernetes、Service Mesh 云原生架構(gòu))
在原文的基礎(chǔ)上,小編按照自己的想法,進行了小幅調(diào)整。
layered architecture)是最常見的軟件架構(gòu),也是事實上的標準架構(gòu)。如果你不知道要用什么架構(gòu),那就用它。
這種架構(gòu)將軟件分成若干個水平層,每一層都有清晰的角色和分工,不需要知道其他層的細節(jié)。層與層之間通過接口通信。
雖然沒有明確約定,軟件一定要分成多少層,但是四層的結(jié)構(gòu)最常見。
有的軟件在邏輯層(business)和持久層(persistence)之間,加了一個服務(wù)層(service),提供不同業(yè)務(wù)邏輯需要的一些通用接口。
用戶的請求將依次通過這四層的處理,不能跳過其中任何一層。
優(yōu)點
缺點
事件驅(qū)動架構(gòu)(event-driven architecture)核心組件:
對于簡單的項目,事件隊列、分發(fā)器和事件通道,可以合為一體,整個軟件就分成事件代理和事件處理器兩部分。
優(yōu)點
缺點
事件驅(qū)動架構(gòu)在通信產(chǎn)品中應(yīng)用得也非常廣泛,典型的如狀態(tài)機處理。事件驅(qū)動架構(gòu)不適于做頂層架構(gòu),但適合做局部實現(xiàn),幾乎遍布在通信軟件的各個角落。
優(yōu)點
缺點
微核架構(gòu)的設(shè)計和開發(fā)難度較高,這就注定它在企業(yè)產(chǎn)品中用得不多,雖然它的優(yōu)點還不少。
現(xiàn)在開源的微服務(wù)框架比較多,如常用的有Spring Cloud、Dubbo、ServiceComb等等。
優(yōu)點
缺點
虛擬中間件又包含四個組件:
隨著Docker、Kubernetes等容器化技術(shù)的快速發(fā)展,上述關(guān)于云架構(gòu)描述有點陳舊了。當前最新的云原生架構(gòu),以Docker+Kubernetes為核心,尤其是容器編排Kubernetes 已經(jīng)成為事實上的行業(yè)標準。
云原生架構(gòu)圖的主要特征:
主要目標:
1. 讓開發(fā)人員聚焦業(yè)務(wù)邏輯的實現(xiàn),其他交給容器云平臺來完成;
2. 支持業(yè)務(wù)系統(tǒng)的快速迭代,支撐業(yè)務(wù)的快速變化和發(fā)展;
3. 構(gòu)建以共享服務(wù)體系為核心的業(yè)務(wù)中臺;
下面是小編針對某新零售企業(yè)設(shè)計的云原生架構(gòu)圖,以云和微服務(wù)架構(gòu)為基礎(chǔ)構(gòu)建云原生應(yīng)用,這里云可以是公有云、私有云、混合云等等。
以上是從不同的視角,對架構(gòu)進行了分類。實際應(yīng)用中,各種架構(gòu)并不是孤立的,可以根據(jù)業(yè)務(wù)環(huán)境和業(yè)務(wù)訴求,對各種架構(gòu)進行綜合和嫁接。每種架構(gòu)都有其優(yōu)點和缺點。優(yōu)點不必多說,缺點則幾乎都是通過工具工程(比如自動化發(fā)布工具、自動化測試等等)能力的方法來規(guī)避,工具工程對軟件架構(gòu)非常重要。
名稱欄目:軟件架構(gòu)入門-分層架構(gòu)、事件驅(qū)動、微服務(wù)架構(gòu)和云原生架構(gòu)
分享網(wǎng)址:http://jinyejixie.com/news/103819.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、網(wǎng)站設(shè)計公司、靜態(tài)網(wǎng)站、微信小程序、Google、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容