課程介紹:
在大型網站架構的演變過程中,集中式的架構設計出于系統的可擴展性、可維護性以及成本等多方面的因素考慮,逐漸被放棄,轉而采用分布式的架構設計。分布式架構的核心思想是采用大量廉價的PC server,構建一個低成本、高可用、高可擴展、高吞吐的集群系統,以支撐海量的用戶訪問和數據存儲,理論上具備無限的擴展能力。分布式系統的設計,是一門復雜的學問,它涉及到包括通信協議、遠程調用,服務治理,系統安全、存儲、搜索、監控、穩定性保障、性能優化、數據分析、數據挖掘等方方面面,而本課程將為大家一一進行介紹。
——————-課程目錄——————-
第一課
大型分布式系統概述
集中式、垂直式、分布式應用架構的變遷思路
SOA體系架構,服務化的演變
SOA的基礎–rpc遠程調用
–rpc與通信協議
–對象序列化方式的選擇
–異構系統還是同構系統
–遠程調用的實現方式,基于http協議的遠程調用,基于tcp協議的遠程調用
第二課
服務的路由和負載均衡
–為什么需要服務治理
–服務的負載均衡,復雜環境下負載均衡所面臨的問題(負載不均、多機房)
–負載均衡算法及其擴展
–如何動態配置路由規則
–服務上線下線的動態感知
–客戶端容災方案的實現
–如何使用zookeeper實現服務路由和負載均衡
SOA架構所面臨的問題
第三課
構建安全的分布式網站
常見的web攻擊手段,xss、crsf、sql注入攻擊、DDos攻擊等等
面對攻擊,應該如何防御,具體的防御手段
如何架構安全的網站,保障通信的安全
常用的安全算法的使用場景<1>
–校驗數據是否被篡改,數字摘要
–加密傳輸內容,對稱加密算法
–校驗消息發送和接收方身份,非對稱加密算法
第四課
構建安全的分布式網站
常用的安全算法的使用場景<2>
數字簽名及其使用場景
數字證書及其使用場景
為什么需要認證
–簽名認證的原理和實現
–摘要認證的原理和實現
為什么需要https協議,https協議能夠帶來什么
–https協議的原理解析
–使用tomcat部署https web
平臺廠商所面臨的問題及開放平臺的出現
oauth協議解決了什么問題及oauth協議的適用場景
第五課
分布式系統基礎設施之緩存
–緩存的使用場景
–數據一致性的保障
–緩存的負載均衡問題,雪崩效應的產生
–如何解決緩存的負載均衡問題
–緩存的強依賴及可靠性的解決
–memcache的介紹及使用
分布式系統基礎設施之持久化存儲
–IOE太貴,無法擴展,mysql+pc server節約成本
–pc server的承載有限,業務拆分的實施,mysql復制策略
–讀的壓力過大,讀寫分離
–單表數據量太大,則分表
–寫入壓力太大,則分庫
第六課
分布式系統基礎設施之持久化存儲
–為提升性能,mysql的取舍
–海量數據,高并發寫入,該hbase上場了
–hbase的api,row key的設計
–什么場景不適合使用hbase
–小而美的redis,多種數據類型,快速存取
–redis數據類型的介紹,使用案例
分布式系統基礎設施之消息系統
–消息系統的使用場景,為什么要使用消息系統
–消息發送的兩種模式,p2p和訂閱
–消息發送的一致性和可靠性,最終一致性解決方案
–消息投遞的順序問題的產生及消息內容的去重
第七課
分布式系統基礎設施之垂直化搜索引擎
垂直化搜索的使用場景
基于lucene的搜索引擎的基本原理
–構建索引
–索引更新與查詢
–結果排序
–高亮
–中文分詞
–索引優化
搜索引擎的擴展性
使用搜索引擎所面臨的問題
第八課
保障分布式系統的穩定性
在線日志分析及常用命令
在線日志分析的技巧,sed、awk、shell的及使用
如何查看服務器當前的狀態,服務器的監控指標解析
–load、cup利用率
–磁盤剩余空間
–網絡traffic
–磁盤IO
–內存使用
–qps、rt
jvm gc對穩定性和性能的影響
如何分析jvm產生的gc日志
第九課
保障分布式系統的穩定性
集群監控及流量控制
–服務器的心跳檢測實現方法
–大流量到來前,服務器的容量評估及應用水位的檢測
–如何對流量進行控制
–服務穩定性的實現方案: 依賴管理&服務分級&優雅降級&開關&應急預案
高并發系統與普通系統的區別
–原子操作解決了什么問題
–jvm原子操作實現的原理(包含jvm源代碼解析)
第十課
保障分布式系統的穩定性
如何設計高并發系統
–java的多線程同步及鎖的機制
–分布式條件下數據一致性及系統可擴展性的保障
–高并發條件下減庫存的案例
性能優化–找出系統的性能瓶頸
–找出前端的性能問題
–監測網頁的響應時間
–監測java方法的響應時間
第十一課
性能優化–找出系統的性能瓶頸
–java應用程序gc日志的分析
–影響mysql數據庫性能的因素
為什么要進行性能測試
性能測試的方法和工具
–apache ab
–apache jmeter
–load runner
性能環境和真實環境的差異
如何進行性能優化
–前端性能優化的實施
–java程序性能優化的實施
第十二課
如何進行性能優化
–數據壓縮帶來性能的提升,不同算法效率的比較
–使用緩存提升性能
–mysql數據庫查詢優化
–java應用程序gc優化
–使用新硬件提升性能
java應用常用的故障排查工具
–jps&jmap&jinfo&jstack
–mat
–VisualVM
–java應用典型問題
第十三課
數據分析對于大型分布式網站的意義
分布式文件系統
離線數據分析,mapreduce、hive
實時數據分析,storm
離線數據同步,Apache sqoop
實時數據同步,mysql的實現方案
數據報表能提供什么,報表系統的實現思路