为什么需要该课程
随着移动互联时代的到来,数据量急剧增加,并发量也变得越来越有挑战, 企业在规划和设计分布式系统的总体架构,涉及到方方面面的知识点,可选的方案也很多,如何在各种各样,纷繁复杂的技术中构建最适合企业的分布式系统架构(Distributed Architecture),变成了一件极具挑战的事情。一个好的分布式架构可以以最低的成本、更灵活的方式,满足企业用户需求。相反,糟糕的架构,不但花费了重金,而且架构过于复杂、过于笨重,线上故障不断,架构灵活性差,阻碍业务的发展。传统的 Monoliths 等架构已无法满足业务持续快速创新的需求, 分布式系统架构(Distributed Architecture)应运而生。相信大家对分布式系统架构都有一定的认识,但对分布式系统架构如何在项目中落地实践,缺乏一些经验。
软件架构是软件业的一个重要研究领域,正受到越来越多的关注,其地位也日益明显地体现出来.而架构设计师——也就成为软件系统的最高设计者。此课程就是为有志成为卓越架构师的人准备的培训课程。作为架构设计师,需要具备统观全局、分而治之的能力,从子系统的划分到组件的定义,从系统设计能力到沟通、协调,表达能力. 我们系统的组织课程,并由20年经验丰富的讲师传授,为您成长为架构设计师打下坚实的基础。
本课程通过介绍软件架构视图和软件文档,软件架构设计过程,软件架构应用与常用的架构模式/策略/原则等诸多架构实际问题,透视软件架构是如何设计和实现的? 并且介绍应该如何应用系统架构设计为后期的详细设计和应用开发提供指导。针对大多数企业目前是维护遗留系统, 该课程介绍了软件架构的监控,架构的坏症状和重构方法,因为架构设计的前期不能考虑到所有的问题,设计包容一切的完美架构. 还针对软件架构常见设计技术专题等问题进行了分析并提出了解决方案,并结合众多大型软件项目架构案例进行更深入的剖析!
适合哪些学员
软件架构师/技术总监/资深技术人员/高级软件设计师
课程大纲
第一篇: 软件架构核心原理和设计过程 | ||
主题 | 培训内容 | 备注 |
第1单元:软件架构文档和架构视图-如何有效描述架构蓝图
| 内容一:软件架构建模—软件架构视图 1.软件架构的视图原理 2.软件架构视图的意义, 软件架构师的多维思考 3.逻辑视图 4.开发视图 5.部署视图 6.运行视图 7.场景视图 8.数据视图 9.实现视图 10. 如何和怎样绘制软件架构视图 11. UML建模工具在架构视图的应用 12. 典型案例分析:结合多个电信,金融行业项目案例,分析真实项目软件架构视图
内容二:企业架构方法论 1.企业架构与TOGAF概述 2.架构开发方法(ADM)简介 3.企业架构标准TOGAF及理论 4.企业架构战略如何帮助企业建立和谐的企业环境、优化企业信息化管理、整合企业信息化流程、组织合理配置资源、完善整体业务能力 5.企业架构标准化能够带给企业的利益 6.业务架构 7.数据架构 8.逻辑架构 9.物理架构 10. 运行架构 11. 开发架构 12. 架构愿景 13. 业务架构 14. 业务架构 – 目录,图表和矩阵 15. 信息系统架构 16. 数据架构 –目录,图表和矩阵 17. 整合的信息基础设施参考模型 18. 应用架构-整合的信息基础设施参考模型 19. 应用架构 –目录,图表和矩阵 20. 基础架构- 21. 技术架构
内容三: 软件架构的文档编写 1.软件架构文档的意义 2.软件架构模板(根据实际项目情况选择合适内容) 3.软件架构文档的结构(避免出现不必要的重复和缺少关键信息) 4.软件架构文档必须包含的内容(通过多个项目,分析不同系统包含系统内容不同) 5.文档的后期管理(使文档保持更新) 6.软件架构文档的评审 7.典型案例分析:结合多个电信项目案例,进行分析和评审软件架构文档 8.典型案例分析:结合多个电信项目案例,进行分析和评审软件架构文档 | |
第2单元:软件架构设计关注点(哪些因素驱动架构设计,是架构开始设计之前必须知道的?)和架构最佳策略 | 内容一:软件架构设计关注点(软件架构师在架构设计之前必须考虑的要素) 1.架构设计的关注是什么 2.软件架构的驱动因素(改变传统以功能实现和新技术为驱动的策略) 3.软件质量需求对架构的影响(质量属性场景定义和对应架构策略) 4.软件功能需求对架构的影响(分析功能需求变化点和进化点) 5.软件约束条件与架构的影响(业务,运行环境,开发团队,实现技术等约束) 6.如何使功能性需求,非功能性需求和平台细节在架构中能保持分离,从而改善可维护性和可扩展性 7.处理功能需求,非功能性需求,平台细节.制定架构目标 8.典型案例分析:结合项目,因为分析驱动因素的错误,导致项目不能如期验收的失败案例
内容二:软件架构最佳策略 1.重新认识系统质量属性,如何定义质量属性和相应的架构策略 2.系统架构的可扩展性设计策略 3.系统架构的可靠性设计策略 4.系统架构的高性能设计策略 5.系统架构的可维护性设计策略 6.系统架构的易用性设计策略 7.系统架构质量属性和架构模式的应用 8.通过分析案例,了解基本架构策略如何应用 | |
第3单元:软件架构设计过程
| 内容一、软件架构设计过程 1.软件架构设计过程方法论(步骤和相应的成果) 2.软件系统边界和外部系统接口的定义 3.大型软件系统的划分子系统原则 4.子系统功能模块的分解 5.子系统间的通信接口的设计 6.如何应对系统内部紧耦合、高内聚 7.软件系统关键质量属性树和可行性分析 8.软件系统部署架构(分布式/数据分布/通信/安全) 9.软件系统部署容量评估(主机/中间件/数据库等资源容量评估) 10.应用系统的类型和架构风格 11.架构模式在实际项目的应用 12.软件架构立方体图(软件架构的分层,分区和基础服务) 13.软件架构通用机制的分析(如何处理基础设施扩展和具体有什么方法做基础设施扩展, 掌握如何分离这些基础设施用例) 14.使用质量场景属性进行迭代架构设计 15.软件架构各层的架构策略(针对企业应用分层,每层的架构策略) 16.软件系统线程架构策略(结合Apache HTTP Server分析线程和进程的架构) 17.数据架构(数据模型/数据分布/数据存取,以及核心数据流) 18.用例视图(抽取典型,有分险和客户最关心用例进行分析,结合架构进行设计) 19.实现视图(架构,设计和开发,实现原则和指南) 20.完成架构文档,对架构文档进行评估 21.典型案例分析:结合3G增值服务项目,分析物理架构设计 | |
第4单元:软件架构应用 | 内容一、架构设计的评估和验证 1.软件架构的验证(软件架构风险验证) 2.软件架构的验证方法和指标(基于问题检查表和质量属性树) 3.软件架构的验证注意事项 4.软件架构的评估方式 5.软件详细设计和实现时期,架构师的职责和架构的监控 6.典型案例分析:结合项目实例,分析如何进行验证架构和架构设计的后期重构技巧
内容二、架构设计重构和复用 1.软件架构重构概述 2.软件架构常见的坏症状 3.软件架构的重构手段 4.软件架构的复用 5.结合某著名公司全球架构师团队架构实例,分析架构重构和架构复用技巧 | |
第二篇: 软件架构分层架构和每层核心策略 | ||
第5单元:软件架构核心策略 | 内容一:领域模型层架构 1.领域模型架构策略 2.领域模型建模(关联,属性) 3.多个系统数据模型不一致和领域模型的同步 4.公共数据模型(CDM) 5.领域模型分析模式(模型的选择会影响最终产生系统的灵活性和可重用性) 6.根据电信计费系统和网络资源管理案例分析领域模型的架构
内容二:业务逻辑层 1.业务逻辑架构模式(事务脚本/领域模型/服务层模式) 2.业务流程架构策略 3.基于容器的业务逻辑架构(EJB和轻量级,以及容器提供的基础服务) 4.面向方面的业务架构和AOP技术在业务逻辑架构的应用 5.状态管理架构策略(有状态和无状态服务,以及对可扩展性的影响) 6.业务逻辑的分布式架构策略(远程或本地/同步或异步) 7.并发和同步架构模式(Half-Sync/Half-Async和Leader/Followers和Active Object和Monitor Object) 8.基于中间件的业务逻辑架构(Corba/Tuxedo/MQSeries/J2EE/.net) 9.典型案例分析:结合某银行交易系统分析业务逻辑架构
内容三:数据存取(持久性)层架构 1.数据存取架构策略(对象和关系数据库的映射) 2.对象关系阻抗/ORM技术/数据映射SQLMapper 3.缓存技术在存取层的应用/缓存数据和数据库数据一致性 4.分布式数据存取策略(读写分离/分布数据/异构数据存取) 5.数据同步和一致性策略 6.数据访问层的性能考虑 7.事务管理(本地事务和分布式事务,以及事务补偿) 8.数据锁管理(悲观锁和乐观锁) 9.典型案例分析:结合零售行业POS项目分析数据访问层的架构设计
内容四:数据架构 1.数据架构概述 2.数据建模原则和优化策略 3.数据复制和同步策略 4.数据一致性和分布式事务 5.大数据量数据库可扩展性(水平和垂直扩展,读写分离)以及单表记录过大拆分策略 6.数据库集群规划 7.分布式数据存取策略(跨多个库, 可能数据库异构类型) 8.数据备份与恢复 9.数据库性能规划 10.数据安全策略 11.与遗留系统的数据库兼容性考虑 12.结合电信,金融,零售POS项目实例分析,系统数据架构设计策略
内容五:系统基础服务组件架构 1.系统基础服务组件架构策略 2.系统通用服务层与业务逻辑分离 3.系统必备13种基础服务架构(异常处理/事务管理/缓存/工作流/校验/通信/安全/日志/定时触发/状态/消息通信/系统监控/配置管理) 4.业务通用服务架构实现策略 5.结合多个项目实例分析,架构师如何萃取基础服务组件和怎样设计实现 | |
第6单元:分布式微服务软件架构核心策略 | 内容一:微服务架构诞生—为什么出现微服务架构 1.单块架构及其面临的挑战 2.分层应用架构 3.单块架构特点 4.单块架构面临的挑战 5.通过某传统ERP系统为案例分析上线后问题
内容二:微服务架构 1.为什么需要微服务架构 2.如何解决传统应用架构的问题 3.微服务架构是什么 4.微服务架构概念 5.微服务架构参考架构模式 6.通过分析多个微服务架构案例,了解微服务架构的参考模式
内容三:微服务架构Spring Cloud平台概述 1.为什么选择Spring Cloud 2.Spring Cloud网关-Zuul和GateWay 3.注册与发现:Spring Cloud Eureka和Nacos 4.客户端负载均衡:Spring Cloud Ribbon 5.服务容错保护:Spring Cloud Hystrix和Sentinel 6.声明式服务调用:Spring Cloud Feign 7.分布式配置中心:Spring Cloud Config和Applo 8.消息总线:Spring Cloud Bus 9.Spring Cloud新版本的概述与对比
内容四:微服务注册与发现- Eurake与Nacos 1.为什么要服务注册 2.服务注册实现方式 3.使用NetflixEureka/SpringCloud实现服务注册 4.使用NetflixRibbon/SpringCloud实现客户端负载均衡 5.为什么要服务发现 6.服务发现的实现方式 7.使用Spring和Netflix Eureka进行服务发现实战
内容五:微服务负载均衡和路由,容错 1.负载均衡 2.容错 3.服务路由 4.微服务间的异步通信机制 5.Spring Clould 的Ribbon实现
内容六:分布式微服务统一配置中心 1.管理配置(和复杂性) 2.配置管理架构 3.构建Spring Cloud配置服务器 4.将Spring Cloud Config与Spring Boot客户端集成 5.分布式配置中心——携程Apollo 6.携程apollo优点 7.apollo架构 8.Apollo分布式配置中心部署 9.Apollo分布式配置中心最佳实践
内容七:微服务网关—Zuul与新一代网关SpringCloud Gateway 1.使用Spring Cloud和Zuul进行服务路由 2.什么是服务网关 3.Spring Cloud和Netflix Zuul简介 4.在Zuul中配置路由 5.动态重新加载路由配置 6.构建第 一个生成关联ID的Zuul前置过滤器 7.构建动态路由过滤器 8.Zuul网关最佳实践 9.新一代网关Spring Cloud Gateway 10.动态重新加载路由配置 11.Zuul网关最佳实践 12.Spring Cloud Gateway原理分析 13.Route Predicate Factories 14.自定义过滤器 15.自定义API分组限流 16.Spring Cloud Gateway最佳实践
内容八:微服务断路器—Sentinel与Hystrix 1.什么是客户端弹性模式 2.客户端负载均衡模式 3.使用Hystrix实现断路器 4.Hystrix最佳实践 5.服务限流的作用及实现 6.基于Sentinel的微服务限流及熔断 7.分布式限流框架Sentinel 8.Sentinel的基本应用 9.Sentinel实现限流 10.资源的定义方式 11.Sentinel资源保护规则 12.Sentinel实现服务熔断 13.Spring Cloud集成Sentinel实践 | |
第三篇:大型高可用高并发分布式系统架构设计与实践 | ||
第7单元 大型分布式架构设计最佳实践 | 内容一:大型分布式架构核心概念 1.无状态化设计; 2.冗余设计; 3.负载均衡设计; 4.分级管理设计; 5.纯异步调用(状态机等方式)设计; 6.调用合理超时设计; 7.服务降级设计; 8.幂等设计; 9.我们的实践案例;
内容二:大型分布式系统服务降级设计与实践 1.服务限流降级概念; 2.服务限流降级使用业务场景; 3.服务限流降级设计环节; 4.服务限流降级之原则篇、架构篇、框架篇、业务篇; 5.移动时代服务限流降级如何打造; 6.我们的实践案例;
内容三:大型分布式系统缓存设计与实践 1.互联网使用缓存类型有哪些?各自作用是什么? 2.分布式缓存冗余如何设计? 3.高可用架构缓存一致性如何保证? 4.高可用架构缓存高性能如何保证? 5.我们的实践案例; 6.缓存系统在大型网站架构中发挥的作用 7.单机缓存系统自研与选型 8.Memcached与Redis的异同及应用场景 9.深入剖析Redis技术 10.Redis主要数据结构剖析 11.Redis性能优化及配置优化 12.Redis复制机制与持久化机制 13.Redis缺陷与陷阱 14.分布式缓存技术剖析 15.扩展Redis集群,如何实现集群弹性伸缩,无缝扩容 16.Redis Cluster官方集群扩展方案及缺陷 业界主流Redis集群方案剖析
内容四:大型分布式系统性能优化 1.系统性能优化的模式都有哪些; 2.系统性能优化常用的步骤是什么; 3.系统性能优化的环节都能哪些; 4.我们的实践案例;
内容五:分布式系统数据库架构设计与实践 1.数据库架构设计基本概念; 2.高可用性设计与实践; 3.高并发设计与实践; 4.读性能设计与实践; 5.一致性设计与实践; 6.扩展性设计与实践; 7.我们的实践案例;
内容六:分布式系统数据库架构设计与实践 1.数据库架构设计基本概念; 2.高可用性设计与实践; | |
第四篇: 架构师与架构职责 | ||
第8单元: 软件架构师成长 | 内容一、软件架构师成长 1.软件架构师职责 2.软件架构师与项目经理,产品经理,需求分析师不同 3.软件架构师技能模型 4.软件架构师如何成长 5.中国特色的架构师(目前国内很多架构师是身兼多职) | |
第五篇: 案例分析 | ||
第9单元:大型软件系统架构实践与剖析 (该案例分别在以上各单元,结合主题进行介绍) | 综合软件架构实践与剖析(以实际项目案例为背景)
|