专题课程
【课程简介】
本课程培训周期为3天
随着网络与信息技术的高速发展,软件研发逐渐朝着大规模、高复杂度的大型软件系统发展。特别是随着近几年互联网的高速发展,带动着全行业的互联网转型,使得未来的软件系统还将向着持续性、深层次架构调整的方向发展。在这样的背景下,如何从全局的角度思考软件系统方方面面的问题,提前识别软件项目的技术风险点,并有针对性地制订技术方案,以及如何构建一个更加灵活、易于调整、快速变化的软件系统,成为大型软件系统至关重要的设计内容。
本课程首先将系统地讲述高质量的软件架构该设计过程,包括如何运用领域驱动设计的思想贯穿整个架构设计,又如何使软件系统在衍变中调整架构,从而适应需求的变化;如何运用5视图的方法,全面地思考软件架构各方面的问题:从需求的角度进行可行性分析;从全局的角度进行软件分层、技术选型、模块划分等方面的设计;运用数据持久化的方式设计数据结构;运用“属性->场景->决策”的过程把握非功能设计;从部署、网络、性能的角度进行物理架构的设计,从而有效避免架构设计时遗漏关键风险点,使架构设计过程变得有序。
接着,本课程从高并发、大数据、高可靠3个方面入手,讲解了大型互联网应用系统是如何从容应对数以亿计的用户并发访问、海量业务数据的性能压力,如何设计高效而稳定的软件架构。课程由浅入深、层层推进、从各个层面逐步介绍了,在不同用户压力环境下,架构设计各个环节可能遇到的性能问题,可以采用的技术,这些技术的基本原理与解决思路,以及相关互联网应用的具体案例。通过这些案例的讲解,可以为学员日后的架构设计开阔思路、加深认识。
此外,在面对海量数据方面,本课程还介绍了NoSQL数据库、Hadoop大数据处理技术,以及它们在应对海量数据存储、深度数据挖掘与高效数据查询方面,所做的设计。通过案例讲解,可以让学员理解如何运用NoSQL数据库与Hadoop大数据处理技术解决相关问题、设计真实的系统。
【培训特色】
本课程注重实战,采用案例贯穿的方式,收集了大量的真实案例,针对项目过程中技术人员常犯的错误进行了汇总与研讨,并最终形成培训教程。通过大量的真实案例,详细地介绍了软件架构设计过程需要注意的要点以及难点,这些知识都是讲师十几年经验的总结。
【培训对象】
中高级工程师、企业架构师、软件设计师、数据库/存储技术人员、技术决策/解决方案人员等。
【培训时长】
3天
【课程大纲】
|
授课内容 |
第一部分 高质量架构设计 |
|
第一单元 软件架构设计概述 |
情景剧:软件架构设计的价值 1. 一个人的软件设计过程 2. 5个人的软件设计过程 3. 10个人的软件设计过程 4. 20个人以上的软件设计过程 结论:揭示架构设计的价值与架构师的作用 架构设计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. 现有数据库设计及其性能瓶 2. Shared Disk vs. Shared Nothing 3. 介绍PostgreSQL与GreenPlum
数据库读写分离的设计
1. 三种不同类型的操作及其优化策略
2. MySQL主从机实现读写分离 3. 真正实现读写分离的设计方案
数据库分库的设计思想
1. 纵向拆分的设计思想及其注意的问题
2. 横向拆分的设计思想及其注意的问题
3. 在原有系统上如何实现数据库分库
|
第十一单元 应用缓存的设计 |
应用缓存技术 1. 应用缓存技术解决的问题 2. 单机缓存 vs. 分布式缓存 3. 分布式缓存的特点及其设计
Memcached技术 1. Memcached技术及其特点 2. 分布式哈希算法及其一致性哈希
3. Memcached的部署结构及其应用方案
如何在原有系统上进行应用缓存改造 1. Spring + Memcached的设计改造过程 2. Hibernate + Memcached的设计改造过程 3. Memcached的命中率分析及其调优 4. 应用缓存的设计过程中应当注意的问题
|
第十二单元 内存数据库的设计 |
内存数据库技术 1. 内存数据库的概念 2. 解析内存数据库的运行原理 3. Oracle TimesTen的介绍 4. Gemfire及其在12306的应用
Redis内存数据库技术 1. Redis的运行原理及其特点 2. Redis的部署形式
3. Redis的应用设计 4. 内存数据库的设计局限
|
第十三单元 异步化操作的设计 |
1. 异步化操作的原理 案例:12306的异步化改造过程 2. 异步化操作的设计实践 3. 分布式队列的设计
|
第十四单元 互联网不断演进的架构设计过程 |
互联网+时代的架构设计特点 1. 互联网+带来的巨大变革 2. 互联网公司不断面对的升级改造 3. 传统行业必须面对的互联网转型
好的架构源于不断的衍变 案例:58同城的架构衍变过程 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. &n |