架构师训练营第 1 期 -Week4 - 课后练习

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

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



解答:

主要的技术方案是水平伸缩,构建分布式集群。也就是通过增加更多服务器的,将请求压力分散到多台服务器上,来提升整个系统的计算能力,来应对高并发的用户挑战。



大型互联网应用面临的主要的挑战是高并发的用户访问,带来的请求压力。每次请求都会消耗服务器的资源,如CPU、内存、硬盘、网络等资源。单台服务器垂直伸缩带来的提升是有极限的。但是水平扩展是没有极限的。水平扩展的成本和计算资源的提升是呈线性的(成本在某些时候,会低于垂直伸缩)。



技术方案

所以大型互联网应用都采用水平伸缩来解决高并发的用户请求带来的访问压力带来的挑战。其中主要的架构方案(架构模式)有:

  1. 分层架构设计方案

  2. 分割架构设计方案

  3. 分布式架构设计方案

  4. 集群架构设计方案

  5. 缓存架构设计方案

  6. 异步架构设计方案

  7. 冗余架构设计方案

  8. 自动化架构设计方案

  9. 安全架构设计方案



技术手段

主要的技术手段按照前端、网关及应用层、服务层、存储层、后台、运维安全六层可以细分成以下:

前端层

  • CDN

  • 动静分离

  • 图片服务器

  • 反向代理

  • DNS

网关及应用层

  • 负载均衡

  • 动态页面静态化

  • 业务拆分



服务层

  • 微服务

  • 分布式消息队列

  • 缓存

  • 分布式一致性服务



存储层

  • 分布式文件

  • 分布关系数据库

  • NoSQL数据库



后台

  • 搜索引擎

  • 推荐引擎

  • 大数据平台

  • 数据仓库



运维与安全

  • 数据监控和报警

  • 安全防护

  • 数据加密和解密



技术方案和手段归纳总结

互联网应用是提供给企业外部用户的,它面临的问题有:高性能(并发量高)、高可用(7*24小时提供服务)、可扩展(需求变化快,敏捷的项目版本迭代)、海量数据、应用安全、用户分布广泛等问题。本质问题是海量的用户带来的挑战。



主要的技术手段有:缓存(CDN)、分布式、集群、微服务、异步。



解决高性能的技术手段 -- 主要通过分布式(拆分系统进行分流)、集群、缓存的方式来做

  • 缓存(包括CDN缓存,反向代理缓存、本地缓存、远程缓存服务集群)

  • 搜索引擎

  • 动静分离

  • 文件服务

  • 关系数据库的读写分离

  • 关系数据库的分库分表

  • 负载均衡

  • 动态页面静态化

  • 异步(通过消息队列提高响应速度)

  • 集群(应用服务集群、关系数据库集群、缓存集群、负载均衡集群、搜索引擎集群等)



解决高可用的技术手段 -- 主要通过冗余、自动化来做

  • 集群(双机架构、数据库集群、应用程序集群、NoSQL服务集群、负载均衡集群等)

  • 异地多活

  • 服务的熔断、发现、注册、降级等

  • 自动化技术(自动切换主从、自动剔除异常服务器等)

  • 异步(避免服务的强依赖)



解决可扩展的技术手段 -- 主要通过微服务来做

  • 通过分层、分割切分服务,构建分布式系统集群

  • 将通用的业务抽离出来,构建微服务集群,中台化

  • 事件驱动架构



解决海量数据的手段 -- 主要通过数据分片来做

  • 数据的冷热分离(热数据用mysql,冷数据用mongodb)

  • 数据分片存储

  • 搜索引擎(如es、solr等) nosql一般容易做分片



解决应用安全的手段

  • 待补充



用户头像

鲁小鲁

关注

博学而笃志,切问而近思。 2018.09.29 加入

Go开发

评论

发布
暂无评论
架构师训练营第 1 期 -Week4 - 课后练习