分析抖音的互联网架构,了解其系统设计和技术实现,并思考在类似场景下如何构建高可用的系统(上) | 青训营

131 阅读3分钟

抖音

抖音采用的就是分布式系统架构,将系统的不同组件拆分为微服务,并使用消息队列等技术实现组件,这种架构能够提高系统的可扩展性和容错性。

分布式系统

介绍:

所谓分布式系统,是指一个完整的应用系统被拆分后,分别部署到不同的网络节点中,这样的系统往往是一些大型的系统。这种做法的好处是,可以提高系统的运算能力。与分布式系统相对应的就是 单体应用系统,单体应用系统的思想是all in one 思想, 就是全部在一起,一个系统的全部服务都集中在一个网络节点上。

分布式架构的应用:

1.分布式文件系统

例:出名的有 Hadoop 的 HDFS, 还有 google的 GFS , 淘宝的 TFS 等

2.分布式缓存系统

例:memcache , hbase, mongdb 等

3.分布式数据库

例:mysql, mariadb, postgreSql 等

4.分布式webService

  1. 分布式计算

架构模式

1、高可用架构

大型网站应该在任何时候都可以正常访问。正常提供对外服务。因为大型网站的复杂性,分布式,廉价服务器,开源数据库,操作系统等特点。要保证高可用是很困难的,也就是说网站的故障是不可避免的。

2、可伸缩架构

伸缩性是指在不改变原有架构设计的基础上,通过添加或者减少硬件的方式,提高或者降低系统的处理能力。

3、可扩展架构

可以方便的进行功能模块的新增/移除,提供代码/模块级别良好的可扩展性。

消息队列

定义:

1、消息队列是一种先进先出的队列型数据结构,实际上是系统内核中的一个内部链表。消息被顺序插入队列中,其中发送进程将消息添加到队列末尾,接收进程从队列头读取消息。 2、多个进程可同时向一个消息队列发送消息,也可以同时从一个消息队列中接收消息。发送进程把消息发送到队列尾部,接收进程从消息队列头部读取消息,消息一旦被读出就从队列中删除。

RocketMQ

介绍:

1、是一个队列模型的消息中间件,具有高性能、高可靠、高实时、分布式特点; 2、Producer、Consumer、队列都可以分布式; 3、Producer向一些队列轮流发送消息,队列集合称为 Topic,Consumer 如果做广播消费,则一个 consumer 实例消费这个 Topic 对应的所有队列,如果做集群消费,则多个 Consumer 实际平均消费这个 topic 对应的队列集合; 4、严格的消息顺序; 5、提供丰富的消息拉取模式; 6、拥有高效的订阅者水平; 7、可以实时的订阅消息; 8、拥有亿级消息堆积能力; 9、具有较少的依赖。