架构师训练营 第四周 作业

用户头像
极客
关注
发布于: 2020 年 07 月 01 日

作业一:

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



大型互联网应用系统,按照架构演进的历程,每个阶段的瓶颈,以及对应的解决方案。

一.前端使用的技术手段

  1. 浏览器缓存:减少页面加载时间,减少服务器负载

  2. 动静分离:静态资源与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问。

  3. CDN加速:针对负责的网络环境,提高网站加载页面速度。把静态资源部署到cdn上。

  4. 前后端分离:前后端进行解耦,能让不同技术系统下的人做到工作隔离。

二.服务端使用的技术手段

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 



用户头像

极客

关注

还未添加个人签名 2018.03.29 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 第四周 作业