互聯(lián)網(wǎng)電商行業(yè)的特點(diǎn)
分布式 , 高并發(fā) , 集群 , 海量數(shù)據(jù) 等等
那如何解決海量數(shù)據(jù)和高并發(fā)的問題呢?
1.dao 層
合理的表設(shè)計(jì)(盡量避免多表聯(lián)查 , 不做主外鍵約束)
高頻查詢的數(shù)據(jù) , 應(yīng)放入緩存 Redis 中
經(jīng)常模糊查詢的數(shù)據(jù)放到 solr
數(shù)據(jù)庫(kù)分布式部署 分庫(kù)分表
2.service 層
使用面向服務(wù)的開發(fā)方式 : SOA 把服務(wù)層做成 web 項(xiàng)目 , 給 web 層提供服務(wù) , 服務(wù)層之間數(shù)據(jù)交互操作消息隊(duì)列MQ
3.web 層
靜態(tài)頁(yè)面 , 瀏覽器緩存 , CDN 部署方案
什么是 SOA 呢?
SOA 是 Service-Oriented Architectrue 的首字母簡(jiǎn)稱,它是一種支持面向服務(wù)的架構(gòu)樣式 . 從服務(wù) , 基于服務(wù)開發(fā)和服務(wù)的結(jié)果來看 , 面向服務(wù)是一種思考方式 . 其實(shí) SOA 架構(gòu)更多應(yīng)用于互聯(lián)網(wǎng)項(xiàng)目的開發(fā) .
為什么要用 SOA ?
因?yàn)殡S著網(wǎng)站應(yīng)用的規(guī)模不斷擴(kuò)大 , 常規(guī)的垂直應(yīng)用架構(gòu)已經(jīng)無法應(yīng)對(duì) , 分布式服務(wù)架構(gòu)以及流動(dòng)計(jì)算架構(gòu)勢(shì)在必行 , 迫切需要一個(gè)治理系統(tǒng)確保架構(gòu)有條不紊的演進(jìn) .
Dubbox
Dubbox 是一個(gè)分布式服務(wù)框架 , 前身是阿里巴巴的 Dubbo
Dubbox 是用來干什么的?
Dubbox 提供高性能和透明化的 RPC 遠(yuǎn)程服務(wù)調(diào)用方案 , 以及 SOA 服務(wù)治理方案 .
如果沒有分布式的需求 , 其實(shí)是不需要使用的 .
Zookeeper
官方推薦使用 zookeeper 注冊(cè)中心 . 注冊(cè)中心 負(fù)責(zé)服務(wù)地址的注冊(cè)于查找 , 相當(dāng)于目錄服務(wù) , 服務(wù)提供者和消費(fèi)之只在啟動(dòng)時(shí)于注冊(cè)中心交互 , 注冊(cè)中心不轉(zhuǎn)發(fā)請(qǐng)求 , 壓力較小 .
1.服務(wù)層注冊(cè)通過 dubbo 把對(duì)象傳到 zookeeper 注冊(cè)中心
2.表現(xiàn)層通過 dubbo 從 zookeeper 注冊(cè)中心 中獲取對(duì)象
3.表現(xiàn)層使用獲得的代理對(duì)象遠(yuǎn)程調(diào)用服務(wù)層方法