这是我参与「第五届青训营 」伴学笔记创作活动的第 8 天
分布式解决在没有大型主机的部署环境情况下,系统性能的高可用和吞吐量,由集中式系统过渡来的,随着计算机系统向网络化和微型化的发展日趋明显,同时业务的发展,传统的集中式处理模式越来越不能适应人们的需求,学习成本高,大型主机贵、容错性差,扩容困难。分布式应运而生
分布式
定义:分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标,可以分为分布式计算,分布式存储,分布式数据库等
优势:去中心化、低成本、弹性、资源共享、可靠性高
挑战:普通的结点故障、不可靠的网络、异构的机器与硬件环境、安全
常见的分布式系统
分布式存储
Google File System(GFS):google分布式文件系统
Ceph:统一的分布式存储系统
Hadoop HDFS:基于GFS架构的开源分布式文件系统
Zookeeper:高可用的分布式数据管理与系统协调框架
分布式数据库
Google Spanner:google可扩展的、全球分布式的数据库
TIDB:开源分布式关系型数据库
HBase:开源Nosql数据库
MongoDB:文档数据库
分布式计算
Hadoop:基于MapReduce分布式计算框架
Spark:在Hadoop基础之上,使用内存来存储数据
YARN:分布式资源调度
系统模型
故障模型:
Byzantine failure:节点可以任意篡改发送给其他节点的数据
Authentication detectable byzantine failure:节点可以篡改数据,但不能伪造其他节点的数据
Performance failure:节点未在特定时间段内收到数据,即时间太早或太晚
Omission failure:节点收到数据的时间无限晚,即收不到数据
Crash failure:节点收到数据的时间无限晚,即收不到数据
Fail-stop failure:在Crash failure的基础上增加了错误可检测的假设
CAP理论
C:一致性,指数据在多个副本之间能够保持一致的特性
A:可用性,指系统提供的服务必须一致处于可用的状态,每次请求都能获取到非错的响应——但是不能保证获取的数据为最新数据
P:分区容错性,分布式系统在遇到任何网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务,除非整个网络环境都发生了故障
ACID理论
A:原子性,是指事务所包含的操作要么全部成功,要么全部失效回滚
C:一致性,一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态
I:隔离性,隔离性是当多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离
D:持久性,持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作