分布式处理

分布式存储系统横向对比

折月煮酒 提交于 2020-01-21 03:26:34
(一)关键问题 数据分布 对于存储系统,最重要的问题就是数据分布,即什么样的数据放置在什么样的节点上。数据分布时需要考虑数据是否均衡、以后是否容易扩容等一系列问题。不同的数据分布方式也存在不同的优缺点,需要根据自身数据特点进行选择。 1)哈希分布 => 随机读取 取模直接哈希: 将不同哈希值的数据分布到不同的服务器上 关键: 找出一个散列特性很好的哈希函数 问题: 增加、减少服务器时的大量数据迁移 解决: 1)将<哈希值,服务器>元数据存储在元数据服务器中;2)一致性哈希 一致性哈希: 给系统每个节点分配一个随机token,这些token构成一个hash环。执行数据存放操作时,先计算key的hash值,然后存放到顺时针方向第一个大于或者等于该hash值的token所在节点。 关键: 哈希值变成了一个范围,每个物理节点上存储的数据是哈希值处于前一段范围的数据。 优点: 节点增加/删除时只会影响到在hash环中相邻的节点,而对其他节点没影响。 维护每台机器在哈希环中的位置方式:1) 记录它前一个&后一个节点的位置信息,每次查找可能遍历整个哈希环所有服务器;2) O(logN)位置信息,查找的时间复杂度为O(logN);3) 每台服务器维护整个集群中所有服务器的位置信息,查找服务器的时间复杂度为O(1) 虚拟节点: 将哈希取模的模数取得很大,就会得到更多的哈希值,这个哈希值成为逻辑节点

分布式事务

北战南征 提交于 2020-01-20 00:54:21
本地事务 事务Transaction由一组SQL组成,具有四个ACID特性 ACID Atomicity 原子性 构成事务的一组SQL,要么全部生效,要么全不生效,不会出现部分生效的情况 Consistency 一致性 数据库经过事务操作后从一种状态转变为另一个状态。可以说原子性是从行为上描述,而一致性是从结果上描述 isolation 隔离性 事务操作的数据对象 相对于 其他事务操作的数据对象相互隔离,互不影响 durability 持久性 事务提交后,其结果就是永久性的,即使发生宕机(非磁盘损坏) 事务实现 对于MySQL数据库(InnoDB存储引擎)而言,隔离性是通过不同粒度的锁机制来实现事务间的隔离;原子性、一致性和持久性通过redo log 重做日志和undo log回滚日志来保证的。 redo log 当数据库对数据做修改的时候,需要把数据页从磁盘读到buffer pool中,然后在buffer pool中进行修改,那么这个时候buffer pool中的数据页就与磁盘上的数据页内容不一致,称buffer pool的数据页为dirty page 脏数据,如果这个时候发生非正常的DB服务重启,那么这些数据还没在内存,并没有同步到磁盘文件中(注意,同步到磁盘文件是个随机IO),也就是会发生数据丢失,如果这个时候,能够在有一个文件,当buffer pool 中的data

ZooKeeper原理及使用

冷暖自知 提交于 2020-01-19 06:19:54
ZooKeeper是Hadoop Ecosystem中非常重要的组件,它的主要功能是为分布式系统提供一致性协调(Coordination)服务,与之对应的Google的类似服务叫Chubby。今天这篇文章分为三个部分来介绍ZooKeeper,第一部分介绍ZooKeeper的基本原理,第二部分介绍ZooKeeper提供的Client API的使用,第三部分介绍一些ZooKeeper典型的应用场景。 ZooKeeper基本原理 1. 数据模型 如上图所示,ZooKeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode。每个ZNode都可以通过其路径唯一标识,比如上图中第三层的第一个ZNode, 它的路径是/app1/c1。在每个ZNode上可存储少量数据(默认是1M, 可以通过配置修改, 通常不建议在ZNode上存储大量的数据),这个特性非常有用,在后面的典型应用场景中会介绍到。另外,每个ZNode上还存储了其Acl信息,这里需要注意,虽说ZNode的树形结构跟Unix文件系统很类似,但是其Acl与Unix文件系统是完全不同的,每个ZNode的Acl的独立的,子结点不会继承父结点的,关于ZooKeeper中的Acl可以参考之前写过的一篇文章《 说说Zookeeper中的ACL 》。 2.重要概念 2.1 ZNode 前文已介绍了ZNode,

ZooKeeper原理及使用

风流意气都作罢 提交于 2020-01-19 06:19:12
转:http://blog.csdn.net/xinguan1267/article/details/38422149 ZooKeeper是 Hadoop Ecosystem中非常重要的组件,它的主要功能是为分布式系统提供一致性协调(Coordination)服务,与之对应的Google的类似服务叫Chubby。今天这篇文章分为三个部分来介绍ZooKeeper,第一部分介绍ZooKeeper的基本原理,第二部分介绍ZooKeeper提供的Client API的使用,第三部分介绍一些ZooKeeper典型的应用场景。 ZooKeeper基本原理 1. 数据模型 如上图所示,ZooKeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode。每个ZNode都可以通过其路径唯一标识,比如上图中第三层的第一个ZNode, 它的路径是/app1/c1。在每个ZNode上可存储少量数据(默认是1M, 可以通过配置修改, 通常不建议在ZNode上存储大量的数据),这个特性非常有用,在后面的典型应用场景中会介绍到。另外,每个ZNode上还存储了其Acl信息,这里需要注意,虽说ZNode的树形结构跟Unix文件系统很类似,但是其Acl与Unix文件系统是完全不同的,每个ZNode的Acl的独立的,子结点不会继承父结点的

ZooKeeper原理及使用

本秂侑毒 提交于 2020-01-19 06:18:58
ZooKeeper是Hadoop Ecosystem中非常重要的组件,它的主要功能是为分布式系统提供一致性协调(Coordination)服务,与之对应的Google的类似服务叫Chubby。今天这篇文章分为三个部分来介绍ZooKeeper,第一部分介绍ZooKeeper的基本原理,第二部分介绍ZooKeeper提供的Client API的使用,第三部分介绍一些ZooKeeper典型的应用场景。 ZooKeeper基本原理 1. 数据模型 如上图所示,ZooKeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode。每个ZNode都可以通过其路径唯一标识,比如上图中第三层的第一个ZNode, 它的路径是/app1/c1。在每个ZNode上可存储少量数据(默认是1M, 可以通过配置修改, 通常不建议在ZNode上存储大量的数据),这个特性非常有用,在后面的典型应用场景中会介绍到。另外,每个ZNode上还存储了其Acl信息,这里需要注意,虽说ZNode的树形结构跟Unix文件系统很类似,但是其Acl与Unix文件系统是完全不同的,每个ZNode的Acl的独立的,子结点不会继承父结点的,关于ZooKeeper中的Acl可以参考之前写过的一篇文章《 说说Zookeeper中的ACL 》。 2.重要概念 2.1 ZNode 前文已介绍了ZNode,

基于全业务统一数据中心的配电分析应用研究

橙三吉。 提交于 2020-01-19 01:05:04
转载自: http://dq.shejis.com/dqlw/201610/article_142755.html 国网电力科学研究院 张子仲   1 目标与架构   1.1 需求   随着信息系统应用的不断深入,加快构建全球能源互联网和全面建成“一强三优”现代公司的目标以及大数据、云计算等新技术的日趋成熟,同时在企业级数据资源管理应用方面也暴露出了不足。数据是信息化的核心,建设全业务统一数据中心是源端全业务融合、后端大数据分析的必然选择,对建设信息化企业具有重要意义。 图1   1.2 目标与原则   到“十三五”末,基本建成“数据干净透明、模型规范统一、分析灵活智能”的全业务统一数据中心,实现面向全业务范围、全数据类型、全时间维度数据的统一存储、管理与服务。 图2   全业务统一数据中心主要包括数据处理中心、数据分析中心和数据管理中心三部分 图3   ①数据处理中心   数据处理中心为公司各业务应用提供逻辑统一的数据访问支撑,是原有业务系统各个分散数据库的归并、发展与提升,主要包括业务处理数据库与统一数据访问服务两个部分。 图4   (1)实现跨专业数据统一访问,促进跨部门的信息共享与业务数据融合;   (2)改变业务集成方式,消除数据复制,促进跨部门业务协同;   (3)隔离应用与数据库的直接连接,为统一数据模型的应用与数据管控提供技术支撑。   ②数据分析中心  

分布式哈希和一致性哈希算法

时间秒杀一切 提交于 2020-01-18 17:25:33
目录 1、数据分布 2、哈希方式 3、一致性哈希方式 笔记来自分布式原理一书,供个人学习。 数据分布 单机系统与分布式系统的最大的区别在于问题的规模,即计算、存储的数据量的区别。将一个单机问题使用分布式解决,首先要解决的就是如何将问题拆解为可以使用多机分布式解决,使得 分布式系统中的每台机器负责原问题的一个子集。由于无论是计算还是存储,其问题输入对象都是数据,所以如何拆解分布式系统的输入数据成为分布式系统的基本问题,我们称这样的数据拆解为数据分布方式。 哈希方式 哈希方式是最常见的数据分布方式,其方法是按照数据的某一特征计算哈希值,并将哈希值与机器中的机器建立映射关系,从而将不同哈希值的数据分布到不同的机器上。所谓数据特征可以是 key-value 系统中的 key,也可以是其他与应用业务逻辑相关的值。例如,一种常见的哈希方式是按数据属于的用户 id 计算哈希值,集群中的服务器按0到机器数减 1 编号,哈希值除以服务器的个数,结果的余数作为处理该数据的服务器编号。工程中,往往需要考虑服务器的副本冗余,将每数台(例如 3)服务器组成一组,用哈希值除以总的组数,其余数为服务器组的编号。图 2-1 给出了哈希方式分数据的一个例子,将数据按哈希值分配到 4 个节点上。 哈希方式特点 : 1.每个节点只计算一部分数据;每个节点只存储一部分数据。 我们假设节点的数量没有变化(实际上不可能)

GFS分布式文件系统集群(理论)

核能气质少年 提交于 2020-01-18 03:39:08
GlusterFS概述 1、GlusterFS简介 (1)开源的分布式文件系统 (2)由存储服务器、客户端以及NFS/Samba存储网关组成 (3)无元数据服务器(数据传输组件RDMA) (4)GlusterFS特点:扩展性、高性能、高可用性 (5)全局统一命名空间 (6)弹性卷管理---->云的特性:水平(实例数)、垂直(硬件性能),包括ECS(虚拟)、OSS和RDS(裸金属) (7)基于标准协议 2、GlusterFS术语 (1)Brick(节点) (2)Volume(卷) (3)FUSE(用户端交互模块) (4)VFS(虚拟化文件系统) (5)Glusterd(服务) 3、模块化堆栈式架构 (1)模块化、堆栈式的架构 (2)通过对模块的组合,实现复杂的功能 GlusterFS工作原理 2、弹性HASH算法 (1)通过HASH算法得到一个32位的整数 (2)划分为N个连续的子空间,每个空间对应一个Brick (3)弹性HASH算法的优点: ☀保证数据平均分布在每一个Brick中 ☀解决了对元数据服务器的依赖,进而解决了单点故障以及访问瓶颈 GlusterFS的卷类型 1、分布式卷 ●没有对文件进行分块处理 ●通过扩展文件属性保存HASH值 ●支持的底层文件系统有ext3、ext4、 ZFS、 XFS等 (1)特点 ●数据被分割成更小块分布到块服务器群中的不同条带区

怎么理解分布式、高并发、多线程?

我怕爱的太早我们不能终老 提交于 2020-01-17 08:03:53
是不是很多人都认为分布式=高并发=多线程? 当面试官问到高并发系统可以采用哪些手段来解决,或者被问到分布式系统如何解决一致性的问题,是不是一脸懵逼? 一开始,不少人都会将三者混淆,误以为所谓的分布式高并发的系统就是能同时供海量用户访问,而采用多线程手段不就是可以提供系统的并发能力吗?实际上, 他们三个总是相伴而生,但侧重点又有不同。 什么是分布式? 分布式更多的一个概念, 是为了解决单个物理服务器容量和性能瓶颈问题而采用的优化手段 。该领域需要解决的问题极多,在不同的技术层面上,又包括:分布式文件系统、分布式缓存、分布式数据库、分布式计算等,一些名词如Hadoop、zookeeper、MQ等都跟分布式有关。从理念上讲,分布式的实现有两种形式: 水平扩展: 当一台机器扛不住流量时,就通过添加机器的方式,将流量平分到所有服务器上,所有机器都可以提供相当的服务; 垂直拆分: 前端有多种查询需求时,一台机器扛不住,可以将不同的需求分发到不同的机器上,比如A机器处理余票查询的请求,B机器处理支付的请求。 什么是高并发? 相对于分布式来讲,高并发在解决的问题上会集中一些,其反应的是同时有多少量 :比如在线直播服务,同时有上万人观看。 高并发可以通过分布式技术去解决,将并发流量分到不同的物理服务器上。但除此之外,还可以有很多其他优化手段:比如使用缓存系统,将所有的,静态内容放到CDN等

分布式系统

放肆的年华 提交于 2020-01-17 05:40:26
什么是分布式架构 分布式系统(distributed system)是建立在网络之上的软件系统。 分布式系统(distributed system)是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。 内聚性是指每一个数据库分布节点高度自治,有本地的数据库管理系统。 透明性是指每一个数据库分布节点对用户的应用来说都是透明的,看不出是本地还是远程。 在分布式数据库系统中,用户感觉不到数据是分布的,即用户不须知道关系是否分割、有无副本、数据存于哪个站点以及事务在哪个站点上执行等。 简单来讲:在一个分布式系统中,一组独立的计算机展现给用户的是一个统一的整体,就好像是一个系统似的。 1-3-01-jpg 分布式系统作为一个整体对用户提供服务,而整个系统的内部的协作用户来说是透明的,用户就像是在使用一个MySQL一样。 如分布式MySQL中间件-Mycat,来处理大并发大数据量的构架。 分布式架构的应用 有 分布式文件系统,分布式缓存系统,分布式数据库,分布式WebService,分布式计算 我们来举例说明: 分布式文件系统: 出名的有 Hadoop 的HDFS ,还有 google的 GFS , 淘宝的 TFS 等 分布式缓存系统:memcache , hbase ,