Home | 簡體中文 | 繁體中文 | 雜文 | 打賞(Donations) | 雲棲社區 | OSChina 博客 | Facebook | Linkedin | 知乎專欄 | Github | Search | About

Netkiller Architect 手札

Multi-dimension Architecture Design & Implementation / Full Stack Architect

Mr. Neo Chan, 陳景峯(BG7NYT)


中國廣東省深圳市龍華新區民治街道溪山美地
518131
+86 13113668890


文檔尚未完成,請勿轉載!

版權聲明

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

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

$Date: 2013-02-04 09:33:18 +0800 (Mon, 04 Feb 2013) $


目錄

1. 自述
1.1. 系列文檔
1.2. 作者簡介
1.3. 寫給讀者
1.4. 文檔下載
1.4.1. Netkiller 手札 2017版電子書(epub,kindle,chm,pdf)
1.5. 打賞(Donations)
1.5.1. 微信(Wechat)
1.5.2. 支付寶(Alipay)
1.5.3. PayPal Donations
1.5.4. 銀行(Bank)
I. Multi-dimension Architecture
1. Architecture Overview
1.1. CDN (Content Delivery Network)
2. Enterprise Architecture
2.1. 倉庫管理系統(warehouse management system)
3. Systems architecture(系統架構)
3.1. 集群(Cluster)
3.1.1. 負載均衡
3.1.1.1. DNS負載均衡
3.1.1.2. 軟件四層交換負載均衡
3.1.1.3. 應用層負載均衡
3.1.2. 高可用性集群
3.1.3. 負載均衡設備
3.1.4. 會話保持
3.1.5. 健康狀態檢查
3.2. 緩存技術
3.2.1. 瀏覽器緩存
3.2.1.1. Expires
3.2.1.2. If-Modified-Since / Last-Modified
3.2.1.3. ETag / If-None-Match
3.2.2. CDN/逆向代理緩存
3.2.3. 負載均衡設備
3.2.4. WEB伺服器緩存
3.2.5. 應用程序緩存
3.2.6. 資料庫緩存
3.3. 靜態化
3.3.1. 生成方式
3.3.2. 抓取方式
3.3.3. 偽靜態化
3.3.4. 混合方式
3.3.5. 靜態化中的動態內容
3.4. 多媒體數據分離
3.4.1. 圖片伺服器分離
3.4.2. 目錄層次規劃
3.4.3. 多域名訪問
3.5. 壓縮數據傳輸
3.6. 時間同步
3.7. 郵件系統
3.7.1. Mailing List
3.8. 日誌集中管理
3.8.1. 系統日誌
3.8.2. 應用程序日誌
3.9. SSL
3.10. Storage 存儲
3.10.1. 存儲種類
3.10.1.1. Direct Attached Storage
3.10.1.2. Network-attached storage
3.10.1.3. Storage area network
3.10.1.3.1. FC SAN
3.10.1.3.2. IP SAN
3.10.1.3.3. FCoE (Fibre Channel over Ethernet)
3.10.2. RAID
3.10.2.1. 緩存伺服器
3.10.2.2. Web 伺服器
3.10.2.3. 資料庫
3.10.2.4. 數據備份
3.10.3. File System 檔案系統
3.10.3.1. Distributed File System(DFS)
3.10.4. 數據訪問協議
3.10.5. 數據管理
3.10.5.1. Share 共享
3.10.5.2. Mirror 遠程鏡像同步
3.10.5.3. 壓縮與重複數據消除
3.10.5.4. Backup 備份與恢復
3.10.5.5. 故障報告
3.11. 磁碟快照
II. Database Modeling Design
4. 關係型資料庫設計
4.1. 數據字典
4.2. 用戶帳號表
4.2.1. 用戶註冊鍵盤跟蹤表設計
4.3. 分類表設計
4.3.1. 樹形分類表
4.3.2. 多對多分類
4.3.3. 快速檢索子分類設計
4.3.4. 計算節點數量
4.3.5. Example
4.4. 文章表設計
4.4.1. 分區表設計
4.4.2. Title性能優化
4.5. 評論表
4.6. 記錄點擊率,閲讀次數,及評分表
4.7. 產品屬性表
4.7.1. 簡單實現
4.7.2. 實現屬性組管理
4.7.3. 可編輯屬表
4.8. 商品庫存表
4.9. 國際化語言表
4.10. Workflow
4.11. 內容版本控制
4.12. logging 日誌表的設計
4.13. uuid 替代傳統序列 id
4.14. 動態配置表
4.14.1. 配置表歷史記錄
4.15. 驗證碼
4.16. 手機歸屬地資料庫表
4.17. 數據檢查
4.17.1. 身份證校驗
4.18. 創建與修改時間
4.19. 在綫用戶表
4.20. HTML TO Text
4.21. SNS 資料庫設計
4.21.1. people 表
4.21.2. firend 表
4.21.3. 演示
4.21.4. network 表
4.22. PostgreSQL 所特有資料庫設計
4.22.1. 國家地區表的設計
4.22.2. 話題討論表的設計
4.22.3. 賬戶表/餘額表/消費儲蓄表
5. 資料庫安全
5.1. 保護表
5.2. 保護表欄位
5.3. 時間一致性
5.4. 為數據安全而分庫
5.5. 內容版本控制,撰改留痕
5.6. 資料庫審計表
5.7. 用戶/角色認證
5.8. Token 認證
5.9. 數據加密
5.9.1. AES_ENCRYPT / AES_DECRYPT
5.9.2. 加密欄位
5.10. 開發加密插件開發
5.11. 數據區塊鏈
6. Sharding
6.1. horizontal
6.2. vertical
6.3. 新聞資料庫分表案例
7. 資料庫並行訪問控制
7.1. 防止並行顯示
8. 數據與應用程序間通信
8.1. 管道通信
8.1.1. 背景
8.1.2. 解決思路
8.1.3. Mysql plugin
8.1.4. plugin 的開發與使用
8.1.5. 插件如何使用
8.1.6. 部署相關問題
8.2. 消息隊列
8.2.1. 背景
8.2.2. 應用場景
8.2.3. Mysql plugin
8.2.4. plugin 的開發與使用
8.2.5. 插件如何使用
8.3. 資料庫與外界檔案
8.3.1. 背景
8.3.2. 解決思路
8.3.3. 解決方案
8.3.4. plugin 的開發與使用
8.3.5. 在事務中使用該插件
8.3.6. 通過觸發器調用圖片處理函數
8.4. Socket 方式
8.4.1. UDP
9. NoSQL OOD(Object-Oriented Design)
9.1. MongoDB
9.1.1. 配置表 config
9.1.2. 日誌表
9.2. Cassandra
9.2.1. User And Profile
9.2.2. Category
9.2.3. Article
9.2.4. Product and ProductAttribute
9.2.5. Address
9.2.6. 練習
10. 資料庫與緩存
10.1. 什麼是資料庫緩存?
10.2. 為什麼緩存數據呢?
10.3. 什麼時候使用資料庫緩存
10.4. 涉及緩存的地方有哪些
10.5. 誰來控制資料庫緩存
10.6. 怎麼控制資料庫緩存
10.6.1. SQL_CACHE 緩存
10.6.2. 禁止緩存 SQL_NO_CACHE
10.6.3. 關閉緩存 set session query_cache_type=off
11. 數據屬性
11.1. 布爾狀態
11.2. 流狀態
11.3. 商品屬性
11.3.1. 鞋
11.3.2. 褲子
11.3.3. 服裝
11.3.4. 內衣
11.3.5. 隱形眼鏡
11.3.6. 戒指
11.4. 手機號碼分配
11.5. 身份證
12. Spring Data 最佳實踐
12.1. 分類表
12.2. 為欄位增加索引
12.3. 復合索引
12.4. 一對多實例
12.5. ManyToMany 多對多
12.6. 外鍵級聯刪除
III. Software architecture (軟件架構)
13. Project
13.1. 開源模式
13.2. 開發語言及平台
13.2.1. 分層架構
13.2.1.1. 中間件 Middleware
13.2.1.2. 分層
13.2.2. Web 2.0
13.2.3. 雲計算
13.2.3.1. 雲計算的三種服務模式
13.2.4. 跨平台
13.2.5. 編譯語言比腳本語言安全
13.2.6. 封裝重用
13.2.7. 相關的工具
13.2.7.1. 開發工具
14. Design pattern (設計模式)
14.1. Singleton 單件模式
15. AOP(Aspect Oriented Programming)
16. Framework Design
16.1. 開發框架 Framework
16.1.1. HMVC
16.1.2. REST
16.1.3. SNA (Shared Nothing Architecture)
16.1.4. 其他
16.2. MVC Framework Design (設計MVC框架)
16.2.1. HMVC Framework
16.3. REST
16.3.1. RESTful JSON API
16.3.2. Ajax 與 RESTful 跨域
16.4. Service-oriented architecture (SOA)
16.4.1. SOAP實現
16.4.2. MQ 實現
16.5. Dispatcher MVC核心分發器
16.5.1. URL設計
16.5.1.1. URL 作為MVC 的Controller
16.5.1.2. URL 偽靜態化,用於SEO優化
16.5.2. Dispatcher 的實現方式
16.6. Plugin & Hook 設計與實現
16.6.1. 插件管理平台
16.6.2. 介面定義
16.6.3. 插件
16.6.4. 測試
16.7. Interface
16.7.1. 訪問介面協議
16.7.2. 介面性能問題
16.7.3. 介面安全問題
16.7.3.1. 訪問權限
16.8. Javascript Framework
16.8.1. Minify JS
16.8.1.1. jsmin
16.8.1.2. yuicompressor
16.8.1.3. shrinksafe
16.9. 模板(template)
16.9.1. HTML 頁面優化
16.10. Session/Cookie
16.10.1. Session
16.10.2. Session 共享
16.10.3. Cookie
16.10.3.1. Cookie 安全
16.10.3.2. cookie-free domains
16.10.3.3. P3P
16.11. 國際化 Locale database。
16.11.1. Unicode
16.11.2. 繁簡轉換
16.12. 資料庫訪問
16.12.1. CRUD
16.12.2. Active Record
16.12.3. OR Mapping
16.13. Cache
16.13.1. 頁面緩存
16.13.2. 局部緩存
16.14. Single sign-on (SSO) 單點登錄
16.15. 搜索引擎
16.16. Synchronous/Asynchronous
16.17. Message Queuing
16.18. Hash
16.19. Sharding 垂直/水平切割
16.19.1. 面向服務
16.19.2. 面向資料庫
16.20. 日誌系統
16.21. Cache
16.21.1. CDN (Content Delivery Network) 與反向代理
16.21.1.1. CDN介面API
16.21.1.2. 方向代理頁面過期處理
16.21.1.3. 內容版本化
16.21.2. HTTP Cache
16.21.2.1. 在程序中靈活操作 Cache-Control
16.21.2.2. 非程序檔案緩存處理
16.21.3. Cache 生存時間
16.22. i18n 國際化
16.22.1. 數組方式
16.22.2. 資料庫方式
16.22.3. 檔案檔案
16.22.4. Gettext
16.22.5. 資料結構
16.23. RSS / ATom
16.23.1. Atom
16.24. Logging 日誌
16.24.1. 日誌的格式
16.24.2. 日誌存貯
16.24.2.1. 本地存儲
16.24.2.2. 遠程存儲
16.24.3. Log4cpp/Log4j/Log2PHP
16.24.4. Remote Syslog
16.25. Search
16.25.1. 搜索結果靜態化
16.25.2. SEO Module
16.25.2.1. robots.txt
16.25.2.1.1. Sitemap in robots.txt
16.25.2.2. sitemaps
16.26. 微服務安全解決方案
16.26.1. Restful 安全問提
16.26.2. 第一個階段採用 HTTP Basic Auth
16.26.3. 第二階段 HTTP Basic Auth + SSL
16.26.4. 第三階段 Oauth
16.26.5. 第三階段,終極版誕生,SSL使用雙向認證
16.27. debug
16.28. 性能優化
16.28.1. 儘量使用單引號
17. 信息安全
17.1. CSRF(Cross-site request forgery)跨站請求偽造
17.2. Session 撰改演示
17.3. 用戶註冊與登錄安全
17.4. 目錄檔案與權限
17.4.1. 讀寫權限
17.4.2. 訪問權限
17.5. 密碼安全
17.6. 注入檢查
17.7. 防止惡意刷新與重複提交
17.8. 屏蔽出錯信息
17.8.1. 屏蔽php出錯信息
18. 序列化
IV. Testing
19. Automatic Testing
19.1. Cluster Testing
19.2. 靜態內容並發測試
19.3. 動態內容測試
19.4. 業務邏輯並發能力
V. 硬件篇
20. 網綫怎樣連接才合理
20.1. 單個硬件防火牆方案
20.1.1. Switch
20.1.2. Firewall
20.2. 雙防火牆方案
21. Network Traffic
21.1. bandwidth
21.1.1. firewall
21.1.2. switch
21.1.2.1. 聚合連接埠
21.1.3. Server
21.2. Session
21.2.1. firewall
21.2.2. Server
21.2.3. application
21.3. IO
21.3.1. 分佈IO
21.3.2. FC SAN
21.3.3. iSCSI / FCoE
21.3.4. InfiniBand 或 RDMA
22. Distributed File System(簇檔案系統)
22.1. 聚合檔案系統
22.2. 全局檔案系統
22.3. 負載均衡檔案系統
22.4. 網絡塊設備
23. Server
23.1. TPC
23.2. IOPS (Input/Output Operations Per Second, pronounced i-ops)
23.3. rPerf
23.4. 磁碟規劃
23.4.1. 物理隔離
23.4.2. 硬件邏輯卷隔離
23.5. 網卡
23.5.1. 網口規劃
23.5.1.1. 內外隔離
23.5.1.2. 負載均衡
23.5.1.3. 交叉互聯
23.5.2. 常見網絡適配器品牌
23.5.3. 1G 千兆乙太網產品
23.5.4. 10G 萬兆乙太網產品
23.6. Fibre Channel HBA 卡
23.7. iDRAC / iLO / IMM
VI. 設計與解決方案
24. Monitor solution
24.1. 網絡監控
24.1.1. 流量監控
24.1.2. 交換機監控
24.2. 集群監控
24.3. 操作系統監控需求
24.3.1. CPU 相關監控
24.3.2. 磁碟相關監控
24.3.3. 內存相關監控
24.3.4. 網絡監控
24.3.5. 權限監控
24.3.6. 進程相關監控
24.3.7. 時間同步監控
24.3.8. 檔案系統與系統日誌監控
24.4. 服務監控
24.4.1. Nginx 監控
24.4.2. Redis 監控
24.4.3. Rabbit 監控
24.4.4. Elasticsearch 監控
24.4.5. 資料庫監控需求
24.4.5.1. 資料庫監控指標
24.5. 網站安全與預警機制
24.6. 網絡監控
24.6.1. DNS解析監控
24.6.2. 路由監控
24.6.3. 流量監控
24.6.4. 會話數監控
24.7. 內容監控
24.8. DHCP
24.8.1. DHCP Server
24.9. Routing
24.9.1. 策略路由
24.10. routing-table
24.11. Example
24.12. 監控方法
24.12.1. 人工監控
24.12.2. 機器監控
25. Backup
25.1. help
25.1.1. Task
25.1.2. Schedule
25.1.3. Crontab
25.2. 配置檔案備份
25.2.1. Firewall and Switch
25.2.2. Server
26. 支付平台方案
26.1. 方案
26.1.1. 商戶方案
26.1.2. 銀行方案
26.2. 支付介面
26.3. 支付派台後台
27. 電子商務網站
27.1. Product
27.2. Cart & Checkout
27.2.1. 物流配送插件設計
27.3. 促銷優惠組件設計
28. 微信公眾平台
28.1. 微信公眾平台原理
28.2. 微信公眾平台通常提供的服務模式
28.3. 微信公眾平台開發
29. DIY Firewall & VPN
29.1. Firewall
29.2. 3 Layer VPN
29.3. 7 Layer VPN
30. 日誌
31. Web Service Security
31.1. 權限控制與實現
31.2. 演示
31.3. 增加7 Layer防火牆
32. 環境安裝模板化
32.1. 雲主機初始化
32.2. CentOS 7 初始化
32.3. Nginx
32.4. Tomcat
32.5. Node.js
32.6. MongoDB
33. 區塊鏈探索
33.1. 以太坊物流場景解決方案
33.2. 食品安全溯源案例
33.2.1. 背景
33.2.2. 安全問題
33.2.3. 防偽問題
33.2.4. 性能問題
33.2.5. 顆粒度問題
33.2.6. 存儲規劃
33.2.7. 大數據問題
33.2.8. BI商業智能
33.2.9. 採集終端
33.2.10. 多媒體數據
33.2.11. 物流介面
33.2.12. 如何激勵用戶
33.2.13. 以太坊解決方案
33.2.13.1. 應用場景一
33.2.13.2. 應用場景二
33.2.13.3. 用戶留言
33.2.14. Hyperledger 解決方案
33.3. 以太坊·電影院場景區塊鏈應用探索
33.3.1. 合約檔案
33.3.2. 合約用法
33.4. 遊戲領域區塊鏈探索
33.4.1. 遊戲代幣
33.4.2. 玩家屬性與遊戲裝備
33.4.3. 裝備屬性與規範
33.4.4. 物品合成計算
33.4.5. 實施步驟
33.5. 以太坊競猜活動區塊鏈探索
33.6. 使用代幣替代傳統積分系統
33.6.1. 規劃
33.6.1.1. 賬號規劃
33.6.1.2. 日誌規劃
33.6.1.3. 監控規劃
33.6.1.4. 代幣構成規劃
33.6.2. 實施步驟
33.6.3. ERC20 代幣合約
33.6.4. 打通用戶註冊
33.6.5. 現有用戶怎麼處理
33.6.6. 贈送代幣
33.6.7. 賺取代幣
33.6.8. 用戶登錄
33.6.9. 積分商城
33.6.10. 代幣報表
33.6.10.1. 曾幣報表
33.6.10.2. 積分商城報表
33.6.11. 代幣交易
33.7. 區塊鏈徵信解決方案探索
33.7.1. 需求分析與概要設計
33.7.2. 資料結構
33.7.3. 將徵信資料寫入區塊鏈
33.7.4. 查詢區塊數據
33.7.5. 刪除區塊
1. 附錄
術語表

表格清單

7.1. 工作流模擬

範例清單

4.1. identity_card 身份證歸屬地表
4.2. 遞歸查詢實例 city 表
4.3. 話題討論表的設計
8.1. 發送短信
8.2. 處理圖片
8.3. 身份證號碼校驗
8.4. 靜態化案例
8.5. 數據同步案例
10.1. 演示 SQL_CACHE
10.2. 演示 SQL_NO_CACHE
10.3. 演示 query_cache_type=off 關閉查詢緩存
16.1. php language package
16.2. sql table language package
16.3. example robots.txt
17.1. Example for ECSHOP
24.1. dhcp vlan rip
25.1. Backup program
修訂歷史
修訂 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
這是一個值得紀念的日子