架构师 01 期,第四周课后作业

用户头像
子文
关注
发布于: 2020 年 10 月 18 日

作业一:

一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。

垂直伸缩

通过升级硬件和网络吞吐能力可以实现垂直伸缩。由于不需要改变应用架 构,所以通常 被认为是最简单的短期伸缩性方案

水平伸缩

水平伸缩是指通过增加服务器提升计算能力的一类架构方法。

架构演化

第一阶段 :应用数据分离

第二阶段:使用缓存改善系统性能

第三阶段:使用应用服务器集群改善系统的并发处理能力

第四阶段:数据库读写分离

第五阶段:使用反向代理和 CDN 加速网站响应

第六阶段:使用分布式文件系统和分布式数据库系统

第七阶段:使用 NoSQL 和搜索引擎

第八阶段:业务拆分

第九阶段:微服务及中台化

第十阶段 大数据与智能化



应用集群



反向代理:nginx

无状态的应用服务:N 个

数据库:HA



要点:



一、对于有状态的服务涉及 Session 的处理。



  1. 反向代理支持 session 保持,但是应用服务器的增加和删除,导致 session 失效

  2. 应用服务器之间进行 session 同步

  3. 部署 HA 或集群模式的 session 服务器

  4. session 存在cookie中,右浏览器来告诉应用服务器 session,以此实现了session和应用服务器的解耦



二、动静结合

1、静态资源是用反向代理

2、静态资源使用 CDN

3、静态资源使用浏览器缓存



瓶颈:数据库,读写比例失衡,超出数据库处理能力



读写分离



绝大多数应用是读多写少,因此,进行读写分离。



反向代理:nginx

无状态的应用服务:N 个

数据库:HA + 多个从节点(3-5)



要点:



一、判断主从延迟

1、 seconds_behind_master

2、点位法

3、 GTID 法



二、主从数据之间的延迟

1、强制走主库法:对一致性低的,可以直接读从节点;一致性高的,走主库读。

2、判断主库延迟法:对操作根据一致性的要求高度应用,通过判断主库延迟来决定读从库还是读主库。

3、半同步法

4、等主库点位法

5、等 GTID 法

6、写缓存法



三、访问数据模式

1、三方依赖:ShardingJDBC、TDDL

2、代理层:MyCat、DBProxy



瓶颈:数据量很超过单机存储能力。



分库分表



反向代理:nginx

无状态的应用服务:N 个

数据库:HA + 多个从节点(3-5)+ 分库 + 分表



要点:

1、全局唯一 ID:ID 发号器

2、分库分表的逻辑:基于范围、基于 hash

3、引入NoSQL:比如引入 ES 满足特定场景的读性能,HBase 满足更大数据量的处理



引入缓存



反向代理:nginx

无状态的应用服务:N 个

缓存:redis、memcached

数据库:HA + 多个从节点(3-5)+ 分库 + 分表



要点

一、缓存分离

本地缓存:guava、caffine、ehcache

分布式缓存:redis、memcached



二、缓存更新套路

1、cache Aside

2、write through、read through

3、write back



三、缓存引入问题

1、热点问题

2、缓存穿透

3、缓存击穿

4、缓存雪崩



分布式服务



反向代理:nginx

无状态的应用服务:根据DDD 思想对服务精拆分

缓存:redis、memcached

数据库:HA + 多个从节点(3-5)+ 分库 + 分表



要点

1、服务治理:服务发现、配置中心、注册中心、客户端负载均衡、熔断、限流、链路跟踪等等服务治理手段。

2、DevOp、服务网格应对应用爆炸

3、引入消息中间件解耦。



数据驱动、智能化、中台化



反向代理:nginx

无状态的应用服务:根据DDD 思想对服务精拆分

缓存:redis、memcached

数据库:HA + 多个从节点(3-5)+ 分库 + 分表

数据分析:大数据平台、AI 平台



要点:

1、建立大数据技术对业务进行分析,找到业务数据的价值

2、引入机器学习、AI 技术赋能业务

3、AIops 简化运维

4、Cloud Native

5、业务中台、数据中台、AI 中台



用户头像

子文

关注

233 2018.04.03 加入

233

评论

发布
暂无评论
架构师 01 期,第四周课后作业