课程大纲:
软件架构相关技术培训
课程特色
互联网时代的到来,使得互联网上的产品具有创新成本低、需求变化快、用户群体大等特点,促使业务不断扩大,软件功能持续增加,导致单体架构的维护成本、人员学习成本、缺陷修复成本、增加新功能的成本以及系统扩展成本等都在急剧增加,单块架构无法适应互联网时代的快速变化,面临着越来越多的挑战,一方面,代码的可维护性、扩展性、灵活性在降低;而另一方面,系统的测试成本、构建成本以及维护成本在显著增加。因此,随着项目或者产品规模的不断扩大,单块架构应用的改造与重构势在必行。
微服务架构随着RESTful、容器技术、云计算、DevOps、持续交付、敏捷项目管理等IT技术的深入应用,有效的解决了互联网时代遇到的众多挑战,因此微服务架构深受企业的欢迎,并在企业内部所采用。
培训目标
1、 学习掌握微服务架构的基础知识;
2、 学习掌握常见的集中微服务框架介绍及选型对比(dubbo、springCloud、motan、servicemesh);
3、 使学员理解微服务技术架构的服务治理(熔断、降级、限流、自愈、过载保护);
4、 使学员理解微服务技术架构本质以及设计的原则;
5、 使学员理解分布式架构中高并发场景设计及实战分析(秒杀、抢购);
6、 使学员理解分布式架构中间件场景应用(zookeeper kafka、rocketmq);
7、 使学员理解如何保证分布式架构的高可用;
8、 使学员理解多线程设计实现及案例分析;
9、 使学员理解性能优化的方法论;
10、 使学员理解代码优化及规范设计;
11、 使学员理解JVM调优实战;
12、 使学员理解Tomcat/Nginx/RocketMq调优;
13、 使学员理解Sql调优;
14、 学习掌握微服务间的异步通信机制;
15、 学习了解微服务的监控与告警;
16、 构建微服务的持续交付流水线;
17、 使学员深入理解分布式的技术原理以及应用场景;
18、 使学员学会设计微服务架构;
19、 解决企业敏捷项目管理持续升级的运维管理问题;
20、 使学员能学会监控、服务治理等工作;
21、 提供解决问题的方法及思路,避免讲解编码怎么实现,编码实现可以通过补充材料的方式提供,供研发人员线下学习。
22、 适当增加一些研发人员自我管理及自我提升方面的思路,如时间管理、自我管理等,不需要大篇幅讲解。
培训对象
1、 本课程适合于企业IT架构师、技术经理等角色;
2、 本课程适合于软件高级开发工程师;
3、 本课程适合于业务需求人员;
4、 本课程适合于企业高层管理人员;
5、 本课程适合于IT运维人员;
课程内容:
第1个主题: 互联网时代的架构演变
1、 互联网时代特征“快”
2、 互联网时代对人性化软件的迫切要求
3、 互联网时代产品特点
4、 技术的多样性
5、 精益创业
6、 敏捷项目管理
7、 DevOps
8、 Docker
9、 云计算
10、 云原生应用
第2个主题: 单体架构剖析(简单剖析单体架构的特点与不足)
1、 单体架构产生的背景
2、 单体架构的特征
3、 单体架构模式
4、 单体架构团队划分
5、 单体架构出现的问题
6、 单体架构模式的不足
7、 单体架构的挑战
8、 单体架构问题解决思路
9、 传统应用架构的问题
第3个主题: 微服务架构的基础知识(学习掌握微服务架构的基础知识)
1、 为什么需要微服务架构?
2、 微服务诞生的背景
3、 研发团队:目标、成就感、奖惩、待遇、凝聚力
4、 人才培育与成长(人员流动的优势与弊端)
5、 微服务解决的问题
6、 微服务架构解决方案
7、 微服务架构适用的场景
8、 微服务架构适用的企业
9、 什么是微服务(MicroService)架构?
10、 微服务架构是什么?
11、 微服务架构思路
12、 微服务的本质
13、 微服务架构有哪些特征?
14、 微服务架构视图
15、 微服务架构构件
16、 微服务架构的数据库
17、 微服务的服务目录
18、 SOA与微服务区别
19、 SOA架构特点
20、 微服务架构特点
21、 微服务架构的优势
22、 微服务架构的劣势
23、 微服务的设计原则
第4个主题: 集中微服务框架介绍及选型对比(深入剖析集中微服务框架介绍及选型对比)
1、 Dubbo介绍
2、 Dubbo优势与不足剖析
3、 Dubbo的企业应用案例
4、 Dubbo适用场景剖析
5、 SpringCloud介绍
6、 SpringCloud优势与不足剖析
7、 SpringCloud的企业应用案例
8、 SpringCloud适用场景剖析
9、 Motan介绍
10、 Motan优势与不足剖析
11、 Motan的企业应用案例
12、 Motan适用场景剖析
13、 Servicemesh介绍
14、 Servicemesh优势与不足剖析
15、 Servicemesh的企业应用案例
16、 Servicemesh适用场景剖析
17、 Dubbo、SpringCloud、Motan、Servicemesh选型建议
第5个主题: 微服务架构设计
1、 业务需求分析
2、 微服务软件架构体系
3、 微服务硬件架构体系
4、 微服务部署架构
5、 业务模块划分
6、 高内聚松偶合
7、 模块灵活组装
8、 松耦合,独立部署
9、 SSO单点登录
10、 凭证与鉴权
11、 分布式事务一致性思考
12、 微服务架构构建
13、 REST
14、 微服务快速弹性
15、 高并发
16、 微服务数据特征
17、 案例:剖析如何对大型复杂系统进行微服务化
18、 案例:剖析OpenStack的微服务化
19、 微服务*实践
20、 微服务*实践
21、 微服务的划分
22、 微服务模板
23、 微服务向导
第6个主题: 微服务架构的服务治理(微服务架构的服务治理)
1、 微服务框架
2、 服务注册发现
3、 集中化配置中心
4、 熔断
5、 降级
6、 限流
7、 自愈
8、 过载保护
9、 API网关
10、 容错处理
第7个主题: 分布式架构概述(介绍分布式架构)
1、 为什么使用分布式架构
2、 分布式架构特征
3、 CAP理论、BASE思想、RNW理论
4、 分布式架构高并发场景设计
5、 分布式架构中间件场景应用
a) Zookeeper
b) Kafka
c) 消息中间件
d) RocketMQ
6、 如何保证分布式架构的高可用
a) 复本机制、主从机制、集群
b) 异地多中
7、 分布式架构高并发场景实战分析
a) 秒杀分布式场景实战分析
b) 抢购分布式场景实战分析
8、 多线程设计实现及案例分析
9、 微服务架构的分布式实现
第8个主题: 微服务的实施(学习掌握实施微服务的架构)
1、 微服务测试面临的挑战
2、 黑盒测试、白盒测试
3、 自动化单元测试
4、 日构建
5、 测试驱动开发
6、 功能与界面分离设计
7、 自动化测试报告
8、 微服务的测试策略
9、 通过/失败测试模式(Pass/Fail Patterns)
10、 数据驱动测试模式(Data Driven Test Patterns)
11、 数据处理事务测试模式(Data Transaction Patterns)
12、 集合管理测试模式(Collection Management Patterns)
13、 性能测试模式(Performance Patterns)
14、 流程处理测试模式(Process Patterns)
15、 仿真测试模式(Simulation Patterns)
16、 多线程测试模式(Multithreading Patterns)
17、 压力测试模式(Stress-Test Patterns)
18、 展现层测试模式(Presentation Layer Patterns)
19、 微服务测试等级
a) 单元测试
b) 组件接口测试
c) API测试
d) 端到端测试
e) UI/UE测试
20、 FIRST 原则
a) Fast 快速的
b) Isolated 隔离
c) Repeatable 可重复
d) Self-Validating 自验证
e) Timely 及时的
21、 Right-BICEP测试原则
22、 CORRECT检查原则
23、 测试相关框架与库
24、 测试用例的组织Given-When-Then
25、 测试的过程
26、 微服务测试策略
27、 微服务测试实践
28、 微服务的PACT测试
29、 Pact是什么
30、 Pact可以用来做什么
31、 Pact的工作原理
32、 Pact相关术语
33、 Pact适用场景
34、 Pact不适用的场景
35、 Pact使用实例
36、 Pact匹配原则
37、 契约测试框架-Pact实践
第9个主题: 微服务的安全机制与OAuth2.0实现(学习掌握微服务的安全机制与OAuth2.0实现)
1、 微服务的安全介绍
2、 微服务的安全机制
3、 SSO单点登录
4、 凭证与鉴权
5、 OAuth2.0是什么
6、 OAuth2.0协议
7、 OAuth2.0认证授权过程
8、 OAuth2.0实现
9、 微服务实现OAuth2.0认证
第10个主题: 微服务间的异步通信机制(学习掌握微服务间的异步通信机制)
1、 轻量级的通信机制
2、 实践:轻量级通信机制
3、 进程独立
4、 分布式架构概念
5、 消息队列
6、 RPC
7、 分布式协调器
8、 微服务架构分布式事务解决方案与实战
9、 CAP理论
10、 BASE思想
11、 分布式事务一致性实现原理
12、 事务特征
13、 补偿型(TCC)
14、 异步确保型(可靠消息最终一致)
15、 *努力通知型
16、 案例:剖析微服务分布式架构
第11个主题: 微服务的运维(学习掌握微服务运维)
1、 微服务运维介绍
2、 微服务集群监控
3、 微服务服务治理
4、 持续交付的7个*实践
5、 链路追踪
6、 持续改进
7、 线性扩容
8、 容量规划
9、 案例:剖析如何运维微服务软件系统
10、 案例:剖析超大型电子商务平台微服务架构
第12个主题: 微服务的监控与告警(学习了解微服务的监控与告警)
1、 监控——Ganglia、Nagios
第13个主题: 微服务架构的日志聚合(学习掌握微服务架构的日志聚合)
1、 日志聚合——Flume、DistributedLog、Graylog
第14个主题: 构建微服务的持续交付流水线(构建微服务的持续交付流水线)
1、 什么是持续交付
2、 持续交付的发展
3、 持续交付的周期模型
4、 持续交付的配置管理
5、 版本控制
6、 依赖管理
7、 软件配置管理
8、 环境管理
9、 持续交付的前提
10、 构建与部署脚本构件
11、 建部署脚本化的原则与实践
12、 自动化验收测试
13、 微服务持续交付
14、 实践案例:动手实现持续交付
15、 持续集成环境
16、 基础设施
17、 实践:基础设施自管理
18、 蓝绿部署
19、 灰度发布
第15个主题: 微服务架构的实施(微服务的实施与构建)
1、 微服务架构的实施
2、 单体架构(CRM)
3、 传统单体架构的弊端
4、 面临的挑战
5、 运维效率低
6、 改造策略
7、 改造后
8、 改造后的系统
9、 解决对策
10、 服务化
11、 服务化架构的演进历史
12、 基于微服务架构改造单体架构的实践总结
第16个主题: 性能调优(软件架构性能调优)
1、 性能优化的方法论
2、 代码优化及规范设计
3、 JVM调优实战
4、 Tomcat/Nginx/RocketMq调优
5、 SQL调优
第17个主题: 性能优化的方法论(软件架构性能优化的方法论)
1、 性能优化的方法论
2、 软件性能瓶颈跟踪与分析
3、 系统性能两个核心概念:吞吐量、延迟
4、 吞吐量与延迟之间的关系
5、 计算密集型:主要消耗大量CPU资源、不停进行计算。由于依靠CPU性能,一直占用CPU进行计算。
6、 IO密集型:磁盘读取、网络IO、web服务等任务,主要需要IO的读取,利用CPU的效率较低,大量时间花费在IO上。
7、 缓存化(Redis、Memcache)
8、 本地缓存、分布式缓存
9、 时空交换思想
10、 空间换时间
11、 预计算
12、 异步调用
13、 超时控制
14、 合并写
15、 随机读写转化为顺序写
16、 消息队列
17、 从代码层面调优
18、 从算法层面调优
19、 从数据库层面调优
20、 从硬件层面调优
21、 从网络层面调优
22、 从架构层面调优
23、 从语言平台层面调优
24、 从业务逻辑上进行调优
25、 采用分布式架构
第18个主题: 代码优化及规范设计(软件代码优化及规范设计)
1、 从代码层面优化性能
2、 将磁盘IO转化为网络IO
3、 将网络IO转化为内存读写
4、 代码实现批量处理
5、 从算法层面优化性能
6、 实现多线程、多进程并发处理
7、 随机读写转化为顺序读写
8、 采用列式数据库
9、 采用内存数据库NoSQL
10、 代码编写规范设计
11、 代码编写规范制定
12、 代码走查
13、 代码规范的完善与更新
第19个主题: JVM调优实战(JVM调优实战)
1、 JVM调优概述
2、 JVM数据类型调优
3、 堆(heap)与栈(stack)调优
4、 Java对象的大小
5、 基本的回收策略
6、 垃圾回收流程
7、 选择垃圾回收算法
8、 垃圾回收调优
9、 垃圾回收的瓶颈
10、 引用计数
11、 标记清除
12、 复制
13、 标记整理
14、 增量收集
15、 分代收集
16、 串行收集
17、 并行收集
18、 并发收集
19、 年轻代
20、 年老代
21、 持久代
22、 堆大小设置
23、 回收器选择
24、 常见配置参数
25、 线程监测
26、 内存泄漏检查
27、 垃圾回收的悖论
第20个主题: Tomcat/Nginx/RocketMq调优(中间件Tomcat/Nginx/RocketMq调优)
1、 Tomcat调优概述
2、 Tomcat的运行模式
3、 Tomcat执行器优化
4、 Tomcat配置参数优化
5、 Tomcat内存优化
6、 Tomcat线程池
7、 Tomcat组件优化
8、 Tomcat Executor参数优化
9、 Tomcat Connector参数优化
10、 Tomcat的JVM参数优化
11、 Tomcat系统属性优化
12、 Tomcat性能测试工具
13、 Nginx调优概述
14、 Nginx配置文件调优
15、 Nginx进程数调优
16、 Nginx使用epoll的I/O模型
17、 Nginx内核参数调优
18、 Nginx缓存调优
19、 Nginx gzip压缩优化
20、 Nginx expires缓存优化
21、 Nginx网络IO事件模型优化
22、 Nginx隐藏软件名称和版本号
23、 Nginx防盗链优化
24、 Nginx禁止恶意域名解析
25、 Nginx禁止通过IP地址访问网站
26、 Nginx HTTP请求方法优化
27、 Nginx防DOS攻击单IP并发连接的控制,与连接速率控制
28、 Nginx严格设置web站点目录的权限
29、 Nginx将nginx进程以及站点运行于监牢模式
30、 Nginx通过robot协议以及HTTP_USER_AGENT防爬虫优化
31、 Nginx配置错误页面根据错误码指定网页反馈给用户
32、 Nginx日志相关优化访问日志切割轮询,不记录指定元素日志、最小化日志目录权限
33、 Nginx限制上传到资源目录的程序被访问,防止木马入侵系统破坏文件
34、 Nginx FastCGI参数buffer和cache配置文件的优化
35、 Nginx php.ini和php-fpm.conf配置文件的优化
36、 有关web服务的Linux内核方面深度优化(网络连接、IO、内存等)
37、 Nginx加密传输优化(SSL)
38、 Nginx web服务器磁盘挂载及网络文件系统的优化
39、 使用nginx cache
40、 RocketMq调优概述
41、 RocketMq网络参数
42、 RocketMq硬资源限制
43、 RocketMq硬盘的模式
44、 RocketMq调度机制优化
45、 RocketMq mqbroker和mqnamesrv的内存调整
第21个主题: SQL调优(SQL调优)
1、 表结构设计优化
2、 库设计优化
3、 预处理SQL
4、 批量提交
5、 异构索引
6、 产品规则
7、 简化SQL
8、 加索引
9、 删除索引
10、 异步写
11、 读写分离
第22个主题: 软件架构及性能调优相关技术培训总结(对两天的课程内容进行总结)
1、 微服务架构总结
2、 分布式架构总结
3、 软件调优总结
软件架构相关技术培训