Dubbo與Zookeeper、SpringMVC mybatis整合和使用(負載均衡、容錯) 實例

第一:介紹Dubbo背景html

大規模服務化以前,應用可能只是經過RMI或Hessian等工具,簡單的暴露和引用遠程服務,經過配置服務的URL地址進行調用,經過F5等硬件進行負載均衡。前端

(1) 當服務愈來愈多時,服務URL配置管理變得很是困難,F5硬件負載均衡器的單點壓力也愈來愈大。mysql

此時須要一個服務註冊中心,動態的註冊和發現服務,使服務的位置透明。linux

並經過在消費方獲取服務提供方地址列表,實現軟負載均衡和Failover,下降對F5硬件負載均衡器的依賴,也能減小部分紅本。ios

(2) 當進一步發展,服務間依賴關係變得錯蹤複雜,甚至分不清哪一個應用要在哪一個應用以前啓動,架構師都不能完整的描述應用的架構關係。算法

這時,須要自動畫出應用間的依賴關係圖,以幫助架構師理清理關係。sql

(3) 接着,服務的調用量愈來愈大,服務的容量問題就暴露出來,這個服務須要多少機器支撐?何時該加機器?數據庫

爲了解決這些問題,第一步,要將服務如今天天的調用量,響應時間,都統計出來,做爲容量規劃的參考指標。後端

其次,要能夠動態調整權重,在線上,將某臺機器的權重一直加大,並在加大的過程當中記錄響應時間的變化,直到響應時間到達閥值,記錄此時的訪問量,再以此訪問量乘以機器數反推總容量。緩存

 

第二:Dubbo的簡介

Dubbo是一個分佈式服務框架,解決了上面的所面對的問題,Dubbo的架構如圖所示:

節點角色說明:

Provider: 暴露服務的服務提供方。

Consumer: 調用遠程服務的服務消費方。

Registry: 服務註冊與發現的註冊中心。

Monitor: 統計服務的調用次調和調用時間的監控中心。

Container: 服務運行容器。

 

調用關係說明:

0. 服務容器負責啓動,加載,運行服務提供者。

1. 服務提供者在啓動時,向註冊中心註冊本身提供的服務。

2. 服務消費者在啓動時,向註冊中心訂閱本身所需的服務。

3. 註冊中心返回服務提供者地址列表給消費者,若是有變動,註冊中心將基於長鏈接推送變動數據給消費者。

4. 服務消費者,從提供者地址列表中,基於軟負載均衡算法,選一臺提供者進行調用,若是調用失敗,再選另外一臺調用。

5. 服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鐘發送一次統計數據到監控中心。

 

 

 Dubbo提供了不少協議,Dubbo協議、RMI協議、Hessian協議,咱們查看Dubbo源代碼,有各類協議的實現,如圖所示:

咱們以前沒用Dubbo以前時,大部分都使用Hessian來使用咱們服務的暴露和調用,利用HessianProxyFactory調用遠程接口

 

上面是參考了Dubbo官方網介紹,接下來咱們來介紹SpringMVC、Dubbo、Zookeeper整合使用。

 

第三:Dubbo與Zookeeper、SpringMVC整合使用

聲明:該框架面向企業的大型互聯網分佈式企業架構,後期會介紹linux上部署高可用集羣項目有願意瞭解框架技術或者源碼的朋友直接加Q(2137028325)一塊兒學習

歡迎你們前來學習瞭解jeesz大型分佈式企業架構源碼,具體諮詢請加Q:2137028325

關鍵字:Maven, Springmvc mybatis shiro Druid Restful,Dubbo ZooKeeper,Redis,FastDFS ,ActiveMQ,Keepalived,Nginx,Hudson,mysql讀寫分離

1.     項目核心代碼結構截圖特別提醒:開發人員在開發的時候能夠將本身的業務REST服務化或者Dubbo服務化
 

  項目功能部分截圖:

分佈式框架介紹 - kafkaee - kafkaee的博客

 

分佈式框架介紹 - kafkaee - kafkaee的博客

 

分佈式框架介紹 - kafkaee - kafkaee的博客

 

分佈式框架介紹 - kafkaee - kafkaee的博客

 

分佈式框架介紹 - kafkaee - kafkaee的博客

 

分佈式框架介紹 - kafkaee - kafkaee的博客

 

分佈式框架介紹 - kafkaee - kafkaee的博客
 

zookeeper、dubbo服務啓動 

分佈式框架介紹 - kafkaee - kafkaee的博客

 

分佈式框架介紹 - kafkaee - kafkaee的博客
 

dubbo管控臺 

分佈式框架介紹 - kafkaee - kafkaee的博客

 

分佈式框架介紹 - kafkaee - kafkaee的博客

 

分佈式框架介紹 - kafkaee - kafkaee的博客

 

分佈式框架介紹 - kafkaee - kafkaee的博客

 

分佈式框架介紹 - kafkaee - kafkaee的博客

 

分佈式框架介紹 - kafkaee - kafkaee的博客

 

分佈式框架介紹 - kafkaee - kafkaee的博客

 REST服務平臺

分佈式框架介紹 - kafkaee - kafkaee的博客

 

分佈式框架介紹 - kafkaee - kafkaee的博客

 

分佈式框架介紹 - kafkaee - kafkaee的博客

 

分佈式框架介紹 - kafkaee - kafkaee的博客

4.      平臺簡介
        Jeesz是一個分佈式的框架,提供項目模塊化、服務化、熱插拔的思想,高度封裝安全性的Java EE快速開發平臺。

       Jeesz自己集成Dubbo服務管控、Zookeeper註冊中心、Redis分佈式緩存技術、FastDFS分佈式文件系統、ActiveMQ異步消息中間件、Nginx負載均衡等分佈式技術

        使用Maven作項目管理,項目模塊化,提升項目的易開發性、擴展性

        以Spring Framework爲核心容器,Spring MVC爲模型視圖控制器,MyBatis爲數據訪問層, Apache Shiro爲權限受權層,Ehcahe對經常使用數據進行緩存,Activit爲工做流引擎等。

        前端集成Bootstrap4 metronic框架,UI響應式、扁平化佈局,適應全部PC、Pad、Anroid、ios 移動設備等。

       Jeesz主要定位於互聯網企業架構,已內置企業信息化系統的基礎 功能和高效的代碼生成工具,包括:系統權限組件、數據權限組件、數據字典組件、核心工具 組件、視圖操做組件、工做流組件、代碼生成等。採用分層設計、雙重驗證、提交數據安全編碼、密碼加密、訪問驗證、數據權限驗證。

       Jeesz目前包括如下模塊項目,後臺系統管理系統,RestFul獨立服務系統、Scheduler定時調度系統、內容管理(CMS)系統、在線辦公(OA)系統、個人待辦(Task服務)、個人收藏(Bookmark服務)。

        後臺管理系統包括企業組織架構(用戶管理、機構管理、區域管理)、菜單管理、角色權限管理、字典管理等功能;

        RestFul獨立提供標準Rest服務API,您能夠快速實現本身的業務,提供須要的服務;

        Quartz定時調度系統能夠動態配置您的任務規則等;

        內容管理(CMS)系統,包括內容管理,欄目管理、站點管理、公共留言、文件管理、前端網站展現等功能;

        在線辦公(OA)系統,主要提供簡單的流程實例。

       Jeesz提供了經常使用工具進行封裝,包括日誌工具、緩存工具、服務 器端驗證、數據字典、當前組織機構數據(用戶、機構、區域)以及其它經常使用小工具等。另外 還提供一個強大的在線 代碼生成 工具,此工具提供簡單的單表、一對多、樹結構功能的生成,若是對外觀要求不是很高,生成的功能就能夠用了。使用了Jeesz基礎框架,能夠提升快速開發效 率。

 

5.    內置功能(只列了一部分功能)
    1.用戶管理:用戶是系統操做者,該功能主要完成系統用戶配置。
    2.機構管理:配置系統組織機構(公司、部門、小組),樹結構展示,可隨意調整上下級。
    3.區域管理:系統城市區域模型,如:國家、省市、地市、區縣的維護。
    4.菜單管理:配置系統菜單,操做權限,按鈕權限標識等。
    5.角色管理:角色菜單權限分配、設置角色按機構進行數據範圍權限劃分。
    6.字典管理:對系統中常用的一些較爲固定的數據進行維護,如:是否、男女、類別、級別等。
    7.操做日誌:系統正常操做日誌記錄和查詢;系統異常信息日誌記錄和查詢。
    8.鏈接池監視:監視當期系統數據庫鏈接池狀態,可進行分析SQL找出系統性能瓶頸。
    9.工做流引擎:實現業務工單流轉、在線流程設計器。

 

6.    開發工具
    1.Eclipse IDE:採用Maven項目管理,模塊化。
    2.代碼生成:經過界面方式簡單配置,自動生成相應代碼,目前包括三種生成方式(增刪改查):單表、一對多、樹結構。生成後的代碼若是不須要注意美觀程度,生成後便可用。

 

7.    技術選型(只列了一部分技術)
    一、後端
        服務框架:Dubbo、zookeeper、Rest服務
        緩存:Redis、ehcache
        消息中間件:ActiveMQ
        負載均衡:Nginx
        分佈式文件:FastDFS
        數據庫鏈接池:Alibaba Druid 1.0
        核心框架:Spring framework
        安全框架:Apache Shiro 1.2
        視圖框架:Spring MVC 4.0
        服務端驗證:Hibernate Validator 5.1
        佈局框架:SiteMesh 2.4
        工做流引擎:Activiti 5.15
        任務調度:quartz 1.8.5
        持久層框架:MyBatis 3.2
        日誌管理:SLF4J 1.七、Log4j
        工具類:Apache Commons、Jackson 2.二、Xstream 1.四、Dozer 5.三、POI
    二、前端
        JS框架:JQuery 1.9。
        CSS框架: Bootstrap 4 metronic
        客戶端驗證:JQuery Validation Plugin。
        富文本:CKEcitor
        文件管理:CKFinder
        動態頁籤:Jerichotab
        數據表格:jqGrid
        對話框:jQuery jBox
        樹結構控件:jQuery zTree
        其餘組件:Bootstrap 4 metronic
    三、支持
        服務器中間件:Tomcat 六、七、Jboss 七、WebLogic 十、WebSphere 8
        數據庫支持:目前僅提供mysql數據庫的支持,但不限於數據庫,下個版本升級多數據源切換和數據庫讀寫分離: 如:Oracle、SqlServer、H2等
        支持開發環境:Eclipse、MyEclipse、Ras、Idea等

歡迎你們前來學習瞭解jeesz大型分佈式企業架構源碼,具體諮詢請加Q:2137028325

關鍵字:Maven, Springmvc mybatis shiro Druid Restful,Dubbo ZooKeeper,Redis,FastDFS ,ActiveMQ,Keepalived,Nginx,Hudson,MySQL讀寫分離

相關文章
相關標籤/搜索