? CPU:處理器
? Memory:內存
? IO:外存
? MultiCore:多核心
? LocalDisk:本地磁盤(pán)
? Networker:網(wǎng)絡(luò ),網(wǎng)絡(luò )存儲
? RDMA:遠程內存直接訪(fǎng)問(wèn)
? NUMA:分布式系統CPU和內存進(jìn)行整合,對內存進(jìn)行捆綁,是硬件層級的,(相似與ThreadLocal,將數據和實(shí)時(shí)運行線(xiàn)程綁定到一起),網(wǎng)卡直接繞過(guò)CPU共享內存,速度非???/p>
?
? 桌面級八核心十六線(xiàn)程CPU于2014年誕生,2015年Intel預計發(fā)布18核心桌面級CPU
? NUMA在大中型系統上一直非常盛行,NUMA能很好提升系統吞吐能力,特別對于Java以及數據這樣占用大內存的系統,但一直以來(lái)沒(méi)有得到 DBA 們足夠的重視、 Java領(lǐng)域也很少有人研究
? RDMA(遠程內存直接訪(fǎng)問(wèn),網(wǎng)絡(luò )傳輸協(xié)議,類(lèi)似TCP,更低延遲)是超高性能計算UHPC的重要基礎之一,而Direct Socket Protocol (SDP)作為RDMA的傳輸協(xié)議已經(jīng)在很多關(guān)鍵領(lǐng)域取代了TCP,Java7也正式開(kāi)始支持SDP,跨入了UHPC的領(lǐng)地。
? IO方面,萬(wàn)兆網(wǎng)正在崛起,萬(wàn)兆網(wǎng)的ISCSI存儲, 單通道可達到500MB/s, 每秒500,000個(gè)IO能力,而目前主流的SSD硬盤(pán)的速度是400-550MB/s。
? ===>虛擬化,大勢所趨
?
? 兩個(gè)核心的CPU,里面有自己的本地線(xiàn)程,內存塊整個(gè)分為兩塊,Memory1和Memory2,每個(gè)內存核心綁定它的內存和IO的PC卡劃成兩個(gè)Domain域,這兩個(gè)通過(guò)總線(xiàn)通信,這是一個(gè)典型的分布式系統,將計算能力和內存進(jìn)行了分布,BUS相當于總線(xiàn),這是一個(gè)經(jīng)典的分布式架構,它把軟件架構思想用到了硬件中
RMDA可以用InfiniBand也可以用專(zhuān)用網(wǎng)卡,SDP通信的時(shí)候應用端程序把數據寫(xiě)到緩沖區,緩沖區直接到網(wǎng)卡傳輸出去,OS旁路,CPU就是旁路,CPU不涉及到數據的傳輸,比如說(shuō)現在要傳輸一個(gè)流量,OS不會(huì )產(chǎn)生傳輸的中斷,應用緩沖區放到OS中,這是一個(gè)零拷貝的技術(shù),所以它延遲非常低, 它把OS、CPU旁路了,所以響應性能是非常高的? 這個(gè)技術(shù)會(huì )在大數據時(shí)代發(fā)揮非常重要的作用,這種情況下,如果有硬件大的要求,那么實(shí)際網(wǎng)絡(luò )傳輸會(huì )很快從一個(gè)節點(diǎn)到另一個(gè)節點(diǎn),那么它的計算會(huì )加快很多
? 這種硬盤(pán)把CPU、內存、網(wǎng)卡綁定在自身上,這種硬盤(pán)已經(jīng)構成了一個(gè)小型的計算機,而且直接提供了因特網(wǎng)的傳輸節點(diǎn),這樣就可以在1U和2U的機架里面放很多塊硬盤(pán),很多小塊密集在一起就構成了一個(gè)大的密集存儲,它是一個(gè)嵌入的定制系統,它的IO傳輸效率非常高,它是TCP的網(wǎng)絡(luò )節點(diǎn),如果在之上放一個(gè)萬(wàn)兆交換機就直接構成了存儲模塊,而且價(jià)格低廉性能高,拓展性高,專(zhuān)供云計算
? Java在很多人看來(lái)等同于J2EE(企業(yè)級的應用開(kāi)發(fā)框架),這是其他任何語(yǔ)言都沒(méi)有過(guò)的奇跡
? 1999年J2EE誕生,J2EE一出臺就能夠為人們提供一幅完整、直觀(guān)而不失深邃的圖景
? 到2000年底為止,共有15家廠(chǎng)商能夠提供完整的J2EE解決方案,這些中的大多數都是IT界的大佬
? 2008年J2EE里的實(shí)力派BEA公司被Oracle 85億收購, 對比2009年74億收購了SUN
? J2EE規范是一系列符合工業(yè)級技術(shù)和質(zhì)量標準的規范,學(xué)術(shù)機構、業(yè)內廠(chǎng)商都廣泛參與討論和規劃,擁有一個(gè)龐大的社區
? 直到今天,J2EE里的JDBC、 Servlet/JSP等技術(shù)仍然是企業(yè)級應用開(kāi)發(fā)必不可缺少的關(guān)鍵技術(shù)
JNDI:提供查詢(xún)服務(wù),服務(wù)定位,技術(shù)中間件,比如說(shuō)協(xié)議+IP+端口,基礎設施
JMS:消息中間件
RMI:RPC遠程服務(wù)調用,兩者通信,相當于訪(fǎng)問(wèn)本地方法一樣訪(fǎng)問(wèn)遠程方法,基礎設施



? 開(kāi)源、分布式系統中重要的中間件或基礎設施
? 硬件不同
? 傳統的PC機器的PCI接口66MHz 133Mb/s而服務(wù)器的主板支持PCI-E X16 8bit 2.5GHz 8Gb/sTCP/IP卸載引擎(TOE)技術(shù)
? 價(jià)格昂貴
? 性能出眾
? Intel x520-t2 10Gbase-t萬(wàn)兆網(wǎng)卡(4800元報價(jià))測試,單端口單向實(shí)際測試結果是1248MB/s(9984Mbps), 達到理論峰值的99.84%
? 技術(shù)門(mén)檻高
? intel、BROADCOM、H3C(新IT基礎架構領(lǐng)導者)
掩碼、網(wǎng)關(guān)及路由.png)


? AIO帶來(lái)了編程的大幅簡(jiǎn)化和優(yōu)化
? AIO性能目前不如NIO
? AIO當前比較適合大文件的讀寫(xiě)
? 現階段網(wǎng)絡(luò )編程主要還是NIO

? NIO入門(mén)門(mén)檻高,精通很困難
? 除了NIO本身,企業(yè)級的Socket Server還需要大量外圍代碼開(kāi)發(fā)
? Netty是業(yè)界最流行的NIO框架之一,幾乎沒(méi)有對手
? Netty的作者也是開(kāi)發(fā)了大名鼎鼎的Apache Mina的作者
? 多種Reactor線(xiàn)程池模式
? 網(wǎng)絡(luò )數據串行處理,減少線(xiàn)程切換
? 強大的Buffer池
? 嫻熟的高并發(fā)編程技巧(Volatile、CAS、 ThreadLocal等的使用)
? 作者很多年網(wǎng)絡(luò )編程經(jīng)驗的積累與提升
擴展Netty的編解碼接口,用戶(hù)可以實(shí)現其它的高性能序列化框架,例如Thrift的壓縮二進(jìn)制編解碼框架 .png)

? 類(lèi)似JNDI的命名服務(wù)
? 實(shí)現分布式系統中的配置服務(wù)
? 提供簡(jiǎn)單好用的分布式同步服務(wù)
? 提供簡(jiǎn)單好用的分布式協(xié)調框架
? 可以作為一個(gè)簡(jiǎn)單的可靠的消息隊列
? ZK提供類(lèi)似文件目錄樹(shù)的數據結構,每個(gè)節點(diǎn)可以設置byte[]數據
? 節點(diǎn)類(lèi)型可以是持久化保存的,也可以是臨時(shí)的(EPHEMERAL)
? 原子性:更新要么成功,要么失敗,不會(huì )出現部分更新
? 可靠性:一旦數據更新成功,將一直保持,直到新的更新
? 單一性 :無(wú)論客戶(hù)端連接哪個(gè)server,都會(huì )看到同一個(gè)視圖
? 及時(shí)性:客戶(hù)端會(huì )在一個(gè)確定的時(shí)間內得到最新的數據。
? 等待無(wú)關(guān):慢的或者失效的client不得干預快速的client的請求,使得每個(gè)client都能有效的等待
? 順序一致性:按照客戶(hù)端發(fā)送請求的順序更新數據,包括全局有序和偏序兩種:全局有序是指如果在一臺服務(wù)器上消息a在消息b前發(fā)布,則在所有Server上消息a都將在消息b前被發(fā)布;偏序是指如果一個(gè)消息b在消息a后被同一個(gè)發(fā)送者發(fā)布,a必將排在b前面
? ZK創(chuàng )建一個(gè)節點(diǎn)后,節點(diǎn)的路徑就是全局唯一的,可以作為全局名稱(chēng)使用
?
?
? 每個(gè)節點(diǎn)(進(jìn)程)啟動(dòng)的時(shí)候在ZK路徑GroupMembers下建立子路徑(節點(diǎn)ID為路徑名),通信地址Endpoint則寫(xiě)到路徑的Data中
? 每個(gè)節點(diǎn)監聽(tīng)ZK路徑GroupMembers,當集群中增加新節點(diǎn)或故障節點(diǎn)下線(xiàn),每個(gè)節點(diǎn)都會(huì )獲得通知
?
? 消息發(fā)送方在ZK上創(chuàng )建一個(gè)Path,發(fā)送消息時(shí),將消息信息設置為該Path的內容,而消息接收方則監聽(tīng)此Path,實(shí)現了簡(jiǎn)單可靠的發(fā)布訂閱模式的消息隊列
?
? Zookeeper能保證數據的強一致性,用戶(hù)任何時(shí)候都可以相信集群中每個(gè)節點(diǎn)的數據都是相同的。一個(gè)用戶(hù)創(chuàng )建一個(gè)節點(diǎn)作為鎖,另一個(gè)用戶(hù)檢測該節點(diǎn),如果存在,代表別的用戶(hù)已經(jīng)鎖住,如果不存在,則可以創(chuàng )建一個(gè)節點(diǎn),代表?yè)碛幸粋€(gè)鎖
? ZK的日志文件和snapshort文件分別放在兩塊硬盤(pán)上
? Leader節點(diǎn)不允許Client連接
? 網(wǎng)上所能見(jiàn)到的信息,最大為1萬(wàn)個(gè)連接(客戶(hù)端),
5節點(diǎn)的ZK集群
? “Guava is to Java what Curator is to Zookeeper Patrick Hunt,Zookeeper committer”
? Fluent Style風(fēng)格
? 端Curator之Fluent Style風(fēng)格.png)
? NetFlix出品
? 極大程度上減少了程序猿的負擔
? 接管了Client與Server的連接重連問(wèn)題
? 提供了各種常用ZK應用場(chǎng)景的抽象封裝(如共享鎖服務(wù)、 Leader選舉)
? 列出子目錄: CuratorFramework.getChildren().forPath(path)
?
public boolean exists(String parentPath,String path) throws Exception{ Stat stat = zk.checkExists().forPath(parentPath+"/"+path); return (stat != null );}? 創(chuàng )建目錄
? result = zk.create().withMode(createMode).forPath(path,nodeData);
? 監聽(tīng)ZK節點(diǎn)的變化并做出相應的處理
?
若ZK Server還未啟動(dòng),用戶(hù)程序先啟動(dòng)了,則雖然Curator能夠后來(lái)自動(dòng)重連上,但之前的創(chuàng )建節點(diǎn)和監聽(tīng)事件將不會(huì )起效.
List<PathChildrenCache> allZKWathers = new LinkedList<PathChildrenCache>();PathChildrenCache cache = new PathChildrenCache(zk, path, false);cache.getListenable().addListener(plis);cache.start();allZKWathers.add(cache);方法一:
? org.apache.zookeeper.Watcher來(lái)監聽(tīng)Connection的狀態(tài),CuratorZookeeperClient(connectString,TimeoutMs, int connectionTimeoutMs,watcher, retryPolicy)
當連接建立后觸發(fā)PathChildrenCache的rebuild方法,重新監聽(tīng)路徑
方法二:定時(shí)線(xiàn)程,每隔幾分鐘調用PathChildrenCache的rebuild方法
? 兩種文件系統
? 日志型的與非日志型的
? 非日志型文件系統
? ext2、 FAT、 VFAT、 HPFS(OS/2)、 NTFS、 Sun的UFS等
? 日志型文件系統
? ext3 許多流行的Linux發(fā)行版默認的文件系統
? ext4 由ext3增加許多顯著(zhù)特性和擴展進(jìn)化而來(lái)的文件系統
? ReiserFS 全新設計的文件系統
? JFS IBM移植的UNIX文件系統
? XFS 為高性能和大文件設計的文件系統
? Btrfs 校檢copy-on-write(寫(xiě)入時(shí)復制)文件系統
? ext4(6) —–> XFS(7)
? 當前文件系統中的幾個(gè)強者
? Facebook已經(jīng)開(kāi)始全線(xiàn)換用btrfs
? 紅帽的Red 6使用ext4, 7則使用了XFS
? 浙江省十二五重大科技專(zhuān)項資助項目研究了ZFS在基于hadoop的視頻存儲系統中的應用
? 經(jīng)典的第一代分布式文件系統NFS
?
? 一個(gè)分布式文件系統中有兩種不同的軟件:客戶(hù)端文件系統
和文件服務(wù)器。它們的行為共同決定分布式文件系統的行為
? 源的并行虛擬文件系統.png)
? 管理節點(diǎn): 即元數據服務(wù)器,負責管理所有的文件元數
據信息;
? I/O節點(diǎn): 運行I/O服務(wù)器,負責分布式文件系統中數據
的存儲和檢索;
? 計算節點(diǎn): 處理應用訪(fǎng)問(wèn),通過(guò)PVFS專(zhuān)有的libpvfs接口
庫,從底層訪(fǎng)問(wèn)PVFS服務(wù)器。
門(mén)針對高性能計算的基于對象存儲的分布式文件系統.png)
條帶化
? Ceph是統一存儲系統,支持三種接口。
? Object: 有原生的API, 而且也兼容Swift和S3的API
? Block: 支持精簡(jiǎn)配置、快照、克隆
? File: Posix接口,支持快照
? MogileFS——影響最大的互聯(lián)網(wǎng)小文件系統
? FastDFS——窮人的解決方案(國產(chǎn)小有名氣)
? TFS——淘寶的HDFS Copy版本
? GridFS——
?
? 在MogileFS分布式文件存儲系統中,文件通過(guò) KEY 來(lái)引用, KEY 在同一個(gè)domain(存儲域)下是唯一的,每個(gè)存儲域可以定義不同的文件類(lèi)別Class,可以針對不同的存儲類(lèi)別設置存儲不同份數的文件副本
? 應用層 — 不需要特殊的核心組件
? 無(wú)單點(diǎn)失敗 — MogileFS分布式文件存儲系統安裝的三個(gè)組件(存儲節點(diǎn)、跟蹤器、跟蹤用的數據庫),均可運行在多個(gè) 機器上,因此沒(méi)有單點(diǎn)失敗, 推薦至少兩臺機器。
? 自動(dòng)的文件復制 — 基于不同的文件“分類(lèi)” ,文件可以被自動(dòng)的復制到多個(gè)有足夠存儲空間的存儲節點(diǎn)上,這樣可以滿(mǎn)足這個(gè)“類(lèi)別”的最少復制要求.比如你有一個(gè)圖片網(wǎng)站,你可以設置原始的JPEG圖片需要復制 至少三份,但實(shí)際只有1or2份拷貝,如果丟失了數據,那么MogileFS分布式文件存儲系統可以重新建立遺失的拷貝數
? “比RAID好多了” —RAID磁盤(pán)是冗余的,但主機不是,如果你整個(gè)機器壞了,那么文件也將不能訪(fǎng)問(wèn). MogileFS分布式文件存儲系統在不同的機器之間進(jìn)行文件復制,因此文件始終是可用的
? 不需要RAID — 在MogileFS中的磁盤(pán)可以是做了RAID的也可以是沒(méi)有,如果是為了安全性著(zhù)想的話(huà)RAID沒(méi)有必要買(mǎi)了,因為MogileFS分布式文件存儲系統已經(jīng)提供了.
? 簡(jiǎn)單的命名空間 –文件通過(guò)一個(gè)給定的key來(lái)確定,是一個(gè)全局的命名空間
? 不用共享任何東西 — MogileFS分布式文件存儲系統不需要依靠昂貴的SAN來(lái)共享磁盤(pán),每個(gè)機器只用維護好自己的磁盤(pán).
? 傳輸中立,無(wú)特殊協(xié)議 — MogileFS分布式文件存儲系統客戶(hù)端可以通過(guò)NFS或HTTP來(lái)和MogileFS的存儲節點(diǎn)來(lái)通信,但首先需要告知跟蹤器一下
每個(gè)存儲服務(wù)器都需要定時(shí)將自身的信息上報給tracker,這些信息就包括了本地同步時(shí)間(即,同步
到的最新文件的時(shí)間戳)。而tracker根據各個(gè)存儲服務(wù)器的上報情況,就能夠知道剛剛上傳的文件,在該存儲組中是否已完成了同步
? 精巧的FID:
? FastDFS和MogileFS相比,沒(méi)有文件索引數據庫,C語(yǔ)義開(kāi)發(fā),TCP Socket方式,整體性能更高
? 相對于MogileFS更為簡(jiǎn)單
? FastDFS的日志記錄非常詳細,便于排除問(wèn)題
? 安裝配置相對簡(jiǎn)單
? 目前只有一個(gè)人維護,是潛在的風(fēng)險
?
?
? 總體參考HDFS架構和原理,細節方面則考慮的是小文件(<1M)的優(yōu)化訪(fǎng)問(wèn)
? 在TFS的設計里面對應著(zhù)是一個(gè)block同時(shí)只能有一個(gè)寫(xiě)或者更新操作。
? 隨著(zhù)寫(xiě)壓力的增加,讀文件的TPS會(huì )大幅下滑。
? 淘寶網(wǎng)圖片存儲與處理系統全局拓撲
圖片服務(wù)器前端還有一級和二級緩存服務(wù)器,盡量讓圖片在緩存中命中,最大程度的避免圖片熱點(diǎn),實(shí)際上后端到達TFS的流量已經(jīng)非常離散和平均。
?
預計未來(lái)5到10年,關(guān)系數據庫將徹底消失,屆時(shí)所有的SAP產(chǎn)品都將使用HANA——2011年
? 內存計算的模式將能幫助企業(yè)分析數據的速度提升10萬(wàn)倍(相比傳統關(guān)系數據庫)。這也就意味著(zhù)以前需要數小時(shí)的分析現在幾秒鐘內就可以完成?!?
? Bussmann所在的團隊在2010年10月份的時(shí)候,通過(guò)概念證明SAP數據分析速度有望提升14000倍,以前需要花費5小時(shí)分析處理完數據,現在僅需要1秒鐘則可以迅速完成。


部署數百個(gè)Pivotal Gemfire節點(diǎn)
Pivotal Gemfire節點(diǎn).png)
在2015年春運購票高峰之前,考慮到超大并發(fā)會(huì )造成網(wǎng)絡(luò )流量大以及阻塞的問(wèn)題,今年特別在阿里云建立一個(gè)數據中心,由阿里云提供“虛擬機”
的租賃服務(wù),將基于Gemfire實(shí)現余票查詢(xún)功能的系統以及Web服務(wù)部署在這些虛擬機上,以分流“余票查詢(xún)”請求Gemfire+12306讓中國人回家過(guò)年更方便?部署數百個(gè)Pivotal Gemfire節點(diǎn)技術(shù)改造之后,在只采用10幾臺X86服務(wù)器實(shí)現了以前數十臺小型機的余票計算和查詢(xún)能力,單次
查詢(xún)的最長(cháng)時(shí)間從之前的15秒左右下降到0.2秒以下,縮短了75倍以上。 2012年春運的極端高流量并發(fā)情況下,系統幾近癱瘓。而在改造之后,支持每秒上萬(wàn)次的并發(fā)查詢(xún),高峰期間達到2.6萬(wàn)個(gè)查詢(xún)/秒吞吐量,整個(gè)系統效率顯著(zhù)提高。舊系統每秒只能支持300-400個(gè)查詢(xún)/秒的吞吐量
? 當前計算架構的瓶頸在存儲,處理器的速度按照摩爾定律翻番增長(cháng),而磁盤(pán)存儲的速度增長(cháng)很緩慢,由此造成巨大高達10萬(wàn)倍的差距
? In Memory Data Grid(“內存數據網(wǎng)格”)
? 首先自然是網(wǎng)格式分布式存儲
? 所有數據存于內存(RAM)
? 存儲服務(wù)器數量可隨時(shí)增減
? 數據模型是非關(guān)系模型, 而是基于對象模型
? 在網(wǎng)格內的某一臺存儲服務(wù)器的啟動(dòng)和關(guān)閉不會(huì )影響到網(wǎng)格內的其他服務(wù)器
? 2008年開(kāi)源項目,目標是一個(gè)簡(jiǎn)單的分布式Java Map
? 目前的定位是Java分布式內存網(wǎng)格
默認512M OS的內存池,分為默認4M大小的管理單元,默認采用ThreadLocal方式管理內存單元。
存在用來(lái)存放Index、偏移量等Metadata信息的內存單元, MetaData的占用空間默認是12%
? 作為另一款主流的開(kāi)源數據網(wǎng)格產(chǎn)品,GridGain是Hazelcast的強有力競爭者。同樣提供了社區版和商業(yè)版,近日GridGain的開(kāi)源版本已經(jīng)進(jìn)入Apache孵化器項目Ignite(一款開(kāi)源的內存計算(In-MemoryComputing)IMC中間件),目前Apache正在遷移GridGain開(kāi)源版本的代碼到Ignite項目
? GridGain在開(kāi)源版本中就提供了堆外存儲功能, 當堆和非堆內存都不足時(shí),還可以開(kāi)啟SWAP,將數據溢出到磁盤(pán)
? GridGain使用2PC(兩階段提交)協(xié)議實(shí)現分布式事務(wù),事務(wù)級別支持三種事務(wù)隔離級別
? GGFS(GridGain In-Memory File System), 類(lèi)似Spark生態(tài)圈中的Tachyon, 能夠加速MapReduce任務(wù)的執行
? 流式數據/事件處理,可以作為CEP事件處理器
Apache Ignite項目憑借其業(yè)界領(lǐng)先的事務(wù)處理能力在新興的混合型的OLTP/ OLAP用例方面更勝一籌。特別是針對Hadoop, Apache Ignite將為現有的Map/Reduce, Pig或Hive作業(yè)提供即插即用式的加速,避免了推倒重來(lái)的做法
Apache Ignite成為未來(lái)的快速數據世界(Fast Data world),如同Hadoop是今天的大數據。
? Web系統中使用最為廣泛的分布式Key/value緩存中間件
? 最適合存儲小數據,并且存儲的數據是大小一致的
? Memcached在很多時(shí)候都是作為數據庫前端cache使用
? 虛機上不適合部署Memcached
? 確保Memcached的內存不會(huì )被Swap出去
? 不能便利所有數據,這將導致嚴重性能問(wèn)題
? Local Cache+ Memcached這種分層Cache還是很有價(jià)值
? Memcached啟動(dòng)預熱是一個(gè)好辦法
? 是Memcached的一個(gè)強有力的補充,同時(shí)也是一個(gè)有顯著(zhù)
不同的新產(chǎn)品
? Redis擴展了key-Value的范圍, Value可以是List, Set,Hashes, Sorted Set等數據結構,同時(shí)增加了新指令針對這些數據結構:如Set的union, List的pop等操作指令
? 比如Subscribe/publish命令,以支持發(fā)布/訂閱模式這樣的通知機制等等
? redis通過(guò)Multi / Watch /Exec等命令可以支持事務(wù)的概念,原子性的執行一批命令。
? Redis 3.0開(kāi)始實(shí)現Cluster方案,但沒(méi)有采用一致性Hash
?
redis 數據集結構體 redisDB 和客戶(hù)端結構體 redisClient
都會(huì )保存鍵值監視的相關(guān)數據
一個(gè)Redis集群包含16384個(gè)哈希槽(hash slot),數據庫中的每個(gè)鍵都屬于這個(gè)16384個(gè)哈希槽的其中一個(gè),集群使用公式CRC16(key) % 16384來(lái)計算鍵key屬于哪個(gè)槽,其中CRC16(key)語(yǔ)句用于計算鍵key的CRC16校驗和。
? 簡(jiǎn)單數據結構下Memcache的多線(xiàn)程架構有優(yōu)勢
? 僅僅從用做緩存的角度, Memcache還是無(wú)法被替代
? Redis具備向數據庫考慮的能力,但這些方面并沒(méi)有特別強的優(yōu)勢
? 不要求關(guān)系數據庫質(zhì)量級別的交易時(shí), Redis可以取代一些特定場(chǎng)合的數據庫操作,比如秒殺這樣的系統
A表為Person { id、 name }
B表為Order{id,orderId,amount(金額) }
關(guān)聯(lián)關(guān)系為order.orderid=person.id
求計算結果 select p.id,sum(o.amount),count(*) from person p ,order o where
order.orderid=person.id order by sum limit 1000
Person、 Order的數據分別存在CSV文件中 ,數量各自是1億、 10億,數據隨機制造,保證基本都有關(guān)聯(lián)
采用Hazelcast或GridGain的API完成,需要找出這兩個(gè)產(chǎn)品中最合適的API來(lái)完成Join、 Group、 Order等操作
現分布式——Oracle Rac.png)
?
? 1.多節點(diǎn)負載均衡;
? 2.通過(guò)并行執行技術(shù)提高事務(wù)響應時(shí)間—-通常用于數據分
析系統;
? 3.通過(guò)橫向擴展提高每秒交易數和連接數 ;—-通常對于聯(lián)
機事務(wù)系統;
? 4.節約硬件成本,可以用多個(gè)廉價(jià)PC服務(wù)器代替昂貴的小
型機或大型機,同時(shí)節約相應維護成本;
? 5.可擴展性好,可以方便添加刪除節點(diǎn),擴展硬件資源;
往往人們會(huì )認為RAC有2個(gè)節點(diǎn)性能就會(huì )提升2倍,這是一個(gè)誤區,由于要保證數據的一致性往往性能會(huì )消耗在內存間的數據塊相互拷貝和交叉上,因此不一定性能會(huì )好于單
節點(diǎn),而且節點(diǎn)越多性能曲線(xiàn)就會(huì )下降越快
(Cache fusion)1.png)
1.保證緩存的一致性
2.減少共享磁盤(pán)IO的消耗
3.在RAC環(huán)境中多個(gè)節點(diǎn)保留了同一份的DB CACHE
(Cache fusion)2.png)
HA的原理和流程.png)
在生產(chǎn)使用中,突然instance1 shutdown,那么在其上面沒(méi)有完成的事物如何處理呢。
? 1)當實(shí)例1 crash后,實(shí)例2通過(guò)VIP就可以知道實(shí)例1已經(jīng)down了。
? 2)此時(shí)需要處理的有2部分數據,一部分是commit的數據,一部分非commit數據
? 3)對于已經(jīng)commit寫(xiě)入redo日志但是還沒(méi)有來(lái)得及寫(xiě)入數據文件的記錄,實(shí)例2可以訪(fǎng)問(wèn)實(shí)例1的redo log并從最后一次check point之后的信息開(kāi)始實(shí)例恢復。把數據同步到最新?tīng)顟B(tài)。
? 4)對于沒(méi)有commit的數據利用undo舊映像進(jìn)行回滾事物。
MySQL集群是一種在無(wú)共享架構(SNA, Share NothingArchitecture)系統里應用內存數據庫集群的技術(shù)。這種無(wú)共享的架構可以使得系統使用低廉的硬件獲取高的可擴
展性。 mysql集群是一種分布式設計,目標是要達到?jīng)]有任何單點(diǎn)故障點(diǎn)。因此,任何組成部分都應該擁有自己的內存和磁盤(pán)。

優(yōu)點(diǎn):
? 1) 99.999 %的高可用性
? 2) 快速的自動(dòng)失效切換
? 3) 靈活的分布式體系結構,沒(méi)有單點(diǎn)故障
? 4) 高吞吐量和低延遲
? 5) 可擴展性強,支持在線(xiàn)擴容

CA,沒(méi)有擴展性,如MySQL、 Oracle等
CP ,不能忍受節點(diǎn)宕機,有Oracle RAC、 Sybase集群等
AP,犧牲數據一致性,多數NoSQL系統采用
BASE, 最終一致性這個(gè)理論由 B asically A vailable, S oftstate, E ventual consistency 組成。核心的概念是Eventual consistency ——最終一致性。它局部的放棄了 CAP 理論中的“完全”一致性,提供了更好的可用性和分區容忍度。RYW ( Read-Your-Writes ) consistencyRYW consistency 是最終一致性的補充,它保證業(yè)務(wù)在會(huì )話(huà)中一定能讀到上一次寫(xiě)入的數據
X/Open DTP模型


? 當兩個(gè)表的數據分布在多個(gè)節點(diǎn)上時(shí),這兩個(gè)表之間的Join就是一個(gè)困難的事情
? 分布式數據庫中間件
? 基于阿里開(kāi)源的Cobar
? 被用于眾多互聯(lián)網(wǎng)項目
? 中國最活躍的Mycat社區

聯(lián)系客服