第一:介紹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服務化
項目功能部分截圖:
zookeeper、dubbo服務啓動
dubbo管控臺
REST服務平臺
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讀寫分離