Home | 簡體中文 | 繁體中文 | 雜文 | 知乎專欄 | Github | OSChina 博客 | 雲社區 | 雲棲社區 | Facebook | Linkedin | 視頻教程 | 打賞(Donations) | About
知乎專欄多維度架構 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者”

Netkiller Architect 手札

Multi-dimension Architecture Design & Implementation / Full Stack Architect

Mr. Neo Chan, 陳景峯(BG7NYT)



中國廣東省深圳市望海路半島城邦三期
518067
+86 13113668890


電子書最近一次更新于 2020-11-22 18:29:38 .

版權聲明

轉載請與作者聯繫,轉載時請務必標明文章原始出處和作者信息及本聲明。

http://www.netkiller.cn
http://netkiller.github.io
http://netkiller.sourceforge.net
微信訂閲號 netkiller-ebook (微信掃瞄二維碼)
QQ:13721218 請註明“讀者”
QQ群:128659835 請註明“讀者”
知乎專欄 | 多維度架構

2020-11-22 18:29:38

本電子書採用碎片化寫作方式,所以沒有截止時間,寫作也很隨意,內容不斷填充,更新,章節不斷擴展和調整。每年的年底我會推出 epub, Kindle mobi 等格式的電子書。


目錄

1. 自述
1.1. 寫給讀者
1.2. 作者簡介
1.3. 如何獲得文檔
1.4. 打賞(Donations)
1.5. 聯繫方式
I. 多維度架構
1. 什麼是多維度架構
1.1. 架構與格局
1.2. 架構師的大局觀
1.3. Architecture Overview
1.4. CDN (Content Delivery Network)
1.5. 微服務
1.6. 日誌
1.7. 監控
1.8. Cluster Testing
2. 多維度架構之網站HTML
2.1. 網站的歷史演變
2.1.1. 常用軟硬件組成
2.1.2. 第一代純靜態網站
2.1.3. 第二代純文字檔案檔案採用分隔符做數據存儲網站
2.1.4. 第三代資料庫存儲網站
2.1.5. 第四代DNS負載均衡加反向代理
2.1.6. 第五代負載均衡集群
2.2. 集群(Cluster)
2.2.1. 負載均衡
2.2.1.1. DNS負載均衡
2.2.1.2. 軟件四層交換負載均衡
2.2.1.3. 應用層負載均衡
2.2.2. 高可用性集群
2.2.3. 負載均衡設備
2.2.4. 會話保持
2.2.5. 健康狀態檢查
2.3. 緩存技術
2.3.1. 瀏覽器緩存
2.3.1.1. Cache-Control
2.3.1.2. Expires
2.3.1.3. If-Modified-Since / Last-Modified
2.3.1.4. ETag / If-None-Match
2.3.2. CDN (Content Delivery Network) 與反向代理緩存
2.3.2.1. CDN介面API
2.3.2.2. 方向代理頁面過期處理
2.3.2.3. 內容版本化
2.3.3. 負載均衡設備
2.3.4. WEB伺服器緩存
2.3.5. 應用程序緩存
2.3.6. 資料庫緩存
2.4. 網站靜態內容出版
2.4.1. 架構總覽
2.4.2. 靜態化實現手段有哪些?
2.4.2.1. 生成方式
2.4.2.2. 抓取方式
2.4.2.3. 偽靜態化
2.4.2.4. 混合方式
2.4.2.5. 靜態化中的動態內容
2.4.3. cdn
2.4.4. www 伺服器
2.4.5. cms 伺服器
2.4.6. img
2.4.7. Ajax 局部更新與緩存
2.5. 多媒體數據分離
2.5.1. 圖片伺服器分離
2.5.2. 目錄層次規劃
2.5.3. 多域名訪問
2.6. 圖片尺寸優化與自動裁剪
2.6.1. 背景
2.6.2. 實現思路
2.6.2.1. 尺寸動態變化
2.6.2.2. 實時裁剪並靜態化
2.6.3. web或代理伺服器插件實現方案
2.7. 壓縮數據傳輸
2.7.1. Minify JS
2.7.1.1. jsmin
2.7.1.2. yuicompressor
2.7.1.3. shrinksafe
2.8. SSL
2.9. 搜索引擎相關優化
2.9.1. 搜索結果靜態化
2.9.2. robots.txt
2.9.3. sitemaps
2.9.4. Sitemap in robots.txt
2.9.5. sitemap 靜態內容生成工具
2.10. 靜態網站繁簡轉換
3. 多維度架構之網絡損耗
3.1. 中國的大網絡環境
3.2. 架構設計需要考慮網絡損耗
3.2.1. 硬件造成的網絡損耗
3.2.2. 雲平台造成的網絡損耗
3.2.3. 容器中造成的網絡損耗
3.2.4. 微服務造成的網絡損耗
3.3. 總結
4. 多維度架構之超時時間
4.1. 無處不在的超時時間
4.2. 流量漏斗
4.3. 微服務的超時時間
4.4. 容器技術的超時時間
4.5. 最後總結
5. 多維度架構之會話數
5.1. 路由器和防火牆的會話數
5.2. 負載均衡設備的會話數
5.3. 伺服器的會話數
5.4. 應用程序的會話數
6. 多維度架構之日誌
6.1. 一次切割日誌引發的血案
6.1.1. 日誌是怎麼產生的
6.1.2. 讓我們看個究竟
6.1.2.1. 第一種情況,日誌檔案被重命名
6.1.2.2. 第二種情況,日誌檔案被刪除
6.1.2.3. 第三種情況,日誌沒有被刪除,也沒有被重命名,而是被其他程序做了修改
6.1.3. 經典案例分析
6.1.4. 怎樣監控日誌
6.1.5. 總結
6.2. 日誌歸檔與數據挖掘
6.2.1. 什麼日誌歸檔
6.2.2. 為什麼要做日誌歸檔
6.2.3. 何時做日誌歸檔
6.2.4. 歸檔日誌放在哪裡
6.2.5. 誰去做日誌歸檔
6.2.6. 怎樣做日誌歸檔
6.2.6.1. 系統日誌
6.2.6.2. 應用程序日誌
6.2.6.3. 日誌格式轉換
6.2.6.4. 日誌中心方案
7. 多維度架構之監控
7.1. 背景
7.2. 概述
7.3. 怎樣監控
7.3.1. 衛星監測
7.3.2. 逐級診斷
7.3.3. 模擬人工
7.3.4. 數據分析
7.3.5. 監控與開發
7.4. 總結
8. 分散式計劃任務
8.1. 什麼是分散式計劃任務
8.2. 為什麼採用分散式計劃任務
8.3. 何時使用分散式計劃任務
8.4. 分散式計劃任務的部署
8.5. 誰來寫分散式計劃任務
8.6. 怎麼實現分散式計劃任務
8.6.1. 分散式互斥鎖
8.6.2. 隊列
8.6.3. 其他
9. 多維度架構之安全
9.1. 植入式攻擊入侵檢測解決方案
9.1.1. 什麼是植入式攻擊?
9.1.2. 為什麼駭客會在你的系統裡面植入木馬?
9.1.3. 什麼時候被掛馬?
9.1.4. 在那裡掛馬的?
9.1.5. 誰會在你的系統裡掛馬?
9.1.6. 怎樣監控植入式攻擊
9.1.6.1. 程序與數據分離
9.1.6.2. 監控檔案變化
9.1.6.3. 安裝日誌收集程序
9.2. Shell 歷史記錄異地留痕審計與監控
9.2.1. 什麼是Shell歷史記錄異地留痕與監控
9.2.2. 什麼要將Shell歷史記錄異地留痕並監控
9.2.3. 何時做歷史記錄異地留痕
9.2.4. 在哪裡做歷史記錄異地留痕
9.2.5. 角色與權限
9.2.6. 怎麼實現歷史記錄異地留痕
9.2.6.1. 節點配置
9.2.6.2. 推送端
9.2.6.3. 收集端
9.3. 延伸閲讀
10. Shell 高級編程
10.1. 遞歸調用
10.2. 實現守護進程
10.3. 進程間通信
11. DevOps實施中你可能遇到的問題
11.1. 什麼是DevOps?
11.2. 為什麼會誕生DevOps?
11.3. DevOps 雖好,為什麼難以普及呢?
11.4. 軟件工程的歷史與進化
11.5. 為什麼很多企業為什麼實施 DevOps 以失敗告終?
11.6. CI 持續整合不是DevOps
11.7. CD 持續交付不是 DevOps
11.8. 自動化部署
11.9. 收集各部門問題
11.9.1. 自運維的需求
11.10. 收縮技術棧
11.10.1. 模組化思維
11.11. 被遺忘的資料庫
11.12. 建立中心倉庫
11.13. 緩存
11.14. 安全
12. Kubernetes & Docker 實施中你會遇到的問題
12.1. 鏡像會遇到的問題
12.1.1. 鏡像使用的OS發行版不統一
12.1.2. 安裝位置不統一
12.1.3. Linux 系統也存在BUG
12.2. 容器會遇到的問題
12.2.1. 程序啟動的區別
12.2.2. 存儲面臨的問題
12.2.3. 內部域名DNS
12.2.4. 容器與網絡
12.2.5. 容器的管理
12.2.6. 容器與安全
12.2.6.1. 網絡安全
12.2.6.2. 掛馬風險
12.2.6.3. 隔離安全
12.2.7. 容器與監控
12.2.8. 容器與CI/CD
12.2.9.
12.3. 人員的問題
12.4. 最後總結
13. 多維度架構之微服務
13.1. 微服務安全嗎?
13.1.1. 配置中心的隱患
13.1.2. 註冊中心的隱患
13.1.3. Eureka 客戶端
13.1.4. 最終總結
13.2. 熔斷器解決了什麼問題?
13.3. 微服務的性能
13.3.1. 微服務的開銷
13.4. 多維度架構之微服務拆分
13.4.1. 分散式事務之路
13.4.2. 微服務拆分法則
13.4.2.1. 基于工作流拆分服務
13.4.2.2. 服務池的概念
13.4.3. 最後總結
13.5. 介面安全
13.5.1. Restful 安全問提
13.5.2. 第一個階段採用 HTTP Basic Auth
13.5.3. 第二階段 HTTP Basic Auth + SSL
13.5.4. 第三階段 HTTP2 + HTTP Basic Auth + Oauth2
13.5.5. 第三階段,終極版誕生,HTTP2 + HTTP Basic Auth + Oauth2 + Jwt
14. 多維度架構之遠程異地災備
14.1. 背景
14.1.1. 建立容災系統需要考慮哪些因素
14.1.2. 目前容災系統的實現方式
14.1.3. 系統災難恢復等級劃分
14.1.4. 做災備你面臨最大的挑戰是什麼?
14.2. 災備整體解決方案
14.2.1. 雙活互備方案
14.2.2. 三機房互備方案
14.3. 數據中心網絡
14.3.1. 單機房高可用雙活互備解決方案
14.3.2. 雙機房互備異地災備方案
14.3.3. 三機房互備異地災備方案
14.4. 伺服器部署
14.4.1. 網站
14.4.2. 數據源
14.4.3. 資料庫
14.5. 軟件開發
14.5.1. 交易軟件分散式交易
14.5.1.1. 分散式交易解決方案一
14.5.1.2. 分散式交易解決方案一
14.5.1.3. 分散式交易解決方案一
14.5.2. 交易終端
14.5.2.1. 用戶分流
14.5.2.2. 會話保持
14.5.3. API 應用程序介面
14.5.4. 大數據的問題
14.5.4.1. 第一個階分區表
14.5.4.2. 第二個階分庫分表
14.5.5. 數據校對
14.6. 自動化運維
14.7. 災備培訓和演練
14.7.1. 培訓內容
14.7.1.1. 培訓對象
14.7.1.2. 操作流程
14.7.2. 演練環境設置
14.7.3. 演練級別與方式
14.7.4. 開始演練
14.7.4.1. 切換前操作
14.7.4.2. 切換操作
14.7.4.3. 切換後檢查
14.7.5. 演練結果檢查
14.7.6. 可能存在的風險
14.7.6.1. 主交易系統短期無法恢復
14.7.6.2. 切換災備系統後業務的影響
14.7.6.3. 數據不同步產生的影響
14.7.7. 災備系統備份
14.7.8. 系統運營維護
14.8. FAQ
14.8.1. 實現雙活最大的障礙是什麼?
14.8.2. 雙活怎麼解決數據衝突問題
15. 多維度架構之應用防火牆
15.1. 什麼是應用防火牆
15.2. 功能需求
15.2.1. 計數器
15.2.2. 訪問控制列表 ACL
15.2.3. 用戶認證
15.2.4. 協議
15.3. 簡單實現
15.3.1. 權限控制與實現
15.3.2. 演示
15.3.3. 增加7 Layer防火牆
16. 資料庫與應用程序間通信
16.1. 管道通信
16.1.1. 背景
16.1.2. 解決思路
16.1.3. Mysql plugin
16.1.4. plugin 的開發與使用
16.1.5. 插件如何使用
16.1.6. 部署相關問題
16.2. 消息隊列
16.2.1. 背景
16.2.2. 應用場景
16.2.3. Mysql plugin
16.2.4. plugin 的開發與使用
16.2.5. 插件如何使用
16.3. 資料庫與外界檔案
16.3.1. 背景
16.3.2. 解決思路
16.3.3. 解決方案
16.3.4. plugin 的開發與使用
16.3.5. 在事務中使用該插件
16.3.6. 通過觸發器調用圖片處理函數
16.4. Socket 方式
16.4.1. UDP
17. 多維度架構之消息隊列
17.1. 你是怎樣使用消息隊列的?
17.2. 你是否真正理解了消息隊列?
17.2.1. 消息隊列並不是實時的
17.2.2. 不能替代非同步執行
17.3. 使用的合理嗎?
17.4. 是否有必要使用消息隊列?
17.5. 最後總結
18. 多維度架構之分庫分表
18.1. 分表需要從業務角度考慮
18.2. 最後總結
19. 多維度架構之Socket連接數
19.1. 理解伺服器端與客戶端
19.2. 影響連接的因素有哪些?
19.3. 程序怎麼寫?
20. 多維度架構之壓力測試
20.1. 壓力測試中存在的問題
20.1.1. (What) 什麼是壓力測試
20.1.1.1. 壓力測試存在哪些問題
20.1.2. (Why) 為什麼做壓力測試
20.1.3. (Where) 在哪裡做壓力測試
20.1.4. (When) 什麼時間做壓力測試
20.1.5. (Who) 壓力測試過程參與人員
20.1.6. (How) 如何做壓力測試
20.2. 協議測試
20.2.1. What 什麼是協議測試
20.2.2. Why 為什麼要做協議測試
20.2.3. where 在哪兒測試
20.2.4. when 什麼時候測試
20.2.5. Who 誰來做,執行對象
20.2.6. How 怎樣做測試
20.2.7. 如何學習協議測試
20.2.8. 總結
20.3. 打破軟件自動化測試的格局
20.3.1. 自動化測試的誤區
20.3.2. 分層與部署帶來的問題
20.3.3. 壓力測試存在的問題
20.3.3.1. 壓力測試環境
20.3.3.2. 測試順序
20.3.3.3. 瓶頸分析
20.3.3.4. 指導開發
20.3.4. 持續整合形同虛設
20.3.5. 測試的終極目標
II. Database Modeling Design
21. 關係型資料庫設計
21.1. 數據字典
21.2. 用戶帳號表
21.2.1. 用戶註冊鍵盤跟蹤表設計
21.3. 分類表設計
21.3.1. 樹形分類表
21.3.2. 多對多分類
21.3.3. 快速檢索子分類設計
21.3.4. 計算節點數量
21.3.5. Example
21.4. 文章表設計
21.4.1. 分區表設計
21.4.2. Title性能優化
21.5. 評論表
21.6. 記錄點擊率,閲讀次數,及評分表
21.7. 產品屬性表
21.7.1. 簡單實現
21.7.2. 實現屬性組管理
21.7.3. 可編輯屬表
21.8. 商品庫存表
21.9. 國際化語言表
21.10. Workflow
21.11. 內容版本控制
21.12. logging 日誌表的設計
21.13. uuid 替代傳統序列 id
21.14. 動態配置表
21.14.1. 配置表歷史記錄
21.15. 驗證碼
21.16. 手機歸屬地資料庫表
21.17. 數據檢查
21.17.1. 身份證校驗
21.18. 創建與修改時間
21.19. 在綫用戶表
21.20. HTML TO Text
21.21. SNS 資料庫設計
21.21.1. people 表
21.21.2. firend 表
21.21.3. 演示
21.21.4. network 表
21.22. 資料庫與緩存
21.22.1. 什麼是資料庫緩存?
21.22.2. 為什麼緩存數據呢?
21.22.3. 什麼時候使用資料庫緩存
21.22.4. 涉及緩存的地方有哪些
21.22.5. 誰來控制資料庫緩存
21.22.6. 怎麼控制資料庫緩存
21.22.6.1. SQL_CACHE 緩存
21.22.6.2. 禁止緩存 SQL_NO_CACHE
21.22.6.3. 關閉緩存 set session query_cache_type=off
21.23. PostgreSQL 所特有資料庫設計
21.23.1. 國家地區表的設計
21.23.2. 話題討論表的設計
21.23.3. 賬戶表/餘額表/消費儲蓄表
21.24. 資料庫並行訪問控制
21.24.1. 防止並行顯示
21.25. Sharding
21.25.1. horizontal
21.25.2. vertical
21.25.3. 新聞資料庫分表案例
21.26. 資料庫安全
21.26.1. 資料庫結構版本控制
21.26.1.1. 什麼是資料庫結構版本控制
21.26.1.2. 為什麼要做資料庫結構本版控制
21.26.1.3. 何時做資料庫結構本版控制
21.26.1.4. 在哪裡做資料庫結構本版控制
21.26.1.5. 誰來負責資料庫結構本版控制
21.26.1.6. 怎樣做資料庫結構本版控制
21.26.2. 保護表
21.26.3. 保護表欄位
21.26.4. 時間一致性
21.26.5. 為數據安全而分庫
21.26.6. 內容版本控制,撰改留痕
21.26.7. 資料庫審計表
21.26.8. 用戶/角色認證
21.26.9. Token 認證
21.26.10. 數據加密
21.26.10.1. AES_ENCRYPT / AES_DECRYPT
21.26.10.2. 加密欄位
21.26.11. 開發加密插件開發
21.26.12. 數據區塊鏈
21.26.13. 狀態保護
21.26.14. 數據歸檔
21.27. MySQL 大數據操作注意事項
21.27.1. 關於 delete
21.27.2. 關於 update
21.27.3. 關於創建索引
21.27.4. 關於 OPTIMIZE
21.27.5. 關於切換引擎
21.27.6. 確保SELECT不被受阻
22. 參考例子
22.1. CMS 資料庫設計
22.2. 數據屬性例子
22.2.1. 布爾狀態
22.2.2. 流狀態
22.2.3. 商品屬性
22.2.3.1. 鞋
22.2.3.2. 褲子
22.2.3.3. 服裝
22.2.3.4. 內衣
22.2.3.5. 隱形眼鏡
22.2.3.6. 戒指
22.2.4. 手機號碼分配
22.2.5. 身份證
22.2.6. 銀行卡
23. NoSQL OOD(Object-Oriented Design)
23.1. MongoDB
23.1.1. 配置表 config
23.1.2. 日誌表
23.2. Cassandra
23.2.1. User And Profile
23.2.2. Category
23.2.3. Article
23.2.4. Product and ProductAttribute
23.2.5. Address
23.2.6. 練習
24. Spring Data 最佳實踐
24.1. MySQL
24.1.1. 分類表
24.1.2. 為欄位增加索引
24.1.3. 復合索引
24.1.4. 一對多實例
24.1.5. ManyToMany 多對多
24.1.6. 外鍵級聯刪除
24.2. MongoDB
24.2.1. 枚舉定義
24.2.2. 日誌表
24.2.3. 地址與定位
III. 運維篇
25. IDC
25.1. 網絡設備配置管理與版本控制
25.1.1. 背景
25.1.2. 怎樣實現網絡設備配置管理
25.1.3. 總結
25.2. 機房遷移
25.2.1. 拓撲確立
25.2.2. 存儲規劃
25.2.2.1. RAID Disk Group 規劃
25.2.2.2. 檔案系統規劃
25.2.2.3. 目錄規劃
25.2.3. 設備上架
25.2.4. 操作系統初始化
25.2.5. 伺服器及運行環境
25.2.6. 部署應用程序
25.2.7. 監控系統
25.2.8. 日誌中心
25.2.9. 測試
25.3. 網綫怎樣連接才合理
25.3.1. 單個硬件防火牆方案
25.3.1.1. 防火牆
25.3.1.2. 交換機
25.3.2. 雙防火牆方案
25.3.3. 網卡
25.3.3.1. 內外隔離
25.3.3.2. 負載均衡
25.3.3.3. 交叉互聯
25.3.3.4. 網絡適配器
25.4. 記錄思科路由器/防火牆/交換機日誌
25.4.1. 開啟日誌
25.4.2. syslogd 伺服器腳本
25.5. 影響網絡流量的因素
25.5.1. 頻寬
25.5.1.1. 防火牆頻寬
25.5.1.2. 交換機頻寬
25.5.1.3. 伺服器頻寬
25.5.2. 會話數
25.5.2.1. 防火牆會話數
25.5.2.2. 伺服器會話數
25.5.2.3. 應用伺服器會話數
25.5.3. IO
25.5.3.1. 硬碟 HDD
25.5.3.2. 固態硬碟 SSD
25.5.3.3. 分佈IO
25.5.3.4. FC SAN
25.5.3.5. iSCSI / FCoE
25.5.3.6. InfiniBand 或 RDMA
26. Server
26.1. Linux 系統安全與優化配置
26.1.1. Openssh 安全配置
26.1.1.1. 禁止root用戶登錄
26.1.1.2. 限制SSH驗證重試次數
26.1.1.3. 禁止證書登陸
26.1.1.4. 使用證書替代密碼認證
26.1.1.5. 圖形窗口客戶端記憶密碼的問題
26.1.1.6. 關閉 GSSAPI
26.1.1.7. 禁止SSH連接埠映射
26.1.1.8. IP地址限制
26.1.1.9. 禁止SSH密碼窮舉
26.1.2. Shell 安全
26.1.2.1. .history 檔案
26.1.2.2. sudo 安全問題
26.1.2.3. 臨時檔案安全
26.1.2.4. 執行權限
26.1.3. 防火牆
26.1.3.1. 策略
26.1.3.2. 防止成為跳板機
26.1.3.3. 連接埠安全
26.1.3.4. 封鎖特定字元串
26.1.4. Linux 系統資源調配
26.1.4.1. /etc/security/limits.conf
26.1.4.2. 關閉寫磁碟I/O功能
26.1.5. PAM 插件認證加固配置
26.1.5.1. pam_tally2.so
26.1.5.2. pam_listfile.so
26.1.5.3. pam_access.so
26.1.5.4. pam_wheel.so
26.2. Tomcat 安全配置與性能優化
26.2.1. JVM
26.2.1.1. 使用 Server JRE 替代JDK。
26.2.1.2. JAVA_OPTS
26.2.1.3. java.security 優化
26.2.2. Tomcat 優化
26.2.2.1. maxThreads 連接數限制
26.2.2.2. 虛擬主機
26.2.2.3. 壓縮傳輸
26.2.3. Tomcat 安全配置
26.2.3.1. 禁用8005連接埠
26.2.3.2. 安裝後初始化配置
26.2.3.3. 啟動用戶與連接埠
26.2.4. 如何部署應用程序
26.2.5. 延伸閲讀
26.3. PHP 安全與性能優化
26.3.1. Apache mod_php / php-fpm
26.3.1.1. 用戶權限
26.3.1.2. web server 版本信息
26.3.1.3. php_flag / php_admin_flag
26.3.1.4. 防止URL注入
26.3.2. php.ini
26.3.2.1. Magic quotes
26.3.2.2. 危險PHP函數
26.3.2.3. 隱藏PHP版本信息
26.3.2.4. session名字可以泄露你的伺服器採用php技術
26.3.2.5. 隱藏PHP出錯信息
26.3.2.6. open_basedir 防止操作web環境意外檔案目錄
26.3.3. 開發於安全
26.3.3.1. 徹底解決目錄于檔案的安全
26.3.3.2. 目錄訪問控制
26.3.3.3. Session / Cookie安全
26.3.3.4. 注入安全
26.3.4. 執行效率
26.3.4.1. timeout
26.3.4.2. 瀏覽器上傳檔案尺寸控制
26.3.5. 伺服器版本信息
26.4. 環境安裝模板化
26.4.1. 雲主機初始化
26.4.2. CentOS 7 初始化
26.4.3. Nginx
26.4.4. Tomcat
26.4.5. Node.js
26.4.6. MongoDB
26.5. 時間同步
26.6. 郵件系統
26.6.1. Mailing List
26.7. TPC
26.8. IOPS (Input/Output Operations Per Second, pronounced i-ops)
26.9. rPerf
26.10. 磁碟規劃
26.10.1. 物理隔離
26.10.2. 硬件邏輯卷隔離
26.11. Distributed File System(簇檔案系統)
26.11.1. FC 光纖存儲
26.11.2. 聚合檔案系統
26.11.3. 全局檔案系統
26.11.4. 負載均衡檔案系統
26.11.5. 網絡塊設備
26.11.6. Storage 存儲
26.11.6.1. 存儲種類
26.11.6.2. RAID
26.11.6.3. File System 檔案系統
26.11.6.4. 數據訪問協議
26.11.6.5. 數據管理
26.11.7. 磁碟快照
26.12. iDRAC / iLO / IMM
27. Monitor solution
27.1. 網絡監控
27.1.1. 流量監控
27.1.2. 交換機監控
27.2. 集群監控
27.3. 操作系統監控需求
27.3.1. CPU 相關監控
27.3.2. 磁碟相關監控
27.3.3. 內存相關監控
27.3.4. 網絡監控
27.3.5. 權限監控
27.3.6. 進程相關監控
27.3.7. 時間同步監控
27.3.8. 檔案系統與系統日誌監控
27.4. 服務監控
27.4.1. Nginx 監控
27.4.2. Redis 監控
27.4.3. Rabbit 監控
27.4.4. Elasticsearch 監控
27.4.5. 資料庫監控需求
27.4.5.1. 資料庫監控指標
27.5. 網站安全與預警機制
27.6. 網絡監控
27.6.1. DNS解析監控
27.6.2. 路由監控
27.6.3. 流量監控
27.6.4. 會話數監控
27.7. 內容監控
27.8. DHCP
27.8.1. DHCP Server
27.9. Routing
27.9.1. 策略路由
27.10. routing-table
27.11. Example
27.12. 監控方法
27.12.1. 人工監控
27.12.2. 機器監控
28. Backup
28.1. help
28.1.1. Task
28.1.2. Schedule
28.1.3. Crontab
28.2. 配置檔案備份
28.2.1. Firewall and Switch
28.2.2. Server
29. DIY Firewall & VPN
29.1. Firewall
29.2. 3 Layer VPN
29.3. 7 Layer VPN
29.4. 替代 CentOS 7/8 中的 firewalld
29.4.1. Demo
29.4.2. Firewall Script
IV. Software architecture (軟件架構)
30. 前端架構
30.1. Javascript Framework
31. Project
31.1. 開源模式
31.2. 開發語言及平台
31.2.1. 分層架構
31.2.1.1. 中間件 Middleware
31.2.1.2. 分層
31.2.2. Web 2.0
31.2.3. 雲計算
31.2.3.1. 雲計算的三種服務模式
31.2.4. 跨平台
31.2.5. 編譯語言比腳本語言安全
31.2.6. 封裝重用
31.2.7. 相關的工具
31.2.7.1. 開發工具
32. Framework Design
32.1. 開發框架 Framework
32.1.1. HMVC
32.1.2. REST
32.1.3. SNA (Shared Nothing Architecture)
32.1.4. 其他
32.2. MVC Framework Design (設計MVC框架)
32.2.1. HMVC Framework
32.3. REST
32.3.1. RESTful JSON API
32.3.2. Ajax 與 RESTful 跨域
32.4. Service-oriented architecture (SOA)
32.4.1. SOAP實現
32.4.2. MQ 實現
32.5. Dispatcher MVC核心分發器
32.5.1. URL設計
32.5.1.1. URL 作為MVC 的Controller
32.5.1.2. URL 偽靜態化,用於SEO優化
32.5.2. Dispatcher 的實現方式
32.6. Plugin & Hook 設計與實現
32.6.1. 插件管理平台
32.6.2. 介面定義
32.6.3. 插件
32.6.4. 測試
32.7. Interface
32.7.1. 訪問介面協議
32.7.2. 介面性能問題
32.7.3. 介面安全問題
32.7.3.1. 訪問權限
32.8. 模板(template)
32.8.1. HTML 頁面優化
32.9. Session/Cookie
32.9.1. Session
32.9.2. Session 共享
32.9.3. Cookie
32.9.3.1. Cookie 安全
32.9.3.2. cookie-free domains
32.9.3.3. P3P
32.10. 國際化 Locale database。
32.10.1. Unicode
32.11. 資料庫訪問
32.11.1. CRUD
32.11.2. Active Record
32.11.3. OR Mapping
32.12. Cache
32.12.1. 頁面緩存
32.12.2. 局部緩存
32.13. Single sign-on (SSO) 單點登錄
32.14. 搜索引擎
32.15. Synchronous/Asynchronous
32.16. Message Queuing
32.17. Hash
32.18. Sharding 垂直/水平切割
32.18.1. 面向服務
32.18.2. 面向資料庫
32.19. 日誌系統
32.20. Cache
32.20.1. CDN/逆向代理緩存
32.20.2. Cache 生存時間
32.21. i18n 國際化
32.21.1. 數組方式
32.21.2. 資料庫方式
32.21.3. 檔案檔案
32.21.4. Gettext
32.21.5. 資料結構
32.22. RSS / ATom
32.22.1. Atom
32.23. Logging 日誌
32.23.1. 日誌的格式
32.23.2. 日誌存貯
32.23.2.1. 本地存儲
32.23.2.2. 遠程存儲
32.23.3. Log4cpp/Log4j/Log2PHP
32.23.4. Remote Syslog
32.24. debug
32.25. 性能優化
32.25.1. 儘量使用單引號
32.26. Design pattern (設計模式)
32.26.1. Singleton 單件模式
32.27. AOP(Aspect Oriented Programming)
32.28. 信息安全
32.28.1. CSRF(Cross-site request forgery)跨站請求偽造
32.28.2. Session 撰改演示
32.28.3. 用戶註冊與登錄安全
32.28.4. 目錄檔案與權限
32.28.4.1. 讀寫權限
32.28.4.2. 訪問權限
32.28.5. 密碼安全
32.28.6. 注入檢查
32.28.7. 防止惡意刷新與重複提交
32.28.8. 屏蔽出錯信息
32.28.8.1. 屏蔽php出錯信息
32.29. 序列化
V. 設計與解決方案
33. 支付平台方案
33.1. 方案
33.1.1. 商戶方案
33.1.2. 銀行方案
33.2. 支付介面
33.3. 支付派台後台
34. 電子商務網站
34.1. Product
34.2. Cart & Checkout
34.2.1. 物流配送插件設計
34.3. 促銷優惠組件設計
35. 微信公眾平台
35.1. 微信公眾平台原理
35.2. 微信公眾平台通常提供的服務模式
35.3. 微信公眾平台開發
1. 附錄
術語表

插圖清單

8.1. 分時方案
8.2. HA 高可用方案
8.3. 多路心跳方案
8.4. 任務搶佔方案
8.5. 任務輪循或任務輪循+搶佔排隊方案
14.1. 單機房高可用雙活互備解決方案
14.2. 雙機房異地災備方案
14.3. 三機房互備異地災備方案
14.4. 動態頁面方案
14.5. 數據源災備解決方案
14.6. 資料庫災備解決方案
14.7. 雙向通知解決方案
14.8. 消息對列解決方案
14.9. CVS開發框架
14.10. 傳統的分表方案
14.11. 推薦的分表方案
14.12. 基于功能分表方案

表格清單

21.1. 工作流模擬

範例清單

2.1. example robots.txt
16.1. 發送短信
16.2. 處理圖片
16.3. 身份證號碼校驗
16.4. 靜態化案例
16.5. 數據同步案例
21.1. identity_card 身份證歸屬地表
21.2. 演示 SQL_CACHE
21.3. 演示 SQL_NO_CACHE
21.4. 演示 query_cache_type=off 關閉查詢緩存
21.5. 遞歸查詢實例 city 表
21.6. 話題討論表的設計
26.1. /etc/pam.d/sshd - pam_tally2.so
26.2. /etc/pam.d/sshd - pam_listfile.so
27.1. dhcp vlan rip
28.1. Backup program
32.1. php language package
32.2. sql table language package
32.3. Example for ECSHOP
修訂歷史
修訂 1.0.0Jun 29, 2020Neo
計劃改變,啟動寫作計劃
修訂 0.1.1Sep 12, 2011Neo
章節做了大調整,將文檔分為五塊,多維度架構,開發,運維,SQA,還有DevOps。
修訂 0.1.0May 15, 2010Neo
增加解決方案一節,並填充了大量章節。同時對完成這篇文檔信心大增
修訂 0.0.42010Neo
這篇文檔几乎沒有時間和精力編輯,內容增加不多。
修訂 0.0.4April 15, 2009Neo
這篇文檔几乎擱淺,沒有時間和精力,沒有編輯加入。今天做了一下佈局調整,增加一些內容。
修訂 0.0.3Sep. 17, 2008Neo
加入關於存儲的內容
修訂 0.0.1May 24, 2008Neo
李振韜加入編譯團隊
修訂 0.0.0May 22, 2008Neo
這是一個值得紀念的日子