Home | 简体中文 | 繁体中文 | 杂文 | 知乎专栏 | Github | OSChina 博客 | 云社区 | 云栖社区 | Facebook | Linkedin | 视频教程 | 打赏(Donations) | About
知乎专栏多维度架构 微信号 netkiller-ebook | QQ群:128659835 请注明“读者”

部分 I. 多维度架构

Multi-dimension Architecture

目录

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.1.1. 在程序中灵活操作 Cache-Control
2.3.1.1.2. 非程序文件缓存处理
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.3.1. 将日志放入数据库
6.2.6.3.2. Apache Pipe
6.2.6.3.3. Log format
6.2.6.3.4. 日志导入到 MongoDB
6.2.6.4. 日志中心方案
6.2.6.4.1. 软件安装
6.2.6.4.2. 节点推送端
6.2.6.4.3. 日志收集端
6.2.6.4.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. 测试的终极目标