java核心知識(shí)點(diǎn)整理_第1頁(yè)
java核心知識(shí)點(diǎn)整理_第2頁(yè)
java核心知識(shí)點(diǎn)整理_第3頁(yè)
java核心知識(shí)點(diǎn)整理_第4頁(yè)
java核心知識(shí)點(diǎn)整理_第5頁(yè)
已閱讀5頁(yè),還剩278頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1. 目錄1.目錄12. JVM.線程20JVM 內(nèi)存區(qū)域...2.2.5.程序計(jì)數(shù)器(線程私有)22虛擬機(jī)棧(線程私有)22本地方法區(qū)(線程私有)23堆(Heap-線程共享)-運(yùn)行時(shí)數(shù)據(jù)區(qū)23方法區(qū)/永久代(線程共享)232.3.JVM 運(yùn)行時(shí)內(nèi)存....3.1.4.新生代24Eden 區(qū)24ServivorFrom24ServivorTo24MinorGC 的過(guò)程(復(fù)制-清空-互換)241:eden、servicorFrom 復(fù)制到 ServicorTo,年齡+125

2、2:清空 eden、servicorFrom253:ServicorTo 和 ServicorFrom 互換..3.1.老年代25永久代25JAVA8 與元數(shù)據(jù)252.4.垃圾回收與算法262.4.1.如何確定垃圾2. 引用計(jì)數(shù)法2. 可達(dá)性分析26標(biāo)記清除算法(Mark-Sweep)27復(fù)制算法(copying)27標(biāo)記整理算法(Mark-Compact)28分代收集算法29新生代與復(fù)制算法29老年代與標(biāo)記復(fù)制算法2.....2.5.JAVA 四中引用類型3

3、0...強(qiáng)引用30軟引用30弱引用30虛引用302.6.GC 分代收集算法 VS 分區(qū)收集算法302.6.1.分代收集算法30..2.6.2.在新生代-復(fù)制算法30在老年代-標(biāo)記整理算法30分區(qū)收集算法312.7.GC 垃圾收集器312.7.1. Serial 垃圾收集器(單線程、復(fù)制算法)312.7.2. ParNew 垃圾收集器(Serial+多線程)312.7.3. Parallel Scavenge 收集器(多線程復(fù)制算法、高效)322.7.4. Serial Old 收集器(單線程標(biāo)記整理算法)322.7.5. P

4、arallel Old 收集器(多線程標(biāo)記整理算法)332.7.6. CMS 收集器(多線程標(biāo)記清除算法)3.初始標(biāo)記3...2.7.7.并發(fā)標(biāo)記34重新標(biāo)記34并發(fā)清除34G1 收集器342.8.JAVA IO/NIO3.........8.5.阻塞 IO 模型34非阻塞 IO 模型35多路復(fù)用 IO 模型35信號(hào)驅(qū)動(dòng) IO 模型36異步 IO 模型36JAVA IO 包36JAVA NIO37NIO 的緩

5、沖區(qū)38NIO 的非阻塞38Channel40Buffer40Selector402.9.JVM 類加載機(jī)制4...............2.加載41驗(yàn)證41準(zhǔn)備41解析41符號(hào)引用42直接引用42初始化42類構(gòu)造器42類加載器42啟動(dòng)類加載器(Bootstrap ClassLoader)43擴(kuò)展類加載器(Extension ClassLoader)43應(yīng)用程序類加載器(Applic

6、ation ClassLoader):43雙親委派43OSGI(動(dòng)態(tài)模型系統(tǒng))44動(dòng)態(tài)改變構(gòu)造44模塊化編程與熱插拔443.JAVA 集合4.接口繼承關(guān)系和實(shí)現(xiàn)45LIST4..3.ArrayList(數(shù)組)47Vector(數(shù)組實(shí)現(xiàn)、線程同步)47LinkList(鏈表)473.3.SET4. HashSet(Hash 表)4. TreeSet(二叉樹)4. LinkHashSet(HashSet+LinkedHashMap)49MAP50.1.HashMap(數(shù)組+鏈表+紅黑樹)50

7、. JAVA7 實(shí)現(xiàn)50. JAVA8 實(shí)現(xiàn)513.4.2.ConcurrentHashMap51Segment 段51線程安全(Segment 繼承 ReentrantLock 加鎖)51并行度(默認(rèn) 16)52Java8 實(shí)現(xiàn) (引入了紅黑樹)5....13/04/2018Page 2 of 2833.4.3. HashTable(線程安全)533.4.4. TreeMap(可排序)533.4.5. LinkHashMap(記錄插入順序)53JAVA 多線程并發(fā)5..1.2.

8、....JAVA 并發(fā)知識(shí)庫(kù)54JAVA 線程實(shí)現(xiàn)/創(chuàng)建方式54繼承 Thread 類54實(shí)現(xiàn) Runnable 接口。54ExecutorService、Callable、Future 有返回值線程55基于線程池的方式564 種線程池5. newCachedThreadPool5. newFixedThreadPool5. newScheduledThreadPool5. newSingleThreadExecutor5...1.

9、.4.4.線程生命周期(狀態(tài))58新建狀態(tài)(NEW)58就緒狀態(tài)(RUNNABLE):59運(yùn)行狀態(tài)(RUNNING):59阻塞狀態(tài)(BLOCKED):59等待阻塞(o.wait-等待對(duì)列):59同步阻塞(lock-鎖池)59其他阻塞(sleep/join)5. 線程死亡(DEAD)59正常結(jié)束59異常結(jié)束59調(diào)用 stop594.1.5.終止線程 4 種方式60正常運(yùn)行結(jié)束60使用退出標(biāo)志退出線程60Interrupt 方法結(jié)束線程60stop 方法終止線程(線程不安全)61sleep 與 wait 區(qū)別61start 與 run 區(qū)別62JAVA線程62JAVA

10、 鎖63樂(lè)觀鎖63悲觀鎖63自旋鎖6..........自旋鎖的優(yōu)缺點(diǎn)63自旋鎖時(shí)間閾值(1.6 引入了適應(yīng)性自旋鎖)63自旋鎖的開啟6. Synchronized 同步鎖64Synchronized 作用范圍64Synchronized 核心組件64Synchronized 實(shí)現(xiàn)6. ReentrantLock66Lock 接口的主要方法66非公平鎖66公平鎖67ReentrantLock 與 synchronized6

11、7ReentrantLock 實(shí)現(xiàn)67Condition 類和 Object 類鎖方法區(qū)別區(qū)別68tryLock 和 lock 和 lockInterruptibly 的區(qū)別6. Semaphore 信號(hào)量68實(shí)現(xiàn)互斥鎖(計(jì)數(shù)器為 1)68代碼實(shí)現(xiàn)68Semaphore 與 ReentrantLock6. AtomicInteger6913/04/2018Page 3 of 28. 可重入鎖(遞歸鎖)6. 公平鎖與非公平鎖70公平鎖(Fair)70非公平鎖(Nonfair)700.ReadWriteLock 讀寫鎖7

12、0讀鎖70寫鎖701.共享鎖和獨(dú)占鎖70獨(dú)占鎖70共享鎖70.13.重量級(jí)鎖(Mutex Lock)71輕量級(jí)鎖71鎖升級(jí)7..16.偏向鎖71分段鎖71鎖優(yōu)化71減少鎖持有時(shí)間72減小鎖粒度72鎖分離72鎖粗化72鎖消除724.1.10. 線程基本方法7........線程等待(wait)73線程睡眠(sleep)73線程讓步(yield)73線程中斷(interrupt)73

13、Join 等待其他線程終止74為什么要用 join()方法?74線程喚醒(notify)74其他方法:744.1.11. 線程上下文切換7.......進(jìn)程75上下文75寄存器75程序計(jì)數(shù)器75PCB-“切換楨”75上下文切換的活動(dòng):76引起線程上下文切換的原因764.1.12. 同步鎖與死鎖7..同步鎖76死鎖764.1.13. 線程池原理7....線程復(fù)用76線程池的組成76拒絕

14、策略78Java 線程池工作過(guò)程784.1.14. JAVA 阻塞隊(duì)列原理7.阻塞隊(duì)列的主要方法80插入操作:80獲取數(shù)據(jù)操作:8.......Java 中的阻塞隊(duì)列81ArrayBlockingQueue(公平、非公平)82LinkedBlockingQueue(兩個(gè)獨(dú)立鎖提高并發(fā))82PriorityBlockingQueue(compareTo 排序?qū)崿F(xiàn)優(yōu)先)82DelayQueue(緩存失效、定時(shí)任務(wù) )82SynchronousQueue(不存儲(chǔ)數(shù)據(jù)、可

15、用于傳遞數(shù)據(jù))83LinkedTransferQueue8313/04/2018Page 4 of 28.LinkedBlockingDeque834.1.15. CyclicBarrier、CountDownLatch、Semaphore 的用法8...CountDownLatch(線程計(jì)數(shù)器 )84CyclicBarrier(回環(huán)柵欄-等待至 barrier 狀態(tài)再全部同時(shí)執(zhí)行)84Semaphore(信號(hào)量-控制同時(shí)訪問(wèn)的線程個(gè)數(shù))854.1.16. volatile 關(guān)鍵字的作用(變量可見性、禁止重排序)87變量可見性

16、87禁止重排序87 sychronized 更輕量級(jí)的同步鎖87適用場(chǎng)景874.1.17. 如何在兩個(gè)線程之間共享數(shù)據(jù)88將數(shù)據(jù)抽象成一個(gè)類,并將數(shù)據(jù)的操作作為這個(gè)類的方法88Runnable 對(duì)象作為一個(gè)類的內(nèi)部類894.1.18. ThreadLocal 作用(線程本地存儲(chǔ))90ThreadLocalMap(線程的一個(gè)屬性)90使用場(chǎng)景914.1.19. synchronized 和 ReentrantLock 的區(qū)別9..兩者的共同點(diǎn):91兩者的不同點(diǎn):924.1.20. ConcurrentHashMap 并發(fā)9..減

17、小鎖粒度92ConcurrentHashMap 分段鎖92ConcurrentHashMap 是由 Segment 數(shù)組結(jié)構(gòu)和 HashEntry 數(shù)組結(jié)構(gòu)組成934.1.21. Java 中用到的線程調(diào)度9....搶占式調(diào)度:93協(xié)同式調(diào)度:93JVM 的線程調(diào)度實(shí)現(xiàn)(搶占式調(diào)度)94線程讓出 cpu 的情況:944.1.22. 進(jìn)程調(diào)度算法9...優(yōu)先調(diào)度算法94高優(yōu)先權(quán)優(yōu)先調(diào)度算法95基于時(shí)間片的輪轉(zhuǎn)調(diào)度算法964.1.23. 什么是 CAS(比較并交換-樂(lè)觀鎖機(jī)制-鎖自旋

18、)9...概念及特性96原子包 java.util.concurrent.atomic(鎖自旋)97ABA 問(wèn)題984.1.24. 什么是 AQS(抽象的隊(duì)列同步器)98Exclusive 獨(dú)占資源-ReentrantLock99Share 共享資源-Semaphore/CountDownLatch99同步器的實(shí)現(xiàn)是 ABS 核心(state 資源狀態(tài)計(jì)數(shù))100ReentrantReadWriteLock 實(shí)現(xiàn)獨(dú)占和共享兩種方式100JAVA 基礎(chǔ)1015.1.1.JAVA 異常分類及處理10..2.概念101異

19、常分類101Error101Exception(RuntimeException、CheckedException)10.異常的處理方式102遇到問(wèn)題不進(jìn)行具體處理,而是繼續(xù)拋給調(diào)用者 (throw,throws)102try catch 捕獲異常針對(duì)性處理方式10.Throw 和 throws 的區(qū)別:10213/04/2018Page 5 of 283位置不同102功能不同:10...1.2.3.JAVA 反射103動(dòng)態(tài)語(yǔ)言103反射機(jī)制概念 (運(yùn)行狀態(tài)中知道類所有的屬性和方法)103反射的應(yīng)用場(chǎng)合103編譯時(shí)類型

20、和運(yùn)行時(shí)類型103的編譯時(shí)類型無(wú)法獲取具體方法10.Java 反射 API104反射 API 用來(lái)生成 JVM 中的類、接口或則對(duì)象的信息。10..反射使用步驟(獲取 Class 對(duì)象、調(diào)用對(duì)象方法)104獲取 Class 對(duì)象的 3 種方法104調(diào)用某個(gè)對(duì)象的 getClass()方法104調(diào)用某個(gè)類的 class 屬性來(lái)獲取該類對(duì)應(yīng)的 Class 對(duì)象104使用 Class 類中的 forName()靜態(tài)方法(最安全/性能最好)10.創(chuàng)建對(duì)象的兩種方法105Class 對(duì)象的 newInstance()105調(diào)用 Constru

21、ctor 對(duì)象的 newInstance()1055.1.3.JAVA 注解10. 概念10. 4 種標(biāo)準(zhǔn)元注解106Target 修飾的對(duì)象范圍106Retention 定義 被保留的時(shí)間長(zhǎng)短106Documented 描述-javadoc106Inherited 闡述了某個(gè)被標(biāo)注的類型是被繼承的10. 注解處理器1075.1.4.JAVA 內(nèi)部類109靜態(tài)內(nèi)部類109成員內(nèi)部類110局部?jī)?nèi)部類(定義在方法中的類)110內(nèi)部類(要繼承一個(gè)父類或者實(shí)現(xiàn)一個(gè)接口、直接使用 new 來(lái)生成一個(gè)對(duì)象的引用)111JAVA 泛型112泛型方法()112泛

22、型類112類型通配符?113類型擦除113JAVA 序列化(創(chuàng)建可復(fù)用的 Java 對(duì)象)1.........1.6.保存(持久化)對(duì)象及其狀態(tài)到內(nèi)存或者磁盤113序列化對(duì)象以字節(jié)數(shù)組保持-靜態(tài)成員不保存113序列化用戶遠(yuǎn)程對(duì)象傳輸113Serializable 實(shí)現(xiàn)序列化113ObjectOutputStream 和 ObjectInputStream 對(duì)對(duì)象進(jìn)行序列化及反序列化113writeObject 和 readObject 自定義序列化策略113序列化

23、ID113序列化并不保存靜態(tài)變量114序列化子父類說(shuō)明114Transient 關(guān)鍵字阻止該變量被序列化到文件中1145.1.7.JAVA 復(fù)制114直接賦值復(fù)制114淺復(fù)制(復(fù)制引用但不復(fù)制引用的對(duì)象)114深復(fù)制(復(fù)制對(duì)象和其應(yīng)用對(duì)象)115序列化(深 clone 一中實(shí)現(xiàn))1....6.SPRING 原理1166.1.1.Spring 特點(diǎn)1.輕量級(jí)11613/04/2018Page 6 of 28.......

24、....7.3.控制反轉(zhuǎn)116面向切面116容器116框架集合116Spring 核心組件117Spring 常用模塊117Spring 主要包118Spring 常用注解118Spring 第三方結(jié)合119Spring IOC 原理120概念120Spring 容器高層視圖120IOC 容器實(shí)現(xiàn)120BeanFactory-框架基礎(chǔ)設(shè)施1........8BeanDefinitionRegistry 注冊(cè)表1

25、21BeanFactory 頂層接口121ListableBeanFactory121HierarchicalBeanFactory 父子級(jí)聯(lián)121ConfigurableBeanFactory121AutowireCapableBeanFactory 自動(dòng)裝配122SingletonBeanRegistry 運(yùn)行期間注冊(cè)單例 Bean122依賴日志框框122ApplicationContext 面向開發(fā)應(yīng)用122WebApplication 體系架構(gòu)1. Spring Bean 作用域123singleton:?jiǎn)卫J剑ǘ嗑€程下不安全)123prototype:原型模式每次

26、使用時(shí)創(chuàng)建124Request:一次 request 一個(gè)實(shí)例124session124global Session1. Spring Bean 生命周期124實(shí)例化124IOC 依賴注入124setBeanName 實(shí)現(xiàn)124BeanFactoryAware 實(shí)現(xiàn)124ApplicationContextAware 實(shí)現(xiàn)125postProcessBeforeInitialization 接口實(shí)現(xiàn)-初始化預(yù)處理125init-method125postProcessAfterInitialization125Destroy 過(guò)期自動(dòng)清理階段125destroy-method

27、 自配置清理12. Spring 依賴注入四種方式126構(gòu)造器注入126setter 方法注入127靜態(tài)工廠注入127實(shí)例工廠12. 5 種不同方式的自動(dòng)裝配1286.1.8.Spring APO 原理12...概念129AOP 核心概念129AOP 兩種方式130JDK 動(dòng)態(tài)接口130CGLib 動(dòng)態(tài) . 13. 實(shí)現(xiàn)原理1316.1.9.Spring MVC 原理13.MVC 流程132Http 請(qǐng)求到 DispatcherServlet133HandlerMapping 尋找處理器

28、133調(diào)用處理器 Controller13313/04/2018Page 7 of 283Controller 調(diào)用業(yè)務(wù)邏輯處理后,返回 ModelAndView133DispatcherServlet 查詢 ModelAndView133ModelAndView 反饋瀏覽器 HTTP13. MVC 常用注解1336.1.10. Spring Boot 原理1341. 創(chuàng)建獨(dú)立的 Spring 應(yīng)用程序1342. 嵌入的 Tomcat,無(wú)需部署 WAR 文件1343. 簡(jiǎn)化 Maven 配置1344. 自動(dòng)配置 Spring1345. 提供生產(chǎn)就緒型功能,如指標(biāo),健康檢查和外部

29、配置1346. 絕對(duì)沒(méi)有代碼生成和對(duì) XML 沒(méi)有要求配置 11346.1.11. JPA 原理13....事務(wù)134本地事務(wù)134分布式事務(wù)135兩階段提交1361 準(zhǔn)備階段1362 提交階段:1366.1.12. Mybatis 緩存13. Mybatis 的一級(jí)緩存原理(sqlsession 級(jí)別)13. 二級(jí)緩存原理(mapper 基本)138具體使用需要配置:1396.1.13. Tomcat 架構(gòu)139微服務(wù)140....7.

30、...............1.6.服務(wù)注冊(cè)發(fā)現(xiàn)140客戶端注冊(cè)(zookeeper)140第三方注冊(cè)(獨(dú)立的服務(wù) Registrar)140客戶端發(fā)現(xiàn)141服務(wù)端發(fā)現(xiàn)142Consul142Eureka142SmartStack142Etcd142API 網(wǎng)關(guān)142請(qǐng)求轉(zhuǎn)發(fā)143響應(yīng)合并143協(xié)議轉(zhuǎn)換143數(shù)據(jù)轉(zhuǎn)換143安全認(rèn)證144配置中心144zookeeper 配置中心144配

31、置中心數(shù)據(jù)分類144調(diào)度(kafka)144服務(wù)跟蹤(starter-sleuth)144服務(wù)熔斷(Hystrix)14. Hystrix 斷路器機(jī)制1467.1.7.API 管理1468.NETTY 與 RPC1478.1.1. Netty 原理1478.1.2. Netty 高性能14.....多路復(fù)用通訊方式147異步通訊 NIO148零拷貝(DIRECT BUFFERS 使用堆外直接內(nèi)存)149內(nèi)存池(基于內(nèi)存池的緩沖區(qū)重用機(jī)制)149高效的 Reactor 線程模型149Reactor 單線程模型

32、149Reactor 多線程模型15013/04/2018Page 8 of 283主從 Reactor 多線程模型150. 無(wú)鎖設(shè)計(jì)、線程綁定15. 高性能的序列化框架151小包封大包,防止網(wǎng)絡(luò)阻塞152軟中斷 Hash 值和 CPU 綁定1528.1.3.Netty RPC 實(shí)現(xiàn)152概念152關(guān)鍵技術(shù)152核心流程152消息編解碼15....息數(shù)據(jù)結(jié)構(gòu)(接口名稱+方法名+參數(shù)類型和參數(shù)值+超時(shí)時(shí)間+ requestID)153序列化15. 通訊過(guò)程154核心問(wèn)題(線程暫停、消息亂序)1

33、54通訊流程154requestID 生成-AtomicLong154存放回調(diào)對(duì)象 callback 到全局 ConcurrentHashMap154synchronized 獲取回調(diào)對(duì)象 callback 的鎖并自旋 wait154消息的線程收到消息,找到 callback 上的鎖并喚醒1558.1.4.RMI 實(shí)現(xiàn)方式15. 實(shí)現(xiàn)步驟1558.1.5.Protoclol Buffer15. 特點(diǎn)1578.1.6.Thrift1579.網(wǎng)絡(luò)15.......1.

34、..9.1.4.網(wǎng)絡(luò) 7 層架構(gòu)159TCP/IP 原理160網(wǎng)絡(luò)訪問(wèn)層(Network Access Layer)160網(wǎng)絡(luò)層(Internet Layer)160傳輸層(Tramsport Layer-TCP/UDP)160應(yīng)用層(Application Layer)160TCP 三次握手/四次揮手161數(shù)據(jù)包說(shuō)明161三次握手162四次揮手163HTTP 原理16.傳輸流程1641:地址解析1642:封裝 HTTP 請(qǐng)求數(shù)據(jù)包1653:封裝成 TCP 包并建立連接1654:客戶機(jī)發(fā)送請(qǐng)求命1655:服務(wù)器響應(yīng)1656:服務(wù)器關(guān)閉 TCP 連接1

35、6. HTTP 狀態(tài)16. HTTPS166建立連接獲取證書167證書驗(yàn)證167數(shù)據(jù)加密和傳輸1679.1.5.CDN 原理167分發(fā)服務(wù)系統(tǒng)167負(fù)載均衡系統(tǒng):168管理系統(tǒng):16...10.日志16910.1.1. Slf4j16910.1.2. Log4j16910.1.3. LogBack169. Logback 優(yōu)點(diǎn)16910.1.4. ELK17013/04/2018Page 9 of 28311.ZOOKEEPER17111.1.1. Zookeeper 概念17111.1.1. Zook

36、eeper 角色17....Leader171Follower171Observer171ZAB 協(xié)議172事務(wù)編號(hào) Zxid(事務(wù)請(qǐng)求計(jì)數(shù)器+ epoch)172epoch172Zab 協(xié)議有兩種模式-恢復(fù)模式(選主)、廣播模式(同步)172ZAB 協(xié)議 4 階段172Leader election(選舉階段-選出準(zhǔn) Leader)172Discovery(發(fā)現(xiàn)階段-接受提議、生成 epoch、接受 epoch)173Synchronization(同步階段-同步 follower 副本)173Broadcast(廣播階段-l

37、eader 消息廣播)173ZAB 協(xié)議 JAVA 實(shí)現(xiàn)(FLE-發(fā)現(xiàn)階段和同步合并為 Recovery Phase(恢復(fù)階段)173.投票機(jī)制17311.1.2. Zookeeper 工作原理(原子廣播)17411.1.3. Znode 有四種形式的目錄節(jié)點(diǎn)174KAFKA17512.1.1. Kafka 概念17512.1.2. Kafka 數(shù)據(jù)存儲(chǔ)設(shè)計(jì)175...3.partition 的數(shù)據(jù)文件(offset,MessageSize,data)175數(shù)據(jù)文件分段segment(順序讀寫、分段命令、二分查找)176數(shù)據(jù)文件

38、索引(分段索引、稀疏存儲(chǔ))17612.1.3. 生產(chǎn)者設(shè)計(jì)176...負(fù)載均衡(partition 會(huì)均衡分布到不同broker 上)176批量發(fā)送177壓縮(GZIP 或 Snappy)17712.1.1. 消費(fèi)者設(shè)計(jì)177.Consumer Group17813.RABBITMQ17913.1.1. 概念17913.1.2. RabbitMQ 架構(gòu)179.........13.1.2.

39、10.Message180Publisher180Exchange(將消息路由給隊(duì)列 )180Binding(消息隊(duì)列和交換器之間的關(guān)聯(lián))180Queue180Connection180Channel180Consumer180Virtual Host180Broker18113.1.3. Exchange 類型18..Direct 鍵(routing key)分布:181Fanout(廣播分發(fā))18.topic 交換器(模式匹配)18213/04/2018Page 10 of 28314.HBASE1834.1

40、.3.概念183列式存儲(chǔ)183Hbase 核心概念184....Column Family 列族184Rowkey(Rowkey 查詢,Rowkey 范圍掃描,全表掃描)184Region 分區(qū)184TimeStamp 多版本18414.1.4. Hbase 核心架構(gòu)184......Client:185Zookeeper:185Hmaster185HregionServer185Region 尋址方式(通過(guò)zookeeper .MET

41、A)186HDFS18614.1.5. Hbase 的寫邏輯187.Hbase 的寫入流程187獲取 RegionServer187請(qǐng)求寫 Hlog187請(qǐng)求寫 MemStore187.MemStore 刷盤187全局內(nèi)存控制188MemStore 達(dá)到上限188RegionServer 的 Hlog 數(shù)量達(dá)到上限188手工觸發(fā)188關(guān)閉 RegionServer 觸發(fā)188Region 使用 HLOG 恢復(fù)完數(shù)據(jù)后觸發(fā)18814.1.6.HBase vs Cassandra188MONGODB19015.1.1. 概念19015.1.2. 特點(diǎn)190CASSA

42、NDRA19216.1.1. 概念19216.1.2.數(shù)據(jù)模型192Key Space(對(duì)應(yīng) SQL 數(shù)據(jù)庫(kù)中的 database)192Key(對(duì)應(yīng) SQL 數(shù)據(jù)庫(kù)中的主鍵)192column(對(duì)應(yīng) SQL 數(shù)據(jù)庫(kù)中的列)192super column(SQL 數(shù)據(jù)庫(kù)不支持)192Standard Column Family(相對(duì)應(yīng) SQL 數(shù)據(jù)庫(kù)中的 table)192Super Column Family(SQL 數(shù)據(jù)庫(kù)不支持)19216.1.3. Cassandra 一致 Hash 和虛擬節(jié)點(diǎn)192一致性 Hash(多米諾 down 機(jī))192虛擬節(jié)點(diǎn)(down 機(jī)多節(jié)點(diǎn)托管)1931

43、6.1.4. Gossip 協(xié)議193Gossip 節(jié)點(diǎn)的通信方式及收斂性194Gossip 兩個(gè)節(jié)點(diǎn)(A、B)之間存在三種通信方式(push、pull、push&pull)194gossip 的協(xié)議和 seed list(防止集群分列)19416.1.5.數(shù)據(jù)復(fù)制194Partitioners(計(jì)算 primary key token 的hash 函數(shù))194兩種可用的復(fù)制策略:194SimpleStrategy:僅用于單數(shù)據(jù)中心,194將第一個(gè)replica 放在由partitioner 確定的節(jié)點(diǎn)中,其余的replicas 放在上述節(jié)點(diǎn)順時(shí)針?lè)较虻暮罄m(xù)節(jié)點(diǎn)中。19415.16.13/04

44、/2018Page 11 of 283NetworkTopologyStrategy:可用于較復(fù)雜的多數(shù)據(jù)中心。194可以指定在每個(gè)數(shù)據(jù)中心分別存儲(chǔ)多少份 replicas。19416.1.6.數(shù)據(jù)寫請(qǐng)求和協(xié)調(diào)者195協(xié)調(diào)者(coordinator)19516.1.7.數(shù)據(jù)讀請(qǐng)求和修復(fù)19516.1.8. 數(shù)據(jù)存儲(chǔ)(CommitLog、MemTable、SSTable)196SSTable 文件構(gòu)成(BloomFilter、index、data、static)19616.1.9. 二級(jí)索引(對(duì)要索引的 value 摘要,生成 RowKey)19616.1.10.數(shù)據(jù)讀寫197數(shù)據(jù)寫入和更新(數(shù)

45、據(jù)追加)197數(shù)據(jù)的寫和刪除效率極高197錯(cuò)誤恢復(fù)簡(jiǎn)單197讀的復(fù)雜度高197數(shù)據(jù)刪除(column 的墓碑)197墓碑198垃圾回收 compaction198數(shù)據(jù)讀?。╩emtable+SStables)198行緩存和鍵緩存請(qǐng)求流程圖199Row Cache(SSTables 中頻繁被訪問(wèn)的數(shù)據(jù))199Bloom Filter(查找數(shù)據(jù)可能對(duì)應(yīng)的 SSTable)200Partition Key Cache(查找數(shù)據(jù)可能對(duì)應(yīng)的 Partition key)200Partition Summary(內(nèi)存中存儲(chǔ)一些 partition index 的樣本)200Partition Index(

46、磁盤中)200Compression offset map(磁盤中)200設(shè)計(jì)模式20.7.1.24.設(shè)計(jì)原則201工廠方法模式201抽象工廠模式201單例模式201建造者模式201原型模式201適配器模式201裝飾器模式201模式201外觀

47、模式201橋接模式201組合模式201享元模式201策略模式201模板方法模式201觀察者模式201迭代子模式201責(zé)任鏈模式201命令模式201備忘錄模式201狀態(tài)模式202訪問(wèn)者模式202中介者模式202解釋器模式20218.負(fù)載均衡20318.1.1. 四層負(fù)載均衡 vs 七層負(fù)載均衡203.四層負(fù)載均衡(目標(biāo)地址和端換)203F5:硬件負(fù)載均衡器,功能很好,但是成本很高。203lvs:重量級(jí)的四層負(fù)載軟件。203nginx:輕量級(jí)的四層負(fù)載軟件,帶緩存功能,正則表達(dá)式較靈活。20313/04/2018Page 12 of 283haproxy:模擬四層轉(zhuǎn)發(fā),較靈活。20

48、3.七層負(fù)載均衡(內(nèi)容交換)203haproxy:天生負(fù)載均衡技能,全面支持七層nginx:只在 http 協(xié)議和 mail 協(xié)議上功能比較,會(huì)話保持,標(biāo)記,路徑轉(zhuǎn)移;204能與 haproxy 差不多;204apache:功能較差204Mysql proxy:功能尚可。20418.1.2. 負(fù)載均衡算法/策略204..........11.輪循均衡(Round Robin)204權(quán)重輪循均衡(Weigh

49、ted Round Robin)204隨機(jī)均衡(Random)204權(quán)重隨機(jī)均衡(Weighted Random)204響應(yīng)速度均衡(Response Time 探測(cè)時(shí)間)204最少連接數(shù)均衡(Least Connection)205處理能力均衡(CPU、內(nèi)存)205DNS 響應(yīng)均衡(Flash DNS)205哈希算法205IP 地址散列(保證客戶端服務(wù)器對(duì)應(yīng)關(guān)系穩(wěn)定)205URL 散列20518.1.3. LVS206.LVS 原理206IPVS206....LVS NAT 模式207LVS DR 模式(局域網(wǎng)改寫 mac 地址)208LVS TUN 模式(IP 封裝、跨網(wǎng)段)209LVS FULLNAT 模式21018.1.4.Keepalive21118.1.5.Nginx 反向負(fù)載均衡21..upstream_module 和健康檢測(cè)212proxy_pass 請(qǐng)求

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論