文章目录
前言
随着互联网技术的日新月异,互联网产业逐渐渗透到社会领域的方方面面,短短十年就改变了诸多人们的生活方式。过去的十年,是互联网发展最为迅速的时代,随着互联网的崛起、用户的激增和数据的爆炸性膨胀,全球的科技大厂积累了丰富的高可用和分布式的经验,大数据、云计算、区块链、人工智能这些高科技时代的产物也随之而来。
本文主要谈谈大数据、分布式系统以及分布式搜索引擎的相关概念。
大数据时代
麦肯锡全球研究所给出的大数据定义
一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件工具能力范围的数据集合,具有海量的数据规模、快速的数据流转、多样的数据类型和价值密度低四大特征。
这个定义也表明了大数据的主要三大特征:海量(Volume)、多样(Variety)、实时(Velocity),为了解决这些特征带来的问题,互联网技术需要实现三个需求:高并发、高可扩、高性能,这就是 3V 和 3高。
也正是因为大数据需要强大的算力和海量的存储支撑,传统的单机架构的软件体系已经无法满足大数据业务的需求,所以基于集群、分布式的软件架构体系应用而生。
单机、集群、分布式架构
-
单机架构
对于中小型系统业务,所有的代码都放在一个项目,然后这个项目部署在一台服务器,该项目所有的业务都由这台服务器提供,这就是单机结构。但是单机服务器的处理能力是有限的,当业务增长到一定程度的时候,单机的硬件资源将无法满足业务需求,此时便出现了集群模式。 -
集群架构
单机的项目实例复制部署到多台服务器上就形成了集群,每个服务器就是一个节点,每一个节点都相当于对实例的克隆,部署多个节点,处理业务的能力和节点数成正比,这些节点的集合就叫做集群。 -
分布式架构
分布式结构就是将一个完整的系统,按照业务功能,拆分成一个个独立的子系统,在分布式结构中,每个子系统就被称为“服务”,这些子系统能够独立运行在一台服务器中,多个服务之间通过RPC方式通信,每一个子系统也可以形成一个集群来提高服务性能。
虽然集群和分布式架构解决了 3高 的需求,但是事物都具有两面性,分布式和集群系统带来的缺点也很明显:
- 分布式架构是跨进程、跨实例、跨网络的,性能和可靠性容易受到网络环境的影响。
- 引入各种中间件、异步通信等模式大大增加了系统的复杂度。
- 分布式系统对数据的一致性需要在 C(一致性)A(可用性)P(分区容错性)中做出选择。
- 一个系统拆成了多个