一種基于nginx負載均衡的dubbo分布式集群系統(tǒng)架構方法
【技術領域】
[0001]本發(fā)明涉及分布式集群系統(tǒng),特別涉及一種基于負載均衡技術的分布式集群系統(tǒng)的架構方法。
【背景技術】
[0002]在互聯(lián)網(wǎng)尚速發(fā)展的時代,大數(shù)據(jù)量、尚并發(fā)等是大型互聯(lián)網(wǎng)網(wǎng)站提及最多的。如何處理高并發(fā)帶來的系統(tǒng)性能問題,最終都會使用負載均衡機制。它是根據(jù)某種負載策略把請求分發(fā)到集群中的每一臺服務器上,讓整個服務器群來處理網(wǎng)站的請求。既保證服務的可用性,又保證響應足夠快,給用戶很好的體驗。其中nginx具有穩(wěn)定性高、功能強大、資源消耗低的特點,從其目前的市場占有而言,nginx大有與apache搶市場的勢頭,其中突出的一個特性就是其負載均衡功能。Nginx不但可以作為強大的web服務器,也可以作為一個反向代理服務器,而且nginx還可以按照調度規(guī)則實現(xiàn)動態(tài)、靜態(tài)頁面的分離,可以按照輪詢、ip哈希、URL哈希、權重等多種方式對后端服務器做負載均衡,同時還支持后端服務器的健康檢查。
[0003]dubbo服務框架可以使得java分布式系統(tǒng)之間進行解耦,使用一個服務注冊中心來統(tǒng)一管理服務的信息,服務提供者提供注冊中心進行注冊,而服務消費者可以透明地訂閱和消費服務。dubbo是一個分布式服務框架,以及SOA治理方案。其功能主要包括:高性能N1通訊及多協(xié)議集成,服務動態(tài)尋址與路由,軟負載均衡與容錯,依賴分析與降級等,是一個靈活性和擴展性非常好的服務管理框架。
[0004]集群技術是構建高性能網(wǎng)站架構的重要手段,在網(wǎng)站承受高并發(fā)訪問壓力的同時,還需要從海量數(shù)據(jù)中查詢出滿足條件的數(shù)據(jù),并快速響應,必然要將數(shù)據(jù)進行切片,把數(shù)據(jù)根據(jù)某種規(guī)則放入多個不同的服務器節(jié)點,來降低單節(jié)點服務器的壓力。Redis是一個開源,先進的key-value存儲,并用于構建高性能,可擴展的Web應用程序的完美解決方案。Redis具有執(zhí)行速度非常快、支持豐富的數(shù)據(jù)類型、操作都是原子性及多功能實用工具等優(yōu)勢。
【發(fā)明內容】
[0005]本發(fā)明的目的是為了通過構建一種基于nginx負載均衡的dubbo分布式集群系統(tǒng),實現(xiàn)一種高性能的web服務架構系統(tǒng),對服務器反向代理加速,限制IP訪問,使用dubbo框架對系統(tǒng)進行解耦,增強系統(tǒng)的健壯性,同時通過redis集群對數(shù)據(jù)進行緩存,提高系統(tǒng)的響應速度,通過這些優(yōu)化來提高系統(tǒng)的性能,增加網(wǎng)絡吞吐量,提升系統(tǒng)的負載能力。
[0006]為達到上述目的,本發(fā)明提供一種基于nginx負載均衡的dubbo分布式集群系統(tǒng)架構方法,其特征在于,包括如下步驟:
[0007]步驟一、搭建開發(fā)環(huán)境,包括安裝JDK1.8、配置JAVA環(huán)境變量、安裝開發(fā)工具IntelliJ IDEA 14.0、配置MAVEN及安裝Redis;
[0008]步驟二、設計系統(tǒng)的架構,使用nginx實現(xiàn)負載均衡,使用redis實現(xiàn)集群訪問,使用dubbo實現(xiàn)服務提供者與消費者分離;
[0009]步驟三、提供者提供dubbo服務配置在Provider.xml文件中并注冊在zookeeper注冊中心,通過Spring applicat1nContext.xml文件載入,服務消費者在Consumer.xml中配置需要消費的接口;
[0010]步驟四、以war包方式部署系統(tǒng)到服務器,瀏覽器或移動App訪問系統(tǒng)時,利用nginx實現(xiàn)負載均衡,采用權重策略分發(fā)服務。
[0011]優(yōu)選地,使用redis進行集群訪問時,數(shù)據(jù)庫采用MySQL。
[0012]具體地,步驟三包括:將服務提供者所包括的服務的接口全路徑配置在dubbo服務提供者配置文件Provider.xml中進行注冊,并在Provider.xml中配置好注冊中心地址、端口號以及超時間隔,通過Spring的容器文件ap plicat1n Context, xml將提供者Provider.xml加載使得系統(tǒng)提供者接口暴露出去。
[0013]具體地,所述服務提供者提供的服務包括應用插件、用戶中心、代理服務及容器服務。
[0014]具體地,服務消費者在Consumer.xml中配置需要消費的接口包括:確定系統(tǒng)的服務消費者,,消費者取得服務提供者提供的服務將接口暴露出去,供移動端或前端使用,消費者在Consumer, xml中配置消費者要消費的接口的全路徑并通過Spr ing容器applicat1nContext.xml 加載。
[0015]具體地,架構過程中,通過文件服務器進行文件上傳。
[0016]本發(fā)明的有益效果是:本發(fā)明提及的一種基于nginx負載均衡的dubbo分布式集群架構系統(tǒng),可以實現(xiàn)一種高性能、高并發(fā)的分布式服務,并且系統(tǒng)使用基于zookeeper注冊中心的提供者-消費者模式降低系統(tǒng)耦合度,能使系統(tǒng)更加健壯。
【附圖說明】
[0017]圖1為實施例的提供者-消費者結構關系圖解;
[0018]圖2為實施例的基于nginx負載均衡的dubbo分布式集群系統(tǒng)的結構示意圖。
【具體實施方式】
[0019]以下對本發(fā)明技術方案作進一步詳細描述。
[°02°]本發(fā)明提出的構建一種基于nginx負載均衡的dubbo分布式集群系統(tǒng)的架構方法,包括如下步驟:
[0021]步驟一、搭建系統(tǒng)開發(fā)環(huán)境,包括:
[0022](I)安裝JDKl.8,配置JAVA環(huán)境變量;
[0023](2)安裝開發(fā)工具IntelliJ IDEA 14.0;
[0024](3)配置 MAVEN;
[0025](4)安裝 Redis;
[0026]步驟二、進行具體的開發(fā)工作,設計系統(tǒng)的架構:
[0027](I)設計系統(tǒng)架構,整個系統(tǒng)使用dubbo服務注冊中心進行解耦;
[0028](2)使用redis進行緩存,數(shù)據(jù)庫采用MySQL;
[0029](3)持久層使用mybatis,接口暴露使用resteasy;
[0030](4)項目采用war包方式部署,系統(tǒng)運行使用tomcat作為WEB服務器;
[0031](5)服務器采用nginx實現(xiàn)負載均衡、IP限制等;
[0032]步驟三、確定系統(tǒng)的服務提供者,系統(tǒng)可以提供一些服務,如應用插件、用戶中心、代理服務、容器服務等。將這些提供者的接口全路徑配置在dubbo服務提供者配置文件Provider.xml中進行注冊,并在Provider.xml中配置好注冊中心地址、端口號以及超時間隔,通過Spr ing的容器文件applicat1nContext.xml將提供者Provider.xml加載使得系統(tǒng)提供者接口暴露出去;
[0033]步驟四、確定系統(tǒng)的服務消費者,系統(tǒng)存著一些消費者,消費者取