日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

论软件架构风格及应用(改)

發布時間:2024/1/18 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 论软件架构风格及应用(改) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

摘要:

? ? ? ?本人于2018年初參與了某跨境電子商務公司的一個在線商城系統項目,該項目為公司進一步發展跨境電商業務和推廣品牌提供了全方位的軟件支撐。在該項目組中,我擔任系統架構師,主要負責整體架構設計與中間件的選型。本文以該在線商城系統為例,主要討論軟件架構風格在該項目中的具體應用。整個系統采用具有三層的層次式軟件架構設計思想,分別是應用層,服務層,數據層。在應用層的設計中,業務邏輯層采用了spring框架,將整個業務系統劃分為十余個子系統,視圖層采用了structs框架。服務層以 dubbo 服務框架為核心,數據層采用了 Mybatis 框架。層與層之間通過接口通信。整個系統開發工作歷時10個月。目前,該系統已經穩定運行近一年的時間,獲得用戶一致好評。

正文:

? ? ? ?當前我國跨境電子商務正處于高速發展階段。在發展初期,中小跨境電商企業通過入駐平臺能夠以較低的成本快速起步、推動商品銷售以及學習平臺的運營規范。但是從長遠角度看,企業只通過平臺進行經營會受到多方面的限制。一方面平臺規則發生變化時,企業必須在平臺規則范圍內做出改變。另一方面市場環境變幻莫測,單一運營方式無法獨立支撐企業生態。因此,某跨境電子商務公司為進一步發展跨境電商業務和推廣品牌,決定建立自營在線商城系統。本項目組全體成員共12人,我擔任系統架構設計師,主要負責整體架構設計,中間件選型和底層設計。該項目的架構工作于當年4月完成,整個項目耗時10個月,于2018年11月完成。

? ? ? ?在架構工作的開始階段,我們便意識到,架構風格定義了用于描述系統的術語表和一組指導構建系統的規則,是系統組織方式的慣用模式,可以為我們的項目提供架構級的通用解決方案,這種架構級的軟件重用可以極大提高我們的系統建設進程。軟件系統開發中常用的軟件架構風格有數據流風格,調用/返回風格,獨立構件風格,虛擬機風格,倉庫風格。數據流風格包括批處理序列與管道-過濾器,其每一步處理都是獨立,順序執行的,適用于簡單的線性流程。調用/返回風格包括主程序/子程序風格,面向對象風格,層次結構風格,其進一步降低系統耦合度,明確系統層次。獨立構件風格包括進程通信,事件驅動系統,其構件特點為軟件重用提供了支持。虛擬機風格包括解釋器風格,基于規則的系統風格,其具有良好靈活性,可自定義規則。倉庫風格包括數據庫系統風格,超文本系統風格,黑板系統風格,其以數據為中心。除此之外,還有 dssa,soa 等架構風格。

? ? ? ?在了解需求及架構評估后,我們決定在公司技術顧問的建議下,采用層次架構風格。為了解決公司原電商系統代碼冗余問題,我們進行了系統服務化,中間層不同的子系統提供不同的業務服務。最終,我們將系統分為應用層,服務層,數據層。應用層負責具體業務和視圖展示,如網站首頁,搜索輸入與結果展示等,其又分為視圖層與業務邏輯層。服務層負責為應用層提供通用服務支持,如賬戶管理服務,session管理服務等,其又細分為邏輯處理層與數據接口層。而數據層負責提供數據存儲訪問服務,如數據庫服務,緩存服務,文件服務,搜索服務等。接下來,我將分層次詳細介紹基于三層的層次體系結構的設計過程。

? ? ? ?首先是應用層。在應用層中,我們將系統根據應用進行水平劃分,這有助于代碼管理與維護。我們將系統劃分為前臺展示系統、后臺管理系統、物流系統、財務系統、即時通訊系統等十余個子系統,這里以后臺管理系統為例。后臺管理系統作為系統管理員的操作平臺,通過商品管理、會員管理、新聞管理、系統管理等核心模塊對整個電商平臺系統進行流程化統一管理。核心模塊需要調用服務層的服務作為支撐,如會員管理模塊需要調用服務層的會員信息服務接口。在應用層的設計中,視圖層采用structs這一基于J2EE平臺的MVC框架,主要通過Servlet與JSP技術實現,業務邏輯層采用spring這一基于IoC和AOP技術的框架,面向接口開發。另還用到了vue框架配合ssh實現前后臺的分離和交互,使得前臺和后臺可并行開發,提高開發效率。

? ? ? ?其次是服務層。隨著服務器規模的擴大,開發人員的增多,每個系統都變得復雜,存在大量的重復代碼。為解決這個問題,我們將代碼冗余的系統服務化,即系統之間增加一個服務層。首先從結構上來看,系統結構更為清晰,立體。穩定性上來看,許多散落的代碼成為了通用服務,并交付專門的團隊負責運維。出于對成本與技術成熟度的考慮,我們采用了阿里研發的dubbo服務框架。在服務框架實際操作時有兩個問題:服務框架自身的部署方式問題與實現服務框架所依賴的一些外部jar包與系統自身依賴的jar包之間的沖突。前者,我們通過Tomcat作為Web容器,而服務框架作為容器的一部分。后者,我們通過Java的ClassLoader將服務框架自身用的類與系統用的類進行隔離。

? ? ? ?最后是數據層。數據層涉及緩存,文件系統,數據庫,搜索系統等模塊。由于用戶對數據的訪問具有集中性,所以我們基于SpringCache與Redis實現了緩存機制。由于系統的業務特性,數據庫往往是讀操作遠多于寫操作,所以我們對數據庫進行了讀寫分離。數據訪問方面,我們采用基于ORM或類ORM接口的方式,數據庫使用基于ORM的Mybatis框架,再將框架包裝一層,用于實現數據層功能,對外暴露的仍然是Mybatis的接口。該方法開發高效,敏捷,成本較低,而且兼容性不錯。此外,我們采用solr作為數據層搜索引擎,數據訪問層物理部署采用Proxy方式等。

? ? ? ?最終項目成功上線,正常運行了近一年的時間,獲得用戶一致好評。但是在系統運行過程中,我也發現了這種架構存在的一些不足。首先是層次架構的多層調用降低了系統的性能,可以在層與層之間設立緩存機制來解決。還有我們采用的負載均衡算法是加權輪轉算法,過于簡單,常常出現資源分配不合理的現象,可以將算法改為加權最小連接數算法來解決。這些都是我在今后的系統設計和開發中需要注意與改進的地方,也警示我在以后的工作實踐中需要不斷地學習,提高自身素質和能力

總結

以上是生活随笔為你收集整理的论软件架构风格及应用(改)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。