宣告:本文為本人在軟考系統架構設計師備考期間的練手寫作,不保證內容的原創性與正確性,僅供參考,請勿照抄和用於學術**等正規場合,因不當使用產生後果一律自負。
前端web服務主要提供給使用者使用的介面,分為前置nginx負載均衡伺服器、前端**nginx集群。當使用者通過網路訪問系統時,首先會訪問到前置的nginx負載均衡伺服器,負載均衡伺服器會將請求**到前端**的nginx集群,前端**通過發起http請求來和後端互動,具體是通過ajax方式來呼叫後端rest api介面。使用者訪問**通過前置的nginx負載均衡伺服器來**到前端**集群,以起到將使用者請求進行分流的作用。當前端**集群中的部分服務發生故障時,系統仍可正常地對外提供服務。前置nginx負載均衡伺服器使用軟體反向**的方式來實現負載均衡,部署為路由模式,系統內部網路與外部網路分屬於不同的邏輯網路,以實現系統內部與外部網路的隔離。在負載均衡演算法的選擇上,使用最小連線法,每當使用者的請求來臨時,任務分發單元會將任務平滑分配給最小連線數的前端**節點,這樣的架構以廉價且透明的方式擴充套件了伺服器和網路的頻寬,可以大大提公升系統的併發量,同時保證**前端整體的穩定性和可靠性。
平台保障服務用以實現後端業務服務的基礎框架,包括api路由閘道器、服務註冊中心、服務監控元件。api閘道器收到前端的請求,不會直接呼叫後端的業務服務,而是首先會從服務註冊中心根據當前請求來獲取對應的服務配置,隨後通過服務配置再呼叫已註冊的服務。當後端服務存在多個例項時,將採取負載均衡的方式呼叫。服務註冊中心是整個後端服務架構體系的核心部分,由spring cloud的eureka元件來實現,專門提供服務的註冊和發現功能,涉及三種角色:服務提供者、服務消費者和服務註冊中心。api路由閘道器、所有業務服務,以及服務監控平台元件都註冊到服務註冊中心。通過服務註冊中心兩兩互相註冊、api路由閘道器向服務註冊中心註冊多個例項等方式,來實現後端整體服務的高可靠性。服務監控平台通過註冊到服務註冊中心,獲取所有註冊到服務註冊中心的後端業務服務,從而監控到所有後端業務服務的執行狀態資訊,最後收集並展示整個後端服務系統的執行狀態,更進一步保證整個後端的服務質量。
系統自2023年10月正式上線已執行一年有餘,在學校的日常教學考試和競賽培訓中投入使用,截至目前已有3000以上的學生使用者、評測了70000條以上的程式**,獲得了單位同事領導和學校教師們的一致好評。在開發和試執行過程中,主要遇到了兩個問題。一是跨域問題。oj系統前後端分離,前端通過ajax訪問後端服務。由於瀏覽器同源策略的限制,導致前端ui無法正常訪問不同埠和ip的後端服務。我們利用spring boot後端的cors跨域機制解決了該問題。二是評測機宕機問題。評測機服務需要執行使用者提交的**,但由於部分使用者短時間內提交了大量不安全**,導致所有評測機服務全部宕機。我們引入心跳機制、快照回滾機制,以及基於機器學習技術的預判斷機制,使評測服務宕機時能夠在10秒內自動重置恢復執行,最終解決了該問題。
實踐證明,oj系統專案能夠順利上線,並且穩定執行,與系統採用了合適的架構設計密不可分。經過這次面向服務的架構應用的方法和實施的效果後,我也看到了自己身上的不足之處,在未來還會不斷地更新知識,完善本系統的架構設計,使整個系統能夠更加好用,更有效地服務於高校師生。
論面向服務架構及其應用
摘要 soa定義 面向服務的體系結構 soa 是乙個元件模型,它將應用程式的不同功能單元 稱為服務 通過這些服務之間定義良好的介面和契約聯絡起來。介面是採用中立的方式進行定義的,它應該獨立於實現服務的硬體平台 作業系統和程式語言。這使得構建在各種這樣的系統中的服務可以以一種統一和通用的方式進行互動。...
論面向服務的架構及其應用
論面向服務的架構及其應用 摘要 傳統的架構在乙個完整的軟體包中將許多應用程式功能混合在一起,這種方式稱為 單一應用程式 這樣加大了系統的複雜性,增加了維護系統的成本,並且不能重用,soa將應用程式的不同功能單元進行拆分,服務建立後能用於多個應用和業務流程,並通過這些服務之間定義良好的介面和契約聯絡起...
論面向服務的架構及其應用
摘要 面向服務的架構 soa 是乙個元件模型,它將應用程式的不同功能單元 稱為服務 通過這些服務之間定義良好的介面和契約聯絡起來。介面是採用中立的方式進行定義的,它應該獨立於實現服務的硬體平台 作業系統和程式語言。這使得構建在各種各樣的系統中的服務可以以一種統一和通用的方式進行互動。soa是一種應用...