课程费用

6800.00 /人

课程时长

3

成为教练

课程简介

随着网络与信息技术的高速发展,软件研发逐渐朝着大规模、高复杂度的大型软件系统发展。特别是随着近几年互联网的高速发展,带动着全行业的互联网转型,使得未来的软件系统还将向着持续性、深层次架构调整的方向发展。在这样的背景下,如何从全局的角度思考软件系统方方面面的问题,提前识别软件项目的技术风险点,并有针对性地制订技术方案,以及如何构建一个更加灵活、易于调整、快速变化的软件系统,成为大型软件系统至关重要的设计内容。

目标收益

本课程首先将系统地讲述高质量的软件架构该设计过程,包括如何运用领域驱动设计的思想贯穿整个架构设计,又如何使软件系统在衍变中调整架构,从而适应需求的变化;如何运用5视图的方法,全面地思考软件架构各方面的问题:从需求的角度进行可行性分析;从全局的角度进行软件分层、技术选型、模块划分等方面的设计;运用数据持久化的方式设计数据结构;运用“属性->场景->决策”的过程把握非功能设计;从部署、网络、性能的角度进行物理架构的设计,从而有效避免架构设计时遗漏关键风险点,使架构设计过程变得有序。

培训对象

中高级工程师、企业架构师、软件设计师、数据库/存储技术人员、技术决策/解决方案人员等。

课程大纲

第一部分 高质量架构设计
第一单元 软件架构设计概述
情景剧:软件架构设计的价值
1. 一个人的软件设计过程
2. 5个人的软件设计过程
3. 10个人的软件设计过程
4. 10个人以上的软件设计过程
结论:揭示架构设计的价值与架构师的作用

架构设计5视图法:
1. 介绍架构设计5视图法
2. 运用5视图法设计软件架构的过程
第二单元 逻辑架构设计过程 案例讲解逻辑架构的设计过程
1. 逻辑架构的概念与作用
2. 需求分析与用例模型设计
 由粗到细的需求分析过程
 不同类型的用例描述
3. 流程分析与行动图
4. 领域模型分析
 讲解领域驱动设计的思想
 在需求讨论中绘制领域模型
 用原文分析法进行领域分析
5. 需求确认与可行性分析
 探讨需求不可行给项目带来的风险
 案例讲解主动式需求分析的过程
第三单元 开发架构设计过程 案例讲解开发架构的设计过程
1. 开发架构的概念与作用
2. 讨论合理的分层架构
案例:演示一个工资系统的需求变更过程
 展示三次巨大需求变更及其分析设计过程
 探讨什么样的架构能真正适应需求的变更
3. 技术选型与决策
4. 软件架构设计
 案例讲解软件的可扩展设计
 案例讲解软件的易维护设计
5. 模块划分与分包
6. 软件开发规范的制订
第四单元 数据架构设计过程 探讨传统的数据架构设计过程
讲解基于领域的数据架构设计过程
1. 如何将领域模型转换为数据库设计
 传统的4种关系转换为数据库设计
 继承关系的3种数据库设计
2. 如何将领域模型转换为软件
贫血模型 vs. 充血模型
第五单位 运行架构设计过程 探讨运行架构的设计过程
1. 关注关键点与难点而不是全局
2. 属性→场景→决策的分析过程

专题讨论运行架构需要决策的内容
1. 并发访问与串行操作
2. 同步操作与异步操作
3. 进程与线程
第六单元 物理架构设计过程 探讨物理架构设计过程
1. 案例讲解一些常见物理架构设计
2. 案例讲解应用架构设计
3. 案例讲解一些技术方案的编写
第七单元 逐步演化的架构设计 恰如其分的架构设计
1. 恰如其分的架构设计过程
案例:一个邮件系统的架构演变过程
2. 风险驱动的架构设计

逐步演化的架构设计过程
1. 探讨老系统维护过程中架构设计的问题
2. 剖析以往采取的办法及失败的原因
 缝缝补补不能从根本上解决
 走一步退两步浅尝辄止的根源
 抛弃一切从头再来的风险
3. 剖析问题的根源与解决的办法
 演化式改造的过程
 平台建设与重构并行
 改造与维护并举

剖析架构设计中的一些常见误区
第二部分互联网架构设计
第八单元 大并发相关的指标
高并发相关的指标
1. 吞吐量 / 每秒事务数 / 事务响应时间
2. 用户数 / 用户并发数 / 最大用户并发数

高并发问题的解决思路
1. 目标→问题→方案
2. 业务梳理与优化
第九单元 并发问题的快速优化策略 传统架构的演变过程
1. All-in-One的架构设计
2. 多级集中的架构设计
3. 传统架构面临的挑战

基于风险的架构设计思想
1. 先识别未来存在的风险,再进行有针对的架构设计
2. 用最快的速度解决最急迫的问题

并发问题的快速优化策略
1. 智能DNS及其优缺点
2. CDN内容分发网络及其优缺点
3. 负载均衡与反向代理
1)Nginx技术及其解决的问题
2)动静分离的设计
3)Zookeeper及其非中心化设计
第十单元 数据库瓶颈及其优化策略 数据库瓶颈
1. 现有数据库设计及其性能瓶
2. Shared Disk vs. Shared Nothing
3. 介绍PostgreSQL与GreenPlum

数据库读写分离的设计
1. 三种不同类型的操作及其优化策略
业务操作 / 随机查询 / 统计分析
2. MySQL主从机实现读写分离
1)MySQL主从机实现读写分离的思想与局限
2)在原有系统上实现读写分离的改造过程
3. 真正实现读写分离的设计方案

数据库分库的设计思想
1. 纵向拆分的设计思想及其注意的问题
案例:国家金税三期的架构设计
案例:阿里巴巴的架构设计
2. 横向拆分的设计思想及其注意的问题
1)按地域拆分的设计及其评价
2)按用户号进行拆分的设计及其评价
案例:淘宝网的架构设计解析
3. 在原有系统上如何实现数据库分库
1)纵向拆分的系统改造过程
2)横向拆分的系统改造过程
第十一单元 应用缓存的设计 应用缓存技术
1. 应用缓存技术解决的问题
2. 单机缓存 vs. 分布式缓存
3. 分布式缓存的特点及其设计

Memcached技术
1. Memcached技术及其特点
2. 分布式哈希算法及其一致性哈希
3. Memcached的部署结构及其应用方案
案例:负载均衡的session同步及其故障转移

如何在原有系统上进行应用缓存改造
1. Spring + Memcached的设计改造过程
2. Hibernate + Memcached的设计改造过程
3. Memcached的命中率分析及其调优
4. 应用缓存的设计过程中应当注意的问题
第十二单元 内存数据库的设计 内存数据库技术
1. 内存数据库的概念
2. 解析内存数据库的运行原理
3. Oracle TimesTen的介绍
4. Gemfire及其在12306的应用

Redis内存数据库技术
1. Redis的运行原理及其特点
2. Redis的部署形式
3. Redis的应用设计
案例:spring-redis-data的设计应用
案例:京东订单系统的优化过程
4. 内存数据库的设计局限
第十三单元 异步化操作的设计 1. 异步化操作的原理
案例:12306的异步化改造过程
2. 异步化操作的设计实践
3. 分布式队列的设计
第十四单元 互联网不断演进的架构设计过程 互联网+时代的架构设计特点
1. 互联网+带来的巨大变革
2. 互联网公司不断面对的升级改造
3. 传统行业必须面对的互联网转型

好的架构源于不断的衍变
案例:58同城的架构衍变过程
1. 最初的架构设计
2. 网络接入层的改造过程
3. 数据库拆分的改造过程
4. 服务化为中心的改造过程
第十五单元 大并发架构设计的验证 1. 设计测试用例与场景
2. 录制测试脚本执行测试
3. 测试结果的评价与调优
4. 编写性能测试报告
案例:某大型互联网开票系统的架构验证过程
第三部分针对大数据的架构设计
第十六单元 NoSQL数据库及其设计
NoSQL数据库的概念
1. 分布式架构与CAP理论
2. ACID vs. BASE
3. 强一致性与弱一致性
4. NoSQL数据库的特点

MongoDB数据库
1. MongoDB数据库简介
2. MongoDB数据库的概念模型
3. 插入、更新、删除、查询操作
案例:MongoDB实现企业征信报告的海量存储与快速查询
4. MongoDB数据库的优劣势分析与适用范围
第十七单元 Hadoop大数据处理技术 Hadoop大数据处理技术
1. Hadoop简介
2. Hadoop生态圈
3. Hadoop架构及其与传统架构的优势

Hadoop的核心组件
1. 解析HDFS分布式文件系统的运行原理
2. 解析MapReduce分布式运算框架的运行原理
3. MapReduce的优劣势与适用范围
案例:WordCount词频计算程序的分析设计过程

Hadoop的生态圈
1. Hive技术
1)Hive技术简介
2)Hive与传统关系型数据库的比较
3)Hive的建表、载入数据、查询数据的语句
2. Spark技术
1)Spark设计原理
2)Spark编程实践
案例:Spark小步快跑的设计过程
3. Sqoop技术
1)Sqoop技术简介
2)Sqoop导入语句
3)Sqoop导出语句
4. HBase数据库
1)HBase数据库的简介
2)HBase数据库的概念模型
3)HBase的面向列式存储
4)HBase的系统架构
案例:用HBase存储与展示搜索结果
5. ElasticSearch搜索引擎
1)ElasticSearch设计原理
2)ElasticSearch+Hive的设计方案
3)ElasticSearch的RUSTful数据搜索
案例:如何实现海量数据秒级响应

Hadoop的安装部署
1. Hadoop的物理部署架构
2. Hadoop的技术选型
3. Hadoop的组件部署结构
第十八单元 面向主题的数据仓库设计 数据仓库的概念
1. 大范围数据统计的操作特点与设计思路
2. 数据仓库的架构设计

大数据环境下的数据仓库设计
1. 大数据环境下数据仓库设计面临的困境
2. 讲解海量数据的多维数据模型设计方案
案例:HBase实现大数据多维模型
案例:企业征信大数据的设计过程
3. 浅析数据挖掘与机器学习过程

传统BI系统的大数据转型
1. 传统BI系统面临的难题
2. 案例讲解演化式BI转型过程
第一部分 高质量架构设计
第一单元 软件架构设计概述
情景剧:软件架构设计的价值
1. 一个人的软件设计过程
2. 5个人的软件设计过程
3. 10个人的软件设计过程
4. 10个人以上的软件设计过程
结论:揭示架构设计的价值与架构师的作用

架构设计5视图法:
1. 介绍架构设计5视图法
2. 运用5视图法设计软件架构的过程
第二单元 逻辑架构设计过程
案例讲解逻辑架构的设计过程
1. 逻辑架构的概念与作用
2. 需求分析与用例模型设计
 由粗到细的需求分析过程
 不同类型的用例描述
3. 流程分析与行动图
4. 领域模型分析
 讲解领域驱动设计的思想
 在需求讨论中绘制领域模型
 用原文分析法进行领域分析
5. 需求确认与可行性分析
 探讨需求不可行给项目带来的风险
 案例讲解主动式需求分析的过程
第三单元 开发架构设计过程
案例讲解开发架构的设计过程
1. 开发架构的概念与作用
2. 讨论合理的分层架构
案例:演示一个工资系统的需求变更过程
 展示三次巨大需求变更及其分析设计过程
 探讨什么样的架构能真正适应需求的变更
3. 技术选型与决策
4. 软件架构设计
 案例讲解软件的可扩展设计
 案例讲解软件的易维护设计
5. 模块划分与分包
6. 软件开发规范的制订
第四单元 数据架构设计过程
探讨传统的数据架构设计过程
讲解基于领域的数据架构设计过程
1. 如何将领域模型转换为数据库设计
 传统的4种关系转换为数据库设计
 继承关系的3种数据库设计
2. 如何将领域模型转换为软件
贫血模型 vs. 充血模型
第五单位 运行架构设计过程
探讨运行架构的设计过程
1. 关注关键点与难点而不是全局
2. 属性→场景→决策的分析过程

专题讨论运行架构需要决策的内容
1. 并发访问与串行操作
2. 同步操作与异步操作
3. 进程与线程
第六单元 物理架构设计过程
探讨物理架构设计过程
1. 案例讲解一些常见物理架构设计
2. 案例讲解应用架构设计
3. 案例讲解一些技术方案的编写
第七单元 逐步演化的架构设计
恰如其分的架构设计
1. 恰如其分的架构设计过程
案例:一个邮件系统的架构演变过程
2. 风险驱动的架构设计

逐步演化的架构设计过程
1. 探讨老系统维护过程中架构设计的问题
2. 剖析以往采取的办法及失败的原因
 缝缝补补不能从根本上解决
 走一步退两步浅尝辄止的根源
 抛弃一切从头再来的风险
3. 剖析问题的根源与解决的办法
 演化式改造的过程
 平台建设与重构并行
 改造与维护并举

剖析架构设计中的一些常见误区
第二部分互联网架构设计
第八单元 大并发相关的指标
高并发相关的指标
1. 吞吐量 / 每秒事务数 / 事务响应时间
2. 用户数 / 用户并发数 / 最大用户并发数

高并发问题的解决思路
1. 目标→问题→方案
2. 业务梳理与优化
第九单元 并发问题的快速优化策略
传统架构的演变过程
1. All-in-One的架构设计
2. 多级集中的架构设计
3. 传统架构面临的挑战

基于风险的架构设计思想
1. 先识别未来存在的风险,再进行有针对的架构设计
2. 用最快的速度解决最急迫的问题

并发问题的快速优化策略
1. 智能DNS及其优缺点
2. CDN内容分发网络及其优缺点
3. 负载均衡与反向代理
1)Nginx技术及其解决的问题
2)动静分离的设计
3)Zookeeper及其非中心化设计
第十单元 数据库瓶颈及其优化策略
数据库瓶颈
1. 现有数据库设计及其性能瓶
2. Shared Disk vs. Shared Nothing
3. 介绍PostgreSQL与GreenPlum

数据库读写分离的设计
1. 三种不同类型的操作及其优化策略
业务操作 / 随机查询 / 统计分析
2. MySQL主从机实现读写分离
1)MySQL主从机实现读写分离的思想与局限
2)在原有系统上实现读写分离的改造过程
3. 真正实现读写分离的设计方案

数据库分库的设计思想
1. 纵向拆分的设计思想及其注意的问题
案例:国家金税三期的架构设计
案例:阿里巴巴的架构设计
2. 横向拆分的设计思想及其注意的问题
1)按地域拆分的设计及其评价
2)按用户号进行拆分的设计及其评价
案例:淘宝网的架构设计解析
3. 在原有系统上如何实现数据库分库
1)纵向拆分的系统改造过程
2)横向拆分的系统改造过程
第十一单元 应用缓存的设计
应用缓存技术
1. 应用缓存技术解决的问题
2. 单机缓存 vs. 分布式缓存
3. 分布式缓存的特点及其设计

Memcached技术
1. Memcached技术及其特点
2. 分布式哈希算法及其一致性哈希
3. Memcached的部署结构及其应用方案
案例:负载均衡的session同步及其故障转移

如何在原有系统上进行应用缓存改造
1. Spring + Memcached的设计改造过程
2. Hibernate + Memcached的设计改造过程
3. Memcached的命中率分析及其调优
4. 应用缓存的设计过程中应当注意的问题
第十二单元 内存数据库的设计
内存数据库技术
1. 内存数据库的概念
2. 解析内存数据库的运行原理
3. Oracle TimesTen的介绍
4. Gemfire及其在12306的应用

Redis内存数据库技术
1. Redis的运行原理及其特点
2. Redis的部署形式
3. Redis的应用设计
案例:spring-redis-data的设计应用
案例:京东订单系统的优化过程
4. 内存数据库的设计局限
第十三单元 异步化操作的设计
1. 异步化操作的原理
案例:12306的异步化改造过程
2. 异步化操作的设计实践
3. 分布式队列的设计
第十四单元 互联网不断演进的架构设计过程
互联网+时代的架构设计特点
1. 互联网+带来的巨大变革
2. 互联网公司不断面对的升级改造
3. 传统行业必须面对的互联网转型

好的架构源于不断的衍变
案例:58同城的架构衍变过程
1. 最初的架构设计
2. 网络接入层的改造过程
3. 数据库拆分的改造过程
4. 服务化为中心的改造过程
第十五单元 大并发架构设计的验证
1. 设计测试用例与场景
2. 录制测试脚本执行测试
3. 测试结果的评价与调优
4. 编写性能测试报告
案例:某大型互联网开票系统的架构验证过程
第三部分针对大数据的架构设计
第十六单元 NoSQL数据库及其设计
NoSQL数据库的概念
1. 分布式架构与CAP理论
2. ACID vs. BASE
3. 强一致性与弱一致性
4. NoSQL数据库的特点

MongoDB数据库
1. MongoDB数据库简介
2. MongoDB数据库的概念模型
3. 插入、更新、删除、查询操作
案例:MongoDB实现企业征信报告的海量存储与快速查询
4. MongoDB数据库的优劣势分析与适用范围
第十七单元 Hadoop大数据处理技术
Hadoop大数据处理技术
1. Hadoop简介
2. Hadoop生态圈
3. Hadoop架构及其与传统架构的优势

Hadoop的核心组件
1. 解析HDFS分布式文件系统的运行原理
2. 解析MapReduce分布式运算框架的运行原理
3. MapReduce的优劣势与适用范围
案例:WordCount词频计算程序的分析设计过程

Hadoop的生态圈
1. Hive技术
1)Hive技术简介
2)Hive与传统关系型数据库的比较
3)Hive的建表、载入数据、查询数据的语句
2. Spark技术
1)Spark设计原理
2)Spark编程实践
案例:Spark小步快跑的设计过程
3. Sqoop技术
1)Sqoop技术简介
2)Sqoop导入语句
3)Sqoop导出语句
4. HBase数据库
1)HBase数据库的简介
2)HBase数据库的概念模型
3)HBase的面向列式存储
4)HBase的系统架构
案例:用HBase存储与展示搜索结果
5. ElasticSearch搜索引擎
1)ElasticSearch设计原理
2)ElasticSearch+Hive的设计方案
3)ElasticSearch的RUSTful数据搜索
案例:如何实现海量数据秒级响应

Hadoop的安装部署
1. Hadoop的物理部署架构
2. Hadoop的技术选型
3. Hadoop的组件部署结构
第十八单元 面向主题的数据仓库设计
数据仓库的概念
1. 大范围数据统计的操作特点与设计思路
2. 数据仓库的架构设计

大数据环境下的数据仓库设计
1. 大数据环境下数据仓库设计面临的困境
2. 讲解海量数据的多维数据模型设计方案
案例:HBase实现大数据多维模型
案例:企业征信大数据的设计过程
3. 浅析数据挖掘与机器学习过程

传统BI系统的大数据转型
1. 传统BI系统面临的难题
2. 案例讲解演化式BI转型过程

课程费用

6800.00 /人

课程时长

3

预约体验票 我要分享

近期公开课推荐

近期公开课推荐

提交需求