课程大纲:
一、软件架构设计概述
情景剧:软件架构设计的价值
一个人的软件设计过程
5个人的软件设计过程
10个人的软件设计过程
20个人以上的软件设计过程
结论:揭示架构设计的价值与架构师的作用
架构设计5视图法:
介绍架构设计5视图法
运用5视图法设计软件架构的过程
二、逻辑架构设计过程
案例讲解逻辑架构的设计过程
逻辑架构的概念与作用
需求分析与用例模型设计
由粗到细的需求分析过程
不同类型的用例描述
流程分析与行动图
领域模型分析
讲解领域驱动设计的思想
在需求讨论中绘制领域模型
用原文分析法进行领域分析
需求确认与可行性分析
探讨需求不可行给项目带来的风险
案例讲解主动式需求分析的过程
三、 开发架构设计过程
案例讲解开发架构的设计过程
开发架构的概念与作用
讨论合理的分层架构
案例:演示一个工资系统的需求变更过程
展示三次巨大需求变更及其分析设计过程
探讨什么样的架构能真正适应需求的变更
技术选型与决策
软件架构设计
案例讲解软件的可扩展设计
案例讲解软件的易维护设计
模块划分与分包
软件开发规范的制订
四、数据架构设计过程
探讨传统的数据架构设计过程
讲解基于领域的数据架构设计过程
如何将领域模型转换为数据库设计
传统的4种关系转换为数据库设计
继承关系的3种数据库设计
如何将领域模型转换为软件
贫血模型 vs. 充血模型
五、运行架构设计过程
探讨运行架构的设计过程
关注关键点与难点而不是全局
属性→场景→决策的分析过程
专题讨论运行架构需要决策的内容
并发访问与串行操作
同步操作与异步操作
进程与线程
六、物理架构设计过程
探讨物理架构设计过程
案例讲解一些常见物理架构设计
案例讲解应用架构设计
案例讲解一些技术方案的编写
七、逐步演化的架构设计
恰如其分的架构设计
恰如其分的架构设计过程
风险驱动的架构设计
逐步演化的架构设计过程
探讨老系统维护过程中架构设计的问题
剖析以往采取的办法及失败的原因
? (1)缝缝补补不能从根本上解决
(2)走一步退两步浅尝辄止的根源
(3)抛弃一切从头再来的风险
剖析问题的根源与解决的办法
演化式改造的过程
平台建设与重构并行
改造与维护并举
八 、大并发相关的指标
高并发相关的指标
吞吐量 / 每秒事务数 / 事务响应时间
用户数 / 用户并发数 / *用户并发数
高并发问题的解决思路
目标→问题→方案
业务梳理与优化
九、并发问题的快速优化策略
传统架构的演变过程
All-in-One的架构设计
多级集中的架构设计
传统架构面临的挑战
基于风险的架构设计思想
先识别未来存在的风险,再进行有针对的架构设计
用*快的速度解决*急迫的问题
并发问题的快速优化策略
智能DNS及其优缺点
CDN内容分发网络及其优缺点
负载均衡与反向代
(1)Nginx技术及其解决的问题
(2)动静分离的设计
(3)Zookeeper及其非中心化设计
十、数据库瓶颈及其优化策略
数据库瓶颈
现有数据库设计及其性能瓶
Shared Disk vs. Shared Nothing
介绍PostgreSQL与GreenPlum
数据库读写分离的设计
三种不同类型的操作及其优化策略 业务操作 / 随机查询 / 统计分析
MySQL主从机实现读写分离
(1)MySQL主从机实现读写分离的思想与局限
(2)在原有系统上实现读写分离的改造过程
真正实现读写分离的设计方案
数据库分库的设计思想
纵向拆分的设计思想及其注意的问题
案例:国家金税三期的架构设计
案例:阿里巴巴的架构设计
横向拆分的设计思想及其注意的问题
按地域拆分的设计及其评价
按用户号进行拆分的设计及其评价 案例:淘宝网的架构设计解析
在原有系统上如何实现数据库分库
(1)纵向拆分的系统改造过程
(2)横向拆分的系统改造过程
十一、应用缓存的设计
应用缓存技术
应用缓存技术解决的问题
单机缓存 vs. 分布式缓存
分布式缓存的特点及其设计
Memcached技术
Memcached技术及其特点
分布式哈希算法及其一致性哈希
Memcached的部署结构及其应用方案 案例:负载均衡的session同步及其故障转移
如何在原有系统上进行应用缓存改造
Spring + Memcached的设计改造过程
Hibernate + Memcached的设计改造过程
Memcached的命中率分析及其调优
应用缓存的设计过程中应当注意的问题
十二、 内存数据库的设计
内存数据库技术
内存数据库的概念
解析内存数据库的运行原理
Oracle TimesTen的介绍
Gemfire及其在12306的应用
Redis内存数据库技术
Redis的运行原理及其特点
Redis的部署形式
Redis的应用设计 案例:spring-redis-data的设计应用 案例:京东订单系统的优化过程
内存数据库的设计局限
十三、 异步化操作的设计
异步化操作的原理
案例:12306的异步化改造过程
异步化操作的设计实践
分布式队列的设计
十四、 互联网不断演进的架构设计过程
互联网+时代的架构设计特点
互联网+带来的巨大变革
互联网公司不断面对的升级改造
传统行业必须面对的互联网转型
好的架构源于不断的衍变
案例:58同城的架构衍变过程
*初的架构设计
网络接入层的改造过程
数据库拆分的改造过程
服务化为中心的改造过程
十五 、NoSQL数据库及其设计
NoSQL数据库的概念
分布式架构与CAP理论
ACID vs. BASE
强一致性与弱一致性
NoSQL数据库的特点
MongoDB数据库
MongoDB数据库简介
MongoDB数据库的概念模型
插入、更新、删除、查询操作
案例:MongoDB实现的海量存储与快速查询
MongoDB数据库的优劣势分析与适用范围
十六、 Hadoop大数据处理技术
Hadoop简介
Hadoop生态圈
Hadoop架构及其与传统架构的优势
Hadoop的核心组件
解析HDFS分布式文件系统的运行原理
解析MapReduce分布式运算框架的运行原理
MapReduce的优劣势与适用范围
案例:WordCount词频计算程序的分析设计过程
Hadoop的生态圈
Hive技术
Hive技术简介
Hive与传统关系型数据库的比较
Hive的建表、载入数据、查询数据的语句
Spark技术
Spark设计原理
Spark编程实践
案例:Spark小步快跑的设计过程
Sqoop技术
Sqoop技术简介
Sqoop导入语句
Sqoop导出语句
HBase数据库
HBase数据库的简介
HBase数据库的概念模型
HBase的面向列式存储
HBase的系统架构
案例:用HBase存储与展示搜索结果
ElasticSearch搜索引擎
ElasticSearch设计原理
ElasticSearch+Hive的设计方案
ElasticSearch的RUSTful数据搜索
例:如何实现海量数据秒级响应
Hadoop的安装部署
Hadoop的物理部署架构
Hadoop的技术选型
Hadoop的组件部署结构
十七、 面向主题的数据仓库设计
数据仓库的概念
大范围数据统计的操作特点与设计思路
数据仓库的架构设计