抖音,是由字节跳动孵化的一款音乐创意短视频社交软件。一经推出,便大受欢迎。人们在抖音上分享自己的日常,观看、点赞、收藏自己喜欢的视频……抖音成为许多人生活动作不可缺少的一部分,本文将关注点放在抖音的互联网架构上,并思考如何构建高效可用的系统。
一.分布式系统架构 抖音采用分布式系统(distributed system),是建立在网络之上的软件系统。
1.分布式系统架构的优点:
内聚性:每一个数据库分布节点高度自治,有本地的数据库管理系统。
透明性:每一个数据库分布节点对用户的应用来说都是透明的,无法区分是本地亦或是远程。
公共服务:重复开发的基础服务被提取出来,形成服务中心,这就避免了重复造轮子,有效地降低开发成本,架构团队出现。
2.难点:
网络因素:由于服务和数据分布在不同的机器上,每次交互都需要跨机器运行,这就有可能产生网络延迟、网络故障等问题。
异构系统的不标准问题?(软件、协议、格式、运维的不标准)
负载均衡(领域服务层的负载、服务发现)等
二.微服务
微服务是基于SOA思想,将系统粒度进一步细化而诞生的一种手段。
2.难点:
服务拆分:粒度并非越小越好。太小会带来部署维护等一系列成本的上升。
接口约束:系统增多,各个服务接口的规范化日益重要,要求有统一的服务接口规范,推动企业消息总线的建设
权限约束:接口不是任意想调就可以调的,实现服务之间的权限认证。
三.如何构建高效可用的系统
容灾设计:目前常见的容灾模式有:同城容灾、异地容灾、 双活数据中心、 两地三中心,可根据实际情况进行选择。
应急响应: 制定应急响应流程,确保突发情况下,应用能够及时恢复。
弹性计算:根据系统负载的实时情况,动态调整计算资源的规模,进而满足高并发和高负载情况下的需求。
优化性能:提升数据库的性能和可拓展性。