Home | 简体中文 | 繁体中文 | 杂文 | 打赏(Donations) | 云栖社区 | OSChina 博客 | Facebook | Linkedin | 知乎专栏 | Github | Search | About

Netkiller Architect 手札

Multi-dimension Architecture Design & Implementation / Full Stack Architect

Mr. Neo Chan, 陈景峯(BG7NYT)



中国广东省深圳市望海路半岛城邦三期
518067
+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. 数据区块链
5.12. 状态保护
5.13. 数据归档
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. MySQL
12.1.1. 分类表
12.1.2. 为字段增加索引
12.1.3. 复合索引
12.1.4. 一对多实例
12.1.5. ManyToMany 多对多
12.1.6. 外键级联删除
12.2. MongoDB
12.2.1. 枚举定义
12.2.2. 日志表
12.2.3. 地址与定位
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
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
这是一个值得纪念的日子