目录
本书配套资源
第1章架构理论
1.1架构基础
1.1.1架构定义
1.1.2核心要素
1.1.3架构本质
1.1.4历史背景
1.1.5不合理架构
1.1.6架构师的能力
1.1.7风格与模式
1.2架构设计
1.2.1架构考量
1.2.2设计目的
1.2.3设计原则
1.2.4设计流程
1.2.5设计决策
1.3架构分类
1.3.1业务架构
1.3.2应用架构
1.3.3技术架构
1.3.4代码架构
1.3.5部署架构
1.4架构风格
1.4.1分层架构风格
1.4.2基于组件的架构风格
1.4.3面向服务的架构风格
1.4.4分布式系统架构风格
1.4.5消息总线架构风格
1.4.6以数据为中心的架构风格
1.5网站架构演进
1.5.1单体架构
1.5.2多应用服务器架构
1.5.3多应用服务器集群式微服务架构
1.5.4多应用服务器集群式微服务中台架构
1.5.5云原生高可用微服务架构
第2章高并发架构
2.1并发基础知识
2.1.1并发编程的重要性
2.1.2进程和线程的区别
2.1.3进程间通信方式
2.1.4线程状态
2.1.5守护线程
2.1.6协程
2.1.7并发并行
2.1.8CPU核心数和线程数的关系
2.1.9CPU缓存的作用
2.1.10多核CPU缓存架构中的数据访问流程
2.1.11伪共享如何避免
2.1.12死锁
2.1.13懒汉和饿汉式单例模式
2.2缓存一致性协议
2.2.1高速缓存
2.2.2执行计算的流程
2.2.3缓存一致性协议MESI
2.2.4多核缓存协同操作
2.2.5缓存行伪共享
2.2.6Store Buffers
2.2.7硬件内存模型
2.3JMM、Volatile、CAS和ABA
2.3.1JMM
2.3.2Volatile
2.3.3CAS
2.3.4ABA问题
2.3.5原子操作类
2.4并发集合
2.4.1CopyOnWriteArrayList
2.4.2CopyOnWriteArraySet
2.4.3ConcurrentHashMap
2.4.4ConcurrentLinkedQueue
2.5阻塞队列
2.5.1阻塞队列简介
2.5.2ArrayBlockingQueue
2.5.3LinkedBlockingQueue
2.5.4SynchronousQueue
2.5.5DelayQueue
2.6AQS
2.6.1ReentrantLock
2.6.2Semaphore、CountDownLatch和CyclicBarrier
2.6.3ReentrantReadWriteLock
2.7ThreadLocal
2.8Synchronized
2.8.1使用方式
2.8.2对象头与Mark Word
2.8.3底层原理
2.8.4对象从无锁到偏向锁转化的过程
2.8.5轻量级锁升级过程
2.8.6自旋锁
2.8.7重量级锁
2.9高并发下的缓存
2.9.1多级缓存
2.9.2网页详情页性能优化
2.10高并发下的读写
2.10.1高并发读系统
2.10.2拼多多的商品搜索与百度搜索引擎
2.10.3高并发写系统
2.10.4高并发挑战
2.10.5支付系统和红包系统
2.10.6高并发读策略
2.10.7高并发写方案
2.10.8读写锁
2.11限流
2.11.1限流算法
2.11.2同一IP地址请求限流
2.11.3设置白名单
2.11.4网关校验
2.11.5同一用户请求限流
2.11.6应用服务限流
第3章高性能架构
3.1线程池
3.1.1线程池执行任务的流程
3.1.2线程池状态和工作线程数量
3.1.3不建议使用stop()方法停止线程
3.1.4线程池核心方法
3.1.5线程池回收机制
3.1.6线程池为什么使用阻塞队列
3.1.7设置线程池的核心线程数和最大线程数
3.1.8并行实现归并排序
3.2缓存
3.2.1Redis事务
3.2.2Pipeline功能
3.2.3缓存的数据一致性
3.2.4HyperLogLog
3.2.5缓存更新设计模式
3.2.6开发规范与性能优化
3.2.7Redis Stream
3.2.8版本变化
3.3海量数据处理
3.3.1存储系统技术选型
3.3.2业务系统如何选择合适的存储产品
3.3.3数据量级与存储挑战
3.3.4海量数据查询的挑战
3.3.5亿级数据导入优化
3.4数据同步
3.4.1实现MySQL到Redis的同步
3.4.2Canal
3.4.3跨系统实时数据同步
3.4.4不停机更换数据库
3.4.5数据库切换过程中实现比对和补偿程序
3.4.6安全地实现数据备份和恢复
3.5JVM
3.5.1JVM调优工具
3.5.2Java诊断工具Arthas
3.5.3ZGC垃圾回收器
第4章高可用与高可靠
4.1数据库
4.1.1问题与故障分析
4.1.2大规模场景下小概率事件成为常态
4.1.3数据库架构演进
4.1.4隐患运营运维
4.1.5指标建设
4.1.6运维周报
4.1.7模拟数据库中主库和从库的各种故障场景
4.1.8预案编排服务
4.1.9安装配置MHA
4.2Redis
4.2.1Redis集群原理
4.2.2集群安装与配置
4.3Nacos
4.3.1Nacos高可用集群底层技术实现
4.3.2数据同步机制
4.3.3集群高可用
4.3.4数据库高可用
4.3.5健康检查与自动剔除机制
4.3.6读写分离与COW技术实现
4.3.7动态配置与热更新机制
4.3.8轻量级通信协议应用
4.3.9安装配置Nacos集群
4.4Kafka
4.4.1Kafka的Log日志梳理
4.4.2Kafka生产调优实践
4.4.3Kafka与ZooKeeper元数据管理及选举机制
4.5Elasticsearch
4.5.1Elasticsearch集群架构
4.5.2Elasticsearch 要点及优化
4.5.3读写性能调优
4.5.4JIT
4.6性能测试
4.6.1性能测试流程
4.6.2性能测试工具
第5章分布式架构
5.1网络通信
5.1.1计算机网络
5.1.2计算机网络体系结构及其协议模型
5.1.3地址和端口号
5.1.4TCP特性
5.1.5Wireshark的应用与网络协议
5.1.6UDP与相关协议概述
5.2网络编程
5.2.1Socket编程
5.2.2短连接与长连接的区分及应用场景
5.2.3BIO编程模型及其局限性
5.2.4NIO编程模型及其优势
5.2.5Reactor模式
5.2.6同步与异步、阻塞与非阻塞
5.2.7I/O模型
5.2.8epoll的原理和流程
5.3多数据源管理
5.3.1基于Spring的AbstractRoutingDataSource方案
5.3.2基于MyBatis的多SqlSessionFactory方案
5.3.3基于dynamicdatasource框架的多数据源管理方案
5.4分布式事务
5.4.1两阶段提交
5.4.2JTA/XA规范实现
5.4.3Seata AT模式实现
5.4.4TCC实现
5.5分布式锁
5.5.1应用场景
5.5.2Redis分布式锁的实现
5.5.3Redisson原理
5.6分布式集群部署
5.6.1选配
5.6.2集群部署
第6章微服务架构
6.1微服务架构的问题与挑战及其背景
6.1.1微服务架构的问题
6.1.2DDD领域驱动方法论与微服务架构
6.1.3分布式设计中的问题及解决方案
6.1.4微服务架构对运维和团队的要求
6.1.5微服务架构中的团队协作问题
6.1.6微服务的现状和实施建议
6.1.7微服务改造的注意事项
6.1.8决策考量
6.1.9全面考量
6.2微服务架构演进
6.3拆分还是整合
6.3.1微服务的定义与优势
6.3.2微服务的核心价值
6.3.3为什么害怕微服务
6.3.4微服务架构复杂性
6.3.5微服务架构与单体架构的对比
6.3.6混合模型的优势
6.3.7架构设计原则
6.4微服务拆分
6.4.1微服务拆分原则
6.4.2微服务拆分策略
第7章架构安全
7.1安全问题
7.1.1身份认证
7.1.2加密通信
7.1.3验证码技术
7.1.4防御SQL注入、XSS和CSRF攻击
7.1.5防御恶意软件和SOC攻击
7.1.6防御网络钓鱼和中间人攻击
7.1.7防御DDoS攻击和缓冲区溢出攻击
7.1.8防御文件上传漏洞
7.1.9防御目录遍历漏洞
7.1.10后门攻击
7.1.11社会工程学攻击
7.1.12DNS欺骗攻击
7.1.13DoS攻击防护
7.1.14IP欺骗攻击与ARP欺骗攻击防护
7.1.15网络嗅探攻击防护
7.1.16防止暴力破解
7.1.17防止挂马攻击
7.1.18防止钓鱼攻击
7.1.19防止端口扫描攻击
7.1.20防止网站伪造攻击
7.1.21防范缓存投毒攻击
7.1.22防范会话劫持攻击
7.1.23防范网络密码劫持攻击
7.1.24防范路由器漏洞攻击
7.1.25防范系统漏洞攻击
7.1.26防范网络拓扑透视攻击
7.1.27防范网络重定向攻击
7.2云服务安全
7.2.1云服务费用管理与安全使用
7.2.2CDN使用与网站减速器推荐及成本与风险控制
7.2.3云服务安全防护措施
7.2.4应对网络攻击的策略
7.3系统安全
7.3.1可监控
7.3.2灰度发布
7.3.3回滚策略
7.4部署安全策略
7.4.1多层次防护体系
7.4.2数据库安全
7.4.3锁机制
7.4.4监控和响应机制
7.4.5密码和访问策略
第8章架构落地
8.1业务逻辑
8.1.1活动策划与目标设定
8.1.2红包类型与发放机制
8.1.3用户参与流程
8.1.4活动规则与限制
8.1.5数据分析与效果评估
8.1.6营销推广与用户互动
8.1.7风险管理与应急预案
8.1.8持续优化与迭代
8.2红包雨算法
8.2.1二倍均值法
8.2.2线段切割法
8.3技术难点分析
8.3.1技术选型考虑因素
8.3.2红包推送技术
8.3.3并发性能
8.3.4安全问题
8.3.5核心功能实现
8.3.6性能优化
8.3.7架构重构升级
8.3.8本地压测
8.4实践经验
8.4.1思从深而行从简
8.4.2不要过度实现
8.4.3故障隐患无法彻底消灭
8.4.4用户会怎么做
8.4.5设计两次
8.4.6别怕搞砸
8.4.7慎重
8.4.8发现设计中的不足
8.4.9让“屎山”代码腐化得慢些
8.4.10对架构的理解
