写点什么

fenxi

作者:Xiao8
  • 2022 年 7 月 13 日
  • 本文字数:3846 字

    阅读完需:约 13 分钟

模块一:为何架构设计能力难以提升?

教学目标:

  1. 明确架构的定义,从发展进程看架构设计目的

  2. 掌握大厂常用的应用架构、业务架构、部署架构画法

  3. 掌握当前最典型的架构设计流派

  4. 架构设计三原则,搞懂做架构和编程序的本质区别

架构工作中的痛点:

  1. 搞不懂架构、框架、系统、子系统、模块、组件等一大堆概念

  2. 架构听着就很高大上,我感觉自己干不了这个,高不可攀

  3. 以写代码的经验和思路来做架构设计,陷入细节无法自拔

  4. 面对老板、同事、下属,怎么让他们快速理解我的架构思路

通过学习掌握的核心能力:

  1. 认清架构本质:从架构演进看架构设计,先搞懂为什么做架构。

  2. 学会用图说话:针对不同场景和对象,使用不同的架构图传递架构思路

  3. 掌握经典设计流派:“面向复杂度”的架构设计

  4. 掌握架构设计本质、架构设计三原则

详细内容:

  1. 重新掌握架构的概念和定义

  2. 回顾架构发展:让创新有根可循

  3. 架构设计经典流派有哪些?

  4. 架构设计本质、架构设计方法论

  5. 如何画架构图:

  6. 画一画微信业务架构

  7. 看一看微信的部署架构/应用架构

  8. 架构设计三原则实战:学生管理系统

  9. 毕业设计里的玄机

  10. 外包版学生管理系统

  11. 产品级学生管理系统


模块二:如何抓住架构设计关键点?

教学目标:

  1. 在架构设计中,常见的复杂度具体体现在哪里?

  2. 清晰哪些地方是架构设计种需要特别关注的地方。

架构工作中的痛点:

  1. 不知道架构设计具体要解决什么问题,从而变成了画图工作。

  2. 做架构设计只能靠经验传承或者拍脑袋,没有统一的方法论。

  3. 对自己做完的架构设计心里没底,不知道是否是合理的。

通过学习掌握的核心能力:

掌握架构设计中最常见的四类复杂度以及复杂度背后的原因。

详细内容:

  1. 高性能复杂度和应对之道

  2. 高可用复杂度和应对之道

  3. 可扩展复杂度和应对之道

  4. 其它常见复杂度和应对之道

实战项目:

  1. 微信春节抢红包复杂度分析

  2. 支付宝光纤断网故障分析


模块三:如何保证设计出合理的架构?

教学目标:

深入掌握架构设计的标准流程

架构工作中的痛点:

  1. 不清楚架构师的职责有哪些,不同阶段需要做什么事情。

  2. 不知道自己做的架构设计是否做到位了,是否有遗漏的地方。

  3. 不知道好的架构是怎样的,更不知道如何做好架构设计。

  4. 不知道架构设计的粒度,架构设计和方案设计的差别是什么。

通过学习掌握的核心能力:

  1. 架构师职责及在架构设计流程上的作用。

  2. 标准的架构设计流程有那些步骤。

  3. 每个步骤里面有什么技巧,有哪些关键点。

详细内容:

  1. 架构师的岗位职责

  2. 如何识别架构设计复杂度

  3. 如何设计备选方案

  4. 如何选择备选方案

  5. 如何写出最终的架构设计方案

实战项目:

学生管理系统,十万学生规模的架构设计:

  1. 学生管理系统复杂度分析

  2. 学生管理系统备选方案设计(MySQL、Oracle、单机房/双机房)

  3. 学生管理系统备选方案评估

  4. 学生管理系统详细架构方案

模块四:如何设计业务高性能高可用存储架构?

教学目标:

  1. 掌握常见的高性能高可用存储架构模式的原理、优缺点和应用场景

  2. 学会根据业务需求来设计组合存储架构

架构工作中的痛点:

  1. 针对业务涉及的数据类型,不知道怎样设计合理的存储架构。

  2. 不清楚各种存储系统的优缺点和应用场景,无法针对业务做出最优的设计决策。

  3. 不知道如何评估业务的存储要求,既担心过度设计浪费资源,又担心预估不足上线就挂。

  4. 系统出现性能问题后,不知道是该优化系统实现,还是来做架构重构。

通过学习掌握的核心能力:

  1. 准确预估业务所需的存储高性能和高可用需求。

  2. 根据不同的业务需求,组合合适的存储系统来实现存储架构。

  3. 常见存储系统的架构设计细节以及应用。

详细内容:

  1. 业务高性能高可用存储架构设计步骤

  2. 高性能高可用存储架构模式:读写分离、分库分表、数据分区

  3. 在线数据存储系统优缺点剖析:MySQL、Redis、MongoDB、Elasticsearch

  4. 离线数据存储系统优缺点剖析:ClickHouse、HBase、Hadoop

实战项目

千万级学生管理系统高性能高可用存储架构设计


模块五:如何设计业务高性能高可用计算架构?

教学目标:

  1. 掌握常见的高性能高可用计算架构模式的原理。

  2. 掌握常见缓存系统、负载均衡系统的优缺点和应用场景。

  3. 学会根据业务需求来设计合理的高性能高可用计算架构。

架构工作中的痛点:

  1. 不知道如何评估业务所需的计算性能,导致上线后机器资源浪费或者资源不足

  2. 当系统出现性能问题的时候,不知道是该加业务处理服务器还是加缓存服务器

  3. 不知道如何选取合适的负载均衡架构和算法

通过学习掌握的核心能力:

  1. 了解常见架构模式的计算性能指标。

  2. 掌握评估业务的高性能高可用计算需求的能力。

  3. 掌握根据业务需要选择合适的缓存系统的能力。

  4. 掌握根据业务需要选择合适的负载均衡架构的能力。

详细内容:

  1. 高性能缓存架构设计:缓存穿透、缓存雪崩、缓存热点

  2. 高性能缓存系统优缺点剖析:Memcached、Redis

  3. 高性能负载均衡架构设计:DNS 负载均衡、集群负载均衡

  4. 高性能负载均衡系统优缺点剖析:Nginx(软件)、F5(硬件)

实战项目

模拟实现微博的高性能高可用计算架构


模块六:如何设计业务的微服务架构?

教学目标:

掌握微服务架构设计方法和技巧

架构工作中的痛点:

  1. 微服务的概念与 SOA、DDD 等混淆不清,不清楚微服务具体的含义

  2. 不知道按照什么维度去拆分微服务,感觉怎么拆都可以

  3. 虽然拆分了微服务,但是没有带来预期的效果,感觉问题更多了

  4. 微服务拆分是架构重构,但是又不能停业务开发,导致互相影响

通过学习掌握的核心能力:

  1. 深入理解微服务的架构本质,熟悉微服务架构容易踩的坑。

  2. 掌握微服务的拆分原则及合适的拆分粒度,避免过度拆分或者拆分不足。

  3. 掌握微服务的拆分方法,实现微服务的快速落地。

  4. 掌握微服务实施的技巧,减少微服务重构对业务发展的影响。

详细内容:

  1. 微服务与 SOA、DDD 的区别与联系

  2. 微服务的三个火枪手拆分原则

  3. 微服务的四大拆分方法

  4. 微服务实施的团队、技术、项目技巧

实战项目:

电商系统微服务拆分(单体 -> 按性能拆分 -> 按高可用拆分 -> 按领域拆分)


模块七:如何设计业务异地多活架构?

教学目标:

掌握异地多活架构设计方法及技巧

架构工作中的痛点:

  1. 听说异地多活很牛,但是不知道怎么做

  2. 不确定是否就一定要上异地多活

  3. 业界现成异地多活方案,不能直接应用在自己的业务中

  4. 设计异地多活架构总感觉有问题,无法确定架构方案

  5. 不知道异地多活架构做到什么程度最合适

通过学习掌握的核心能力:

  1. 掌握 CAP、FLP,清晰理解异地多活架构本质

  2. 学会异地多活架构设计原则

  3. 掌握异地多活架构设计步骤

  4. 掌握常见的异地多活架构设计技巧

  5. 掌握 FMEA 架构评估方法

详细内容:

  1. CAP、FLP 与异地多活架构

  2. FMEA 高可用评估方法

  3. 异地多活架构设计 3 大原则

  4. 异地多活架构设计 4 个步骤

  5. 异地多活架构设计 5 个技巧

  6. 淘宝、支付宝、QQ 异地多活架构剖析

实战项目:

模拟设计王者荣耀的异地多活架构


模块八:如何设计贴合业务的高性能高可用中间件系统?

教学目标:

从 0 到 1 设计一个高性能高可用系统。

架构工作中的痛点:

  1. 工作中主要是选择开源系统来用,但是不知道怎样设计这样的系统。

  2. 业界没有特别适合自己业务特点的开源系统,只能凑合用,用得不顺手。

通过学习掌握的核心能力:

  1. 熟悉单机高性能计算架构模式

  2. 熟悉集群高性能计算架构模式

  3. 熟悉高可用存储架构模式

  4. 掌握从 0 到 1 设计一个高性能高可用系统的方法

详细内容:

  1. 高可用存储架构:双机架构、集群架构

  2. 高可用计算架构:单机高性能设计、集群高性能架构

  3. 高性能高可用系统的架构设计方法

  4. Redis 架构剖析:主备、主从、cluster

  5. MongoDB 架构剖析:主从、sharding

  6. Elasticsearch 集群架构解析

实战项目:

基于 LevelDB 的高性能高可用消息队列(数据复制 + 状态决策)


模块九: 十万级 &百万级用户 IM 架构实战

教学目标:

掌握满足十万级用户 &百万级用户 IM 架构的设计方法。

架构工作中的痛点:

  1. 知道一大堆技术或者架构模式,但是不知道如何结合业务来选择。

  2. 架构设计太复杂会导致投入较大,耗时较长;设计太简单又担心上线后很快就不够用。

通过学习掌握的核心能力:

  1. 如何从业务需求分析出架构需求,掌握基本的架构设计套路。

  2. 如何设计合适的架构,既能满足业务一定的扩展,又不会过度设计。

  3. 掌握十万级用户规模业务的常用架构。

  4. 掌握百万级用户规模业务的常用架构。

  5. 掌握如何从十万级用户架构演进到百万级用户架构。

实战项目:

亿级用户 IM 1.0,十万级注册用户规模的架构设计

  1. 存储架构设计:统一存储:数据库读写分离(基础数据)、Redis(会话消息)

  2. 计算架构设计:Nginx 负载均衡 + 子系统集群

  3. 可扩展架构设计:子系统拆分(还不是微服务)

  4. 高可用架构:单机房 + 数据库备份


亿级用户 IM 2.0,百万用户规模的架构设计

  1. 存储架构设计:分离存储:数据库分库分表(在线数据)、 Clickhouse(离线数据)

  2. 计算架构设计:微服务网关 + 微服务集群 + Memcached 缓存

  3. 可扩展架构设计:小规模微服务

  4. 高可用架构设计:单机房 + 灾备机房

模块十: 千万级 &亿级用户 IM 架构实战

教学目标:

挑选合适的技术来设计满足海量用户 IM 业务的架构。

掌握从百万万级架构演进到千万级架构的设计方法和技巧。

掌握从千万级架构演进到亿级用户架构的设计方法和技巧。

架构工作中的痛点:

  1. 海量用户的架构需要考虑机房设计和建设,开发出身的技术人员没有这方面的经验。

  2. 千万级以上用户的架构业务已经很复杂了,单纯用微服务来应对已经不够。

  3. 千万级用户架构和亿级用户架构看起来要求差不多,不知道怎么做才合适。

通过学习掌握的核心能力:

  1. 掌握千万级用户规模和亿级用户规模业务的常用架构。

  2. 掌握如何从百万级用户架构演进到千万级用户架构。

  3. 掌握如何从千万级用户架构演进到亿级用户架构。

实战项目:

亿级用户 IM 3.0,千万用户规模的架构设计

  1. 存储架构设计:混合存储(数据库 + ES + 大数据存储)

  2. 计算架构设计:DNS 多机房负载均衡 + 容器化

  3. 可扩展架构设计:业务域划分

  4. 高可用架构设计:多机房 + 异地多活


亿级用户 IM 4.0,亿级用户规模的架构设计

  1. 存储架构设计:数据分区

  2. 计算架构设计:GSLB

  3. 可扩展架构设计:业务线划分

  4. 高可用架构设计:区域中心

发布于: 刚刚阅读数: 3
用户头像

Xiao8

关注

God bless the fighters. 2020.03.11 加入

欢迎关注公众号:程序猿Damon,长期从事Java开发,研究Springcloud的微服务架构设计。目前主要从事基于K8s云原生架构研发的工作,Golang开发,长期研究边缘计算框架KubeEdge、调度框架Volcano、容器云KubeSphere研究

评论

发布
暂无评论
fenxi_7月月更_Xiao8_InfoQ写作社区