999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

分布式論壇系統(tǒng)解決方案的設計

2021-10-09 07:31:41張娜白金峰
軟件工程 2021年10期

張娜 白金峰

摘? 要:當今互聯(lián)網(wǎng)應用與服務的主要問題就是如何支撐龐大的用戶請求數(shù)量及并行處理海量數(shù)據(jù)。本文在詳細調(diào)研了目前論壇系統(tǒng)處理高并發(fā)請求和海量數(shù)據(jù)的解決方案后,針對論壇系統(tǒng)的用戶和服務特性,設計了一套分布式論壇系統(tǒng)的解決方案。該系統(tǒng)基于Spring Cloud(用于構(gòu)建微服務開發(fā)的框架集合)微服務架構(gòu),為提升用戶體驗,采用了前后端分離的B/S(瀏覽器/服務器)模式;極大地提升了處理并發(fā)請求的能力,并且方便管理員對系統(tǒng)和內(nèi)容進行管理;拓展性強,可用性高,運行穩(wěn)定,使用簡單,能夠滿足論壇用戶和管理者的需求。

關鍵詞:分布式;Spring Cloud;微服務;論壇系統(tǒng)

中圖分類號:TP391? ? ?文獻標識碼:A

Design of Distributed Forum System Solution

ZHANG Na, BAI Jinfeng

(Dalian Neusoft University of Information, Dalian 116023, China)

zhangna@neusoft.edu.cn; baijinfeng1202@126.com

Abstract: Nowadays, a main problem of Internet applications and services is how to support the huge number of user requests and to process the massive data at the same time. After a detailed investigation of solutions to handling high concurrent requests and massive data for the current forum system, this paper proposes to design a set of distributed forum system solutions according to users and service characteristics of the forum system. The system is based on the Spring Cloud (a framework collection for microservice development) Microservice Architecture. In order to improve user experience, a B/S (browser/server) model that separates the front and back ends is adopted. The system greatly improves the ability of processing concurrent requests, and facilitates administrators to manage the system and contents. With its strong expansibility, high availability, stable operation and user-friendliness, the system can meet the needs of forum users and administrators.

Keywords: distributed; Spring Cloud; microservice; forum system

1? ?引言(Introduction)

隨著當今計算機技術的快速發(fā)展,互聯(lián)網(wǎng)應用與服務最主要的問題就是如何處理海量的數(shù)據(jù)和支撐數(shù)以百萬計的用戶。目前分布式計算系統(tǒng)十分火爆,各種各樣的分布式架構(gòu)也層出不窮,但解決云計算工程中實際具體問題的論文和研究成果依然較少。

本文提出的分布式論壇系統(tǒng)主要解決兩大問題:一是分布式技術;二是論壇系統(tǒng)的功能可用性。眾所周知,目前Web服務架構(gòu)中比較火的技術就是微服務+分布式部署結(jié)構(gòu)[1],通過該結(jié)構(gòu)可以明顯地改善系統(tǒng)的性能和可用性,所以本論文的重點研究方向之一就是如何架設微服務+分布式系統(tǒng),以及解決分布式系統(tǒng)中容易遇到的問題。除此之外,分布式系統(tǒng)的功能開發(fā)方式與傳統(tǒng)結(jié)構(gòu)系統(tǒng)的功能開發(fā)方式不同,開發(fā)者還需要了解如何將服務進行拆分,通過模塊的方式實現(xiàn)系統(tǒng)的功能并且保證系統(tǒng)功能可用性。分布式論壇系統(tǒng)適用于用戶量較大、每秒請求并發(fā)量較高和數(shù)據(jù)量較大的場景,它不僅可以優(yōu)化用戶體驗,還可以減輕單一服務實例的負載。

2? ?系統(tǒng)需求(System requirements)

論壇分為用戶端和管理員端。如圖1所示為用戶端,用戶在未登錄之前可以瀏覽板塊、帖子,回復和瀏覽其他用戶主頁;若用戶沒有賬號可以進行注冊;用戶登錄后除可以進行未登錄之前的操作外,還可以收藏帖子、發(fā)表新帖或者回復帖子、點贊、關注用戶、修改個人信息和簽到等。

管理員端功能用例如圖2所示,管理員登錄系統(tǒng)后,可以查看當前用戶端的信息,同時還可以對板塊、帖子、回復進行管理,對用戶進行封禁和重置密碼等操作;管理員還可以向系統(tǒng)中添加新的管理員賬戶來幫助自己管理系統(tǒng),同時可以看到自己和其他管理員的操作記錄,若想要收回其他管理員的權限,則可以停用某個管理員賬戶,同時也支持永久收回賬戶(刪除賬戶)。

同時,系統(tǒng)還有一些非用戶性功能,例如定期收集在線用戶數(shù)量,收集每日訪問量、每日新帖發(fā)表量等,如圖3所示。

3? ?系統(tǒng)設計(System design)

3.1? ?技術路線

系統(tǒng)采用基于B/S架構(gòu)的前后端分離技術,前后端的通信使用HTTP協(xié)議,數(shù)據(jù)格式使用JSON。前端使用開放框架Vue.js,通過Vue.js將頁面分為若干個組件,組件之間可以通信,當有數(shù)據(jù)變化時,只更新相應的組件。后端框架使用Spring Boot,通過此框架可以迅速搭建應用環(huán)境和進行開發(fā),提升開發(fā)效率。

Spring Cloud[2]是一個包含了分布式系統(tǒng)全部解決方案的技術棧,包括分布式的注冊中心、服務熔斷監(jiān)控、服務降級、路由網(wǎng)關、服務間調(diào)用等。Spring Cloud通過Spring Boot技術來實現(xiàn),所以在分布式系統(tǒng)的集成上選用Spring Boot架設微服務組件,使用Spring Cloud技術來進行集成是非常合適的。Cloud Config用來進行配置管理,通過Cloud Config可以將每個微服務組件的配置集中管理起來,避免配置過于分散,方便管理和修改。

RabbitMQ[3]是一款消息隊列中間件,該中間件可以將服務進行解耦,并且可以使兩個微服務異步完成一個任務。系統(tǒng)使用Redis作為緩存服務器,使用MyBatis作為數(shù)據(jù)庫訪問層,通過MyCat進行負載均衡分發(fā),使數(shù)據(jù)庫連接請求均勻地分發(fā)到每個數(shù)據(jù)庫上面。

3.2? ?系統(tǒng)架構(gòu)

(1)整體架構(gòu)

系統(tǒng)整體結(jié)構(gòu)如圖4所示。前端Web服務器使用Nginx進行內(nèi)容分發(fā)。后端使用微服務分布式集群[4]的方式:Gateway為后端應用的入口,負責將請求分發(fā)給相應的微服務模塊;Eureka中注冊了集群中全部實例信息,方便實例間進行調(diào)用;CONFIG為集群提供配置服務,管理著集群中每一個應用的配置信息;Dash Board用來收集集群的健康信息,繪制集群負載曲線圖,方便運維人員實時關注集群的運行狀態(tài);Spring Boot Admin負責管理集群中每一個微服務模塊的資源用量,如內(nèi)存消耗、線程池大小、連接數(shù)量等;集群內(nèi)的微服務模塊使用內(nèi)置的Tomcat作為容器,使用Feign和RabbitMQ進行服務間的調(diào)用與重試。數(shù)據(jù)方面,系統(tǒng)使用MySQL集群提供數(shù)據(jù)庫服務,MySQL集群通過主從復制的方式和分庫的方式提高系統(tǒng)的可用性和數(shù)據(jù)吞吐量;同時系統(tǒng)還采用Redis集群作為緩存服務器,對于一些變化較少而訪問量較大的數(shù)據(jù)進行緩存處理,從而減輕數(shù)據(jù)庫的壓力,提升系統(tǒng)運行效率。

(2)節(jié)點集群

多服務節(jié)點的分布式模式如圖5所示。系統(tǒng)中某一微服務的節(jié)點可以為多個,它們對外部顯示仍為一個服務,系統(tǒng)進行調(diào)用時會自動進行負載均衡,選取節(jié)點中負載最小的實例進行調(diào)用,這樣搭建的集群系統(tǒng)吞吐量高,可以承受大量的并發(fā)請求,并且系統(tǒng)可用性也大大提高:即使系統(tǒng)中某一實例的節(jié)點宕機,其他節(jié)點仍能提供服務,當Eureka檢測到服務宕機后,就會將其從注冊中心中剔除,防止調(diào)用失敗。

(3)緩存架構(gòu)

緩存是提高系統(tǒng)吞吐量和減輕數(shù)據(jù)庫壓力的重要措施,本系統(tǒng)為了保證緩存的可用性采用了Redis Cluster的Redis集群模式[5],選取了四個Redis節(jié)點,兩個主節(jié)點,兩個從節(jié)點,當需要加入緩存時,通過哈希算法對KEY進行計算,然后存到對應的緩存容器中。當Redis Cluster中某一個主節(jié)點由于某種原因宕機時,其后備的從節(jié)點會迅速升級為主節(jié)點并繼續(xù)提供服務,如圖6所示。

3.3? ?數(shù)據(jù)庫設計

通過分析系統(tǒng)業(yè)務需求,系統(tǒng)的數(shù)據(jù)庫設計如圖7所示。

3.4? ?對象設計

本系統(tǒng)后端使用三層架構(gòu)進行設計,Controller負責攔截請求路徑,請求數(shù)據(jù)與響應數(shù)據(jù)的綁定,驗證數(shù)據(jù)合法性,調(diào)用Service進行業(yè)務處理;Service主要負責業(yè)務邏輯,對請求數(shù)據(jù)進行處理,將處理后的結(jié)果返回給Controller或者存入數(shù)據(jù)庫;Dao層是實體數(shù)據(jù)訪問層,主要負責對持久化數(shù)據(jù)的增刪改查。在此基礎上,還加入了微服務之間進行訪問的Client、消息中間件RabbitMQ和緩存中間件Redis,Client主要用來與其他微服務進行通信,傳輸和獲取業(yè)務數(shù)據(jù);Rabbit用來在多個服務之間傳遞消息和進行失敗業(yè)務的重試;Redis用來對熱點數(shù)據(jù)進行緩存和分布式session管理。

3.5? ?控制流程設計

(1)前端控制流程

用戶在頁面上點擊按鈕或切換頁面時會觸發(fā)相應的事件,在State中對應的Action就會產(chǎn)生動作,將請求數(shù)據(jù)包裝好,通過Ajax發(fā)送HTTP請求。請求到達Nginx服務器,由Nginx進行反向代理[6],通過負載均衡算法發(fā)送給后端服務器網(wǎng)關,后端服務器處理請求。當后端服務器處理完畢后,將請求通過網(wǎng)關返回給Nginx,Nginx再將HTTP響應返回給Ajax,Ajax將響應體分解,取出需要的部分返回給Action,最后Action將數(shù)據(jù)綁定到指定組件上。

(2)后端控制流程

當Gateway接收到請求后,會對請求進行校驗,包括請求頭校驗、數(shù)據(jù)合法性校驗、用戶權限校驗等,對不符合標準的請求不予放行,最后Gateway會將過濾后的請求通過路由的方式分發(fā)到每一個微服務上,微服務對請求進行處理[7],通過消息中間件RabbitMQ進行消息分發(fā)和失敗任務重試。部分請求可能需要緩存的支持,它們可以從緩存集群Redis Cluster中獲取數(shù)據(jù)和更新緩存。如果需要對持久化數(shù)據(jù)進行增刪改查操作,微服務可以通過MyCat進行路由分發(fā),到MySQL集群中相應的數(shù)據(jù)庫中操作數(shù)據(jù)。當微服務將業(yè)務邏輯處理完畢后,將響應消息響應給網(wǎng)關,網(wǎng)關會對響應中的敏感數(shù)據(jù)進行加密,然后返回給調(diào)用方。

3.6? ?異常處理設計

一個健壯的系統(tǒng)應該對業(yè)務邏輯異常或者其他一些常見的異常有著可應對的處理方式。本系統(tǒng)將系統(tǒng)內(nèi)異常分為應用程序異常、業(yè)務處理異常、未授權異常、資源未找到異常、遠程調(diào)用權限不足異常、參數(shù)異常、遠程服務異常共七種可預見異常。

4? ?系統(tǒng)實現(xiàn)(System implementation)

4.1? ?核心功能實現(xiàn)

系統(tǒng)的核心功能[8]依據(jù)系統(tǒng)設計方案,采用所選技術路線完全可以實現(xiàn),由于本文的重點在于分布式論壇系統(tǒng)解決方案的設計,因此不再給出具體編碼內(nèi)容和實現(xiàn)截圖。

4.2? ?分布式功能實現(xiàn)

(1)配置集中管理

由于系統(tǒng)采用分布式結(jié)構(gòu),如果每個服務的配置文件都由自己攜帶,配置文件過于分散,不利于管理和修改。為了解決這些問題,系統(tǒng)將所有配置文件集中在一起,使用Git進行版本控制,便于修改和管理。當每一個微服務模塊啟動時,通過指定的應用名稱和配置文件名稱,從配置服務器直接拉取其所需的配置即可。

(2)代碼自動編譯、打包

系統(tǒng)的代碼和jar包依賴由maven進行管理,故可以通過maven命令進行編譯和打包處理。

(3)自動化集群啟動

集群支持自動化啟動,通過腳本命令直接啟動服務,啟動時僅需要指定配置文件即可。

(4)系統(tǒng)健康監(jiān)視

為了保證系統(tǒng)健康運行,項目中加入了集群監(jiān)視功能,主要監(jiān)視內(nèi)容為接口負載情況、微服務健康狀態(tài)、數(shù)據(jù)庫連接數(shù)、微服務線程池運行線程數(shù)、內(nèi)存使用率等關鍵指標。

5? ?系統(tǒng)測試(System test)

5.1? ?功能與非功能測試

系統(tǒng)使用迭代模式進行開發(fā),在模塊開發(fā)過程中進行了業(yè)務測試、單元測試,在模塊間整合時進行了集成測試和點對點測試,最后在整個系統(tǒng)完成后又進行了全面的功能測試,同時對系統(tǒng)性能進行了壓力測試。

發(fā)帖功能主要測試系統(tǒng)對用戶做出操作是否能給予正確的響應和提示;點贊功能主要測試用戶點贊記錄是否并發(fā)操作冪等性;關注用戶功能主要的測試點是并發(fā)冪等性和關注、取消關注順序問題;刪除帖子功能的主要測試點為當管理員刪除帖子后,帖子的評論、用戶收藏、評論通知等信息是否會同步刪除。

性能測試采用分布式集群方式進行,業(yè)務節(jié)點均為兩個節(jié)點,非業(yè)務節(jié)點均為一個節(jié)點。集群測試測試了單一節(jié)點模式下服務宕機后的服務情況和分布式模式下節(jié)點宕機后的服務情況。

5.2? ?測試結(jié)果

系統(tǒng)共計設計了功能性測試用例37 個,成功執(zhí)行37 個;設計了非功能性測試11 個,成功執(zhí)行11 個;設計了性能測試共10 項,在兩個服務節(jié)點的狀態(tài)下,服務成功率達99%,系統(tǒng)資源占用基本穩(wěn)定,沒有內(nèi)存泄露和CPU占用率過高的情況;設計集群測試用例2 個,成功執(zhí)行2 個。

6? ?結(jié)論(Conclusion)

本文提出的分布式論壇系統(tǒng)與傳統(tǒng)結(jié)構(gòu)的論壇系統(tǒng)相比,能承載更高的用戶量,系統(tǒng)可用性也大大提高,不會因為某一個點出現(xiàn)問題而導致整個系統(tǒng)不可訪問。本系統(tǒng)還具備強穩(wěn)定性、高容災性、基于云配置、完善的異常捕獲與處理、數(shù)據(jù)更安全、界面更簡潔等優(yōu)勢。

參考文獻(References)

[1] 李春陽,劉迪,崔蔚,等.基于微服務架構(gòu)的統(tǒng)一應用開發(fā)平臺[J].計算機系統(tǒng)應用,2017,26(4):43-48.

[2] 王方旭.基于Spring Cloud和Docker的微服務架構(gòu)設計[J].中國信息化,2018(3):53-55.

[3] 徐震,焦文彬.RabbitMQ小消息確認機制優(yōu)化[J].計算機系統(tǒng)應用,2018,27(3):252-257.

[4] 陳樂,余粟,王盟.基于分布式集群的高可用日志分析系統(tǒng)的設計[J].中國電子科學研究院學報,2020,15(5):420-426.

[5] 張杰,劉凱,周立軍.采用Redis高并發(fā)應用系統(tǒng)設計與實現(xiàn)方法[J].計算機與數(shù)字工程,2020,48(5):1222-1226.

[6] 戴偉,馬明棟,王得玉.基于Nginx的負載均衡技術研究與優(yōu)化[J].計算機技術與發(fā)展,2019,29(3):77-80.

[7] STEFANO T. Architect blockchain applications as microservices[J]. MSDN Magazine, 2018, 33(9):24-30.

[8] 高云峰.對基于Java的BBS論壇系統(tǒng)的設計與實現(xiàn)分析[J].電子技術與軟件工程,2018(04):202.

作者簡介:

張? ?娜(1978-),女,碩士,教授.研究領域:Java Web前后端開發(fā).

白金峰(1997-),男,本科生.研究領域:分布式系統(tǒng)開發(fā).

主站蜘蛛池模板: 亚洲天堂网在线播放| 玖玖精品在线| 久热re国产手机在线观看| 国产精品亚洲天堂| 国产成人精品亚洲日本对白优播| 国产自在自线午夜精品视频| 浮力影院国产第一页| 国产综合另类小说色区色噜噜| 国产一在线| a级高清毛片| 在线无码av一区二区三区| 91午夜福利在线观看| 欧洲一区二区三区无码| 91黄色在线观看| 黄色网页在线观看| 免费国产一级 片内射老| 国产精品久久精品| 在线免费看片a| 国产人前露出系列视频| 美女潮喷出白浆在线观看视频| 中文字幕亚洲精品2页| 日本午夜精品一本在线观看| 在线中文字幕日韩| 欧美中文字幕在线二区| 久久国产高潮流白浆免费观看| 四虎国产永久在线观看| 免费国产高清视频| 91精品免费久久久| 久久99热这里只有精品免费看| 亚洲精品福利视频| 亚洲熟女中文字幕男人总站| 欧美色香蕉| 99久久国产综合精品2023| 91黄视频在线观看| 熟妇丰满人妻| 中文字幕日韩丝袜一区| 一级毛片在线播放| 亚洲另类第一页| 国产黑丝视频在线观看| 制服丝袜国产精品| 色天天综合久久久久综合片| 久久a级片| 国产在线视频导航| 国产成人亚洲无码淙合青草| 久久不卡精品| 国产精品视频公开费视频| 青青草原国产| 欧美国产日产一区二区| 国产又粗又猛又爽视频| 欧美一级特黄aaaaaa在线看片| 一本色道久久88| 国产91全国探花系列在线播放| 精品久久久久无码| 中文国产成人精品久久一| 欧美福利在线| 国产第八页| 国产成人1024精品下载| 青青草国产一区二区三区| 香蕉国产精品视频| 中文字幕亚洲乱码熟女1区2区| 亚洲男人天堂网址| 波多野结衣视频一区二区| 久久久久国色AV免费观看性色| 熟妇丰满人妻| 婷五月综合| 亚洲美女视频一区| 亚洲黄色网站视频| 亚洲最新网址| 国产精品粉嫩| 日韩欧美国产成人| 精品自窥自偷在线看| 青草视频免费在线观看| 91精品在线视频观看| 午夜在线不卡| 亚洲无线视频| 米奇精品一区二区三区| 日韩无码一二三区| 久久这里只精品国产99热8| 91精品专区国产盗摄| 国产人成网线在线播放va| 国产福利不卡视频| 四虎影视8848永久精品|