写点什么

架构师训练营 4 期 第 4 周

用户头像
引花眠
关注
发布于: 2021 年 01 月 24 日

作业一:课后练习

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


大型互联网应用系统面临的挑战

一般大型互联网应用系统会面临以下问题:


  1. 高并发,大流量

  2. 高可用

  3. 海量数据

  4. 用户分布广泛,网络情况复杂

  5. 安全环境恶劣

  6. 需求快速变更,发布频繁


使用的技术都是为了解决业务场景中遇到的问题,如果没有出现问题,为了技术而技术,那么会得不偿失。、 一般应对这些挑战有两个方向,


  1. 垂直扩展 通过升级硬件和网络吞吐能力可以实现垂直伸缩,最简单的短期伸缩方案,因为可以不涉及架构的改变。但是有瓶颈会遇到单台服务器的极限。

  2. 水平扩展 通过增加相同的服务器提升应用服务能力


目前大型网站都是采用水平伸缩来应对上述挑战,一般典型的大型互联应用系统使用了包括:CDN 加速、负载均衡、缓存、分布式文件系统、消息队列、NoSql、大数据等技术手段。


技术方案

  1. 分层 将系统从横向分割为几个层比如常见的是视图、服务、数据等,为以后进行拆分做准备,是其它方案的基础

  2. 分割 当系统逐渐业务量增长,系统复杂度逐渐增加,只是简单的分层已经不能满足条件,那么就需要对系统进行纵向分割,一些相关的模块放到一起,可以在不同的层次按照不同的粒度进行分割。比如在电商系统中订单,用户,推荐等进行分割

  3. 分布式 当系统经过分层和分割之后,就可以对这些比较小的模块进行分布式的部署。常见的分布式部署方案有:分布式应用和服务、分布式静态资源(动静分离)、分布式数据和存储、分布式计算

  4. 集群 虽然将系统分布部署,可以避免各个模块之间的相互影响,但是这个提升也是有瓶颈的,也会遇到所谓的单台服务器的极限问题。而集群就是解决这一问题的必要手段。通过将多台提供相同服务器的应用构成一个集群,并使用负载均衡对外提供服务,可以有效的提高系统的并发处理能力和可用性(避免单台故障)

  5. 缓存 缓存可以说是一个常见的技术,通过将数据放在距离计算较近的位置,来提高响应速度、减少网络带宽、降低服务器压力。常见的缓存技术有:CDN 加速、反向代理、本地缓存、分布式缓存

  6. 异步 系统解耦合的重要手段。如果可以将一个业务操作分成几步去处理,而每一步之间都不是直接调用而是通过异步方式进行,那么就可以用不同的能力来处理不同的阶段,提高系统可用性,加快网站响应速度,消除并发访问高峰等。一般的异步手段有消息队列、异步代理等

  7. 冗余 也是常见的技术方案,多个备份多条路。互联网应用需要 7×24 小时连续运行,但是服务器总有可能会出现故障,特别是服务器规模比较大的时候,服务器宕机是必然事件,要想保证高可用,那么就必须在提供正常服务之外,增加备份。比如银行系统或大型网站都有好几个灾备中心。

  8. 自动化 目前互联网自动化都是在运维阶段

  9. 安全性 在互联网中,安全也是必须要考虑的问题。尤其是最近几年数据安全越来越受到人们重视。一些常见的提升系统安全性的技术有:密码加密,网络通讯加密,API 加密,避免 XSS 攻击,避免 SQL 注入,风险监控等


总结

这些技术方案通过组合使用来应对挑战。 分层分割是所有技术方案的基础,不仅仅是大型互联网应用,对于中小型网站来讲,分层也是应该必备的基础。


  • 高并发,大流量 通过分布式和集群提高并发处理能力,通过缓存实现动静分离,降低热点数据响应时间也能提高并发能力,异步将不同的阶段解耦可以充分利用不同系统之间处理速度,可以按照不同的能力扩容,这也能提高并发处理能力。

  • 高可用 其实主要手段就是数据冗余备份和失效转移,而实现的手段就是分布、集群

  • 海量数据 处理海量数据,可以使用分布式数据和存储系统,使用大数据技术处理,使用 NoSql 数据库存储不同的数据

  • 用户分布广泛,网络情况复杂 也是缓存或分布,按照不同的地域或者国家进行缓存

  • 安全环境恶劣 使用多种手段保护用户数据,保护系统资源

  • 需求快速变更,发布频繁 将大系统拆分成微服务可以快速应对变更,自动化的运维方案可以为频繁发布提供技术保障。


作业二:根据当周学习情况,完成一篇学习总结

本周主要学习了互联网系统面临的挑战与常用的解决方案以及互联网架构的演进。 对于互联网系统面临的挑战与常用的解决方案作业一已经有表述,这里只是简单的记录一下互联网架构的演进:


  1. 应用数据分离

  2. 使用缓存改善系统性能

  3. 使用应用服务器集群改善系统的并发处理能力

  4. 数据库读写分离

  5. 使用反向代理和 CDN 加速网站响应

  6. 使用分布式文件系统和分布式数据库系统

  7. 使用 NoSQL 和搜索引擎

  8. 业务拆分

  9. 微服务及中台化

  10. 大数据与智能化


虽然说这是互联网系统架构演进的多个阶段,但是我们在实际开发过程中没有必要遵循这个演进步骤,那样就比较死板,比如我们在不采用集群的条件下可以将 1、2、4 组合使用,在使用技术的过程中有几个要注意的地方:


  1. 不要一味的追随“大厂”的技术

  2. 不要为了技术而技术

  3. 不是所有的问题都能用技术问题解决


发布于: 2021 年 01 月 24 日阅读数: 9
用户头像

引花眠

关注

还未添加个人签名 2018.06.11 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 4 期 第4周