javascript
六:Dubbo与Zookeeper、SpringMvc整合和使用
DUBBO與ZOOKEEPER、SPRINGMVC整合和使用
互聯(lián)網(wǎng)的發(fā)展,網(wǎng)站應(yīng)用的規(guī)模不斷擴(kuò)大,常規(guī)的垂直應(yīng)用架構(gòu)已無法應(yīng)對(duì),分布式服務(wù)架構(gòu)以及流動(dòng)計(jì)算架構(gòu)勢(shì)在必行,Dubbo是一個(gè)分布式服務(wù)框架,在這種情況下誕生的。現(xiàn)在核心業(yè)務(wù)抽取出來,作為獨(dú)立的服務(wù),使前端應(yīng)用能更快速和穩(wěn)定的響應(yīng)。
第一:介紹Dubbo背景
Dubbo是一個(gè)分布式服務(wù)框架,解決了上面的所面對(duì)的問題,Dubbo的架構(gòu)如圖所示:
主要核心部件:
Remoting: 網(wǎng)絡(luò)通信框架,實(shí)現(xiàn)了 sync-over-async 和 request-response 消息機(jī)制.
RPC: 一個(gè)遠(yuǎn)程過程調(diào)用的抽象,支持負(fù)載均衡、容災(zāi)和集群功能
Registry: 服務(wù)目錄框架用于服務(wù)的注冊(cè)和服務(wù)事件發(fā)布和訂閱
Dubbo工作原理
Provider
暴露服務(wù)方稱之為“服務(wù)提供者”。
Consumer
調(diào)用遠(yuǎn)程服務(wù)方稱之為“服務(wù)消費(fèi)者”。
Registry
服務(wù)注冊(cè)與發(fā)現(xiàn)的中心目錄服務(wù)稱之為“服務(wù)注冊(cè)中心”。
Monitor
統(tǒng)計(jì)服務(wù)的調(diào)用次調(diào)和調(diào)用時(shí)間的日志服務(wù)稱之為“服務(wù)監(jiān)控中心”。
(1) 連通性:
注冊(cè)中心負(fù)責(zé)服務(wù)地址的注冊(cè)與查找,相當(dāng)于目錄服務(wù),服務(wù)提供者和消費(fèi)者只在啟動(dòng)時(shí)與注冊(cè)中心交互,注冊(cè)中心不轉(zhuǎn)發(fā)請(qǐng)求,壓力較小
監(jiān)控中心負(fù)責(zé)統(tǒng)計(jì)各服務(wù)調(diào)用次數(shù),調(diào)用時(shí)間等,統(tǒng)計(jì)先在內(nèi)存匯總后每分鐘一次發(fā)送到監(jiān)控中心服務(wù)器,并以報(bào)表展示
服務(wù)提供者向注冊(cè)中心注冊(cè)其提供的服務(wù),并匯報(bào)調(diào)用時(shí)間到監(jiān)控中心,此時(shí)間不包含網(wǎng)絡(luò)開銷
服務(wù)消費(fèi)者向注冊(cè)中心獲取服務(wù)提供者地址列表,并根據(jù)負(fù)載算法直接調(diào)用提供者,同時(shí)匯報(bào)調(diào)用時(shí)間到監(jiān)控中心,此時(shí)間包含網(wǎng)絡(luò)開銷
注冊(cè)中心,服務(wù)提供者,服務(wù)消費(fèi)者三者之間均為長連接,監(jiān)控中心除外
注冊(cè)中心通過長連接感知服務(wù)提供者的存在,服務(wù)提供者宕機(jī),注冊(cè)中心將立即推送事件通知消費(fèi)者
注冊(cè)中心和監(jiān)控中心全部宕機(jī),不影響已運(yùn)行的提供者和消費(fèi)者,消費(fèi)者在本地緩存了提供者列表
注冊(cè)中心和監(jiān)控中心都是可選的,服務(wù)消費(fèi)者可以直連服務(wù)提供者
(2) 健狀性:
監(jiān)控中心宕掉不影響使用,只是丟失部分采樣數(shù)據(jù)
數(shù)據(jù)庫宕掉后,注冊(cè)中心仍能通過緩存提供服務(wù)列表查詢,但不能注冊(cè)新服務(wù)
注冊(cè)中心對(duì)等集群,任意一臺(tái)宕掉后,將自動(dòng)切換到另一臺(tái)
注冊(cè)中心全部宕掉后,服務(wù)提供者和服務(wù)消費(fèi)者仍能通過本地緩存通訊
服務(wù)提供者無狀態(tài),任意一臺(tái)宕掉后,不影響使用
服務(wù)提供者全部宕掉后,服務(wù)消費(fèi)者應(yīng)用將無法使用,并無限次重連等待服務(wù)提供者恢復(fù)
(3) 伸縮性:
注冊(cè)中心為對(duì)等集群,可動(dòng)態(tài)增加機(jī)器部署實(shí)例,所有客戶端將自動(dòng)發(fā)現(xiàn)新的注冊(cè)中心
服務(wù)提供者無狀態(tài),可動(dòng)態(tài)增加機(jī)器部署實(shí)例,注冊(cè)中心將推送新的服務(wù)提供者信息給消費(fèi)者
節(jié)點(diǎn)角色說明:
Provider: 暴露服務(wù)的服務(wù)提供方。
Consumer: 調(diào)用遠(yuǎn)程服務(wù)的服務(wù)消費(fèi)方。
Registry: 服務(wù)注冊(cè)與發(fā)現(xiàn)的注冊(cè)中心。
Monitor: 統(tǒng)計(jì)服務(wù)的調(diào)用次調(diào)和調(diào)用時(shí)間的監(jiān)控中心。
Container: 服務(wù)運(yùn)行容器。
調(diào)用關(guān)系說明:
0. 服務(wù)容器負(fù)責(zé)啟動(dòng),加載,運(yùn)行服務(wù)提供者。
1. 服務(wù)提供者在啟動(dòng)時(shí),向注冊(cè)中心注冊(cè)自己提供的服務(wù)。
2. 服務(wù)消費(fèi)者在啟動(dòng)時(shí),向注冊(cè)中心訂閱自己所需的服務(wù)。
3. 注冊(cè)中心返回服務(wù)提供者地址列表給消費(fèi)者,如果有變更,注冊(cè)中心將基于長連接推送變更數(shù)據(jù)給消費(fèi)者。
4. 服務(wù)消費(fèi)者,從提供者地址列表中,基于軟負(fù)載均衡算法,選一臺(tái)提供者進(jìn)行調(diào)用,如果調(diào)用失敗,再選另一臺(tái)調(diào)用。
5. 服務(wù)消費(fèi)者和提供者,在內(nèi)存中累計(jì)調(diào)用次數(shù)和調(diào)用時(shí)間,定時(shí)每分鐘發(fā)送一次統(tǒng)計(jì)數(shù)據(jù)到監(jiān)控中心。
內(nèi)置功能(只列了一部分功能)
1.用戶管理:用戶是系統(tǒng)操作者,該功能主要完成系統(tǒng)用戶配置。
2.機(jī)構(gòu)管理:配置系統(tǒng)組織機(jī)構(gòu)(公司、部門、小組),樹結(jié)構(gòu)展現(xiàn),可隨意調(diào)整上下級(jí)。
3.區(qū)域管理:系統(tǒng)城市區(qū)域模型,如:國家、省市、地市、區(qū)縣的維護(hù)。
4.菜單管理:配置系統(tǒng)菜單,操作權(quán)限,按鈕權(quán)限標(biāo)識(shí)等。
5.角色管理:角色菜單權(quán)限分配、設(shè)置角色按機(jī)構(gòu)進(jìn)行數(shù)據(jù)范圍權(quán)限劃分。
6.字典管理:對(duì)系統(tǒng)中經(jīng)常使用的一些較為固定的數(shù)據(jù)進(jìn)行維護(hù),如:是否、男女、類別、級(jí)別等。
7.操作日志:系統(tǒng)正常操作日志記錄和查詢;系統(tǒng)異常信息日志記錄和查詢。
8.連接池監(jiān)視:監(jiān)視當(dāng)期系統(tǒng)數(shù)據(jù)庫連接池狀態(tài),可進(jìn)行分析SQL找出系統(tǒng)性能瓶頸。
9.工作流引擎:實(shí)現(xiàn)業(yè)務(wù)工單流轉(zhuǎn)、在線流程設(shè)計(jì)器。
開發(fā)工具
1.Eclipse IDE:采用Maven項(xiàng)目管理,模塊化。
2.代碼生成:通過界面方式簡單配置,自動(dòng)生成相應(yīng)代碼,目前包括三種生成方式(增刪改查):單表、一對(duì)多、樹結(jié)構(gòu)。生成后的代碼如果不需要注意美觀程度,生成后即可用。
技術(shù)選型(只列了一部分技術(shù))
1、后端
服務(wù)框架:Dubbo、zookeeper、Rest服務(wù)
緩存:Redis、ehcache
消息中間件:ActiveMQ
負(fù)載均衡:Nginx
分布式文件:FastDFS
數(shù)據(jù)庫連接池:Alibaba Druid 1.0
核心框架:Spring framework
安全框架:Apache Shiro 1.2
視圖框架:Spring MVC 4.0
服務(wù)端驗(yàn)證:Hibernate Validator 5.1
布局框架:SiteMesh 2.4
工作流引擎:Activiti 5.15
任務(wù)調(diào)度:quartz 1.8.5
持久層框架:MyBatis 3.2
日志管理:SLF4J 1.7、Log4j
工具類:Apache Commons、Jackson 2.2、Xstream 1.4、Dozer 5.3、POI
2、前端
JS框架:JQuery 1.9。
CSS框架: Bootstrap 4 metronic
客戶端驗(yàn)證:JQuery Validation Plugin。
富文本:CKEcitor
文件管理:CKFinder
動(dòng)態(tài)頁簽:Jerichotab
數(shù)據(jù)表格:jqGrid
對(duì)話框:jQuery jBox
樹結(jié)構(gòu)控件:jQuery zTree
其他組件:Bootstrap 4 metronic
3、支持
服務(wù)器中間件:Tomcat 6、7、Jboss 7、WebLogic 10、WebSphere 8
數(shù)據(jù)庫支持:目前僅提供mysql數(shù)據(jù)庫的支持,但不限于數(shù)據(jù)庫,下個(gè)版本升級(jí)多數(shù)據(jù)源切換和數(shù)據(jù)庫讀寫分離: 如:Oracle、SqlServer、H2等
支持開發(fā)環(huán)境:Eclipse、MyEclipse、Ras、Idea等
經(jīng)典介紹:
源碼結(jié)構(gòu)
?
轉(zhuǎn)載于:https://www.cnblogs.com/NiceCui/p/7815138.html
總結(jié)
以上是生活随笔為你收集整理的六:Dubbo与Zookeeper、SpringMvc整合和使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python学习笔记-DNS域名轮循业务
- 下一篇: Memcached实战之复制----基于