架构师训练营 第四周 作业
作业一:
一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。
大型互联网应用系统,按照架构演进的历程,每个阶段的瓶颈,以及对应的解决方案。
一.前端使用的技术手段
浏览器缓存:减少页面加载时间,减少服务器负载
动静分离:静态资源与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问。
CDN加速:针对负责的网络环境,提高网站加载页面速度。把静态资源部署到cdn上。
前后端分离:前后端进行解耦,能让不同技术系统下的人做到工作隔离。
二.服务端使用的技术手段
1.负载均衡
采用硬件如F5,软件Nginx,lvs等进行在多个服务器分配负载,以达到最优化资源使用,结合服务器监控,可对服务器进行扩展。
2.分布式缓存
高并发环境下,大量的读写请求涌向数据库,磁盘的处理速度与内存显然不在一个量级,从减轻数据库的压力和提高系统响应速度两个角度来考虑,一般都会在数据库之前加一层缓存。由于单台机器的内存资源以及承载能力有限,并且,如果大量使用本地缓存,也会使相同的数据被不同的节点存储多份,对内存资源造成较大的浪费,因此,才催生出了分布式缓存。常用的有Memcache,Redis等
3.分布式消息队列:
主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。目前在生产环境,使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等
4.NoSql数据库
区别于关系数据库,NoSQL其实就是关系型数据库的补充,就目前而言我们是不可能离开关系型数据库的,所以NoSQL就来弥补关系型数据库在某些情况下的不足。这里把常见的NoSQL分为4类:K-V类、文档型、列式存储型、全文搜索型等。
Key-Value数据库
源起:Amazon的论文 Dynamo 和 Distributed HashTables。
数据模型:键值对
例子:Membase, Riak
优点:处理大量数据,快速处理大量读写请求。编程友好。
文档数据库
源起:受Lotus Notes启发。
数据模型:包含了key-value的文档集合
例子:CouchDB, MongoDB
优点:数据模型自然,编程友好,快速开发,web友好,CRUD。
列式存储型
源起:主流的事务型数据库(OLTP)大多采用行式存储。
数据模型:有的列依次排列构成一行,以行为单位存储,再配合以 B+ 树或 SS-Table 作为索引,就能快速通过主键找到相应的行数据
例子:GBase 8a, HBase
优点:数据模型自然,编程友好,快速开发,web友好,CRUD。
5.中间件
服务框架:Dubbo
数据层:mycat
消息中间件:Kafka
配置中心:apollo
6.分布式文件
数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统 。
业界对于分布式文件系统应用,大致有以下场景 大文件冷数据,比如片库 并行读写,高though put,比如HPC 和视频在线编辑 海量write once read many 的小文件 mapreduce 或者ml /dl 任务的输入和输出
开源分布式文件系统有:GlusterFS 、cephfs、Lustre、HDFS、moosefs等
7.分布式数据库
优点如下:
(1)具有灵活的体系结构
(2)适应分布式的管理和控制机构
(3)经济性能优越
(4)系统的可靠性高、可用性好
(5)局部应用的响应速度快
(6)可扩展性好,易于集成现有系统。
目前关系数据库:阿里云分布式关系型数据库(DRDS)
Key-value NoSQL:redis
document NoSQL:mongodb
column family NoSQL:Hbase
评论