分布式处理

分布式与集群,以及负载均衡

萝らか妹 提交于 2019-11-27 22:57:57
新浪微博 分布式的集群服务 集群:集群就是一组部署有 相同应用 的服务器 集群是一组独立的计算机系统构成一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信。 应用程序通过网络共享内存进行消息传送,实现分布式计算。 集群可分纵向集群(一台计算机部署多个应用)和横向集群(多台计算机部署多个应用)。 负载均衡:一种服务的提供访问策略。用来在多台计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载的一种计算机网络技术。 负载均衡能把任务比较均衡地分布到集群环境下的计算和网络资源。 可以达到最大化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。 分布式是一个大型的互联网应用的架构设计的理念。多个集群,多个负载均衡策略组成的非常庞大的 分布式与集群区别: 一句话:分布式是并联工作的,集群是串联工作的。 1.分布式是指将不同的业务分布在不同的地方。 而集群指的是将几台服务器集中在一起,实现同一业务。 分布式中的每一个节点,都可以做集群。 而集群并不一定就是分布式的。 举例:就比如新浪网,访问的人多了,他可以做一个群集,前面放一个响应服务器,后面几台服务器完成同一业务,如果有业务访问的时候,响应服务器看哪台服务器的负载不是很重,就将给哪一台去完成。 而分布式,从窄意上理解,也跟集群差不多, 但是它的组织比较松散,不像集群,有一个组织性,一台服务器垮了

分布式系统的一致性级别划分及Zookeeper一致性级别分析

安稳与你 提交于 2019-11-27 22:15:29
最近在研究分布式系统的一些理论概念,例如关于分布式系统一致性的讨论,看了一些文章我有一些不解。大多数对分布式系统一致性的划分是将其分为三类:强一致性,顺序一致性以及弱一致性。强一致性(Strict Consistency)也称为:原子一致性(Atomic Consistency)、线性一致性(Linearizable Consistency)。 在谈到Zookeeper的一致性是哪种级别的一致性问题,以及CAP原则中的C是哪一种一致性级别时有些疑惑。 下面是大多数文章中提到的一致性级别 1. 一致性(Consistency) 一致性(Consistency)是指多副本(Replications)问题中的数据一致性。可以分为强一致性、顺序一致性与弱一致性。 1.1 强一致性(Strict Consistency) 也称为: 原子一致性(Atomic Consistency) 线性一致性(Linearizable Consistency) 强一致性有两个要求: 任何一次读都能读到某个数据的最近一次写的数据。 系统中的所有进程,看到的操作顺序,都和全局时钟下的顺序一致。 简言之,在任意时刻,所有节点中的数据都是一样的。 例如,对于关系型数据库,要求更新过的数据能被后续的访问都能看到,这是强一致性。 1.2 顺序一致性(Sequential Consistency) the result

如何解决分布式系统数据事务一致性问题(HBase加Solr)

不想你离开。 提交于 2019-11-27 21:00:02
摘要:对于所有的分布式系统,我想事务一致性问题是极其非常重要的问题,因为它直接影响到系统的可用性。本文以下所述所要解决的问题是:对于入HBase和Solr的过程,如何保证HBase中写入的数据与Solr中写入的数据完全一致。 关键词:HBase, Solr, 分布式, 事务, 系统架构, 大数据 作者:王安琪(博客: http://www.cnblogs.com/wgp13x/ ) 一、关于分布式系统事务一致性问题 Java 中有三种可以的事务模型,分别称作本地事务模型(Local Transaction Model),编程式事务模型(Programmatic Transaction Model),和声明式事务模型(Declarative Transaction Model)。事务要求包含原子性(Atomicity),一致性(Consistency),独立性(Isolation),和持久性(Durability)。 《大型网站系统与Java中间件实践》一书中分享了一些解决分步式系统一致性问题的方案构思与实践,如在第六章中谈到的消息中间件。下表展现了解决一致性方案与传统方式的对比。 传统方式是,我做完了,发你消息。解决一致性的方案的意思就是,我先发你消息,我做完了再跟你确认我做完了。这是改进后的有事务的消息中间件。 因为在非XA 环境中,消息队列的插入过程独立于数据库更新操作

分布式和集群的区别

这一生的挚爱 提交于 2019-11-27 16:11:16
https://www.zhihu.com/question/20004877 分布式是对业务的纵向拆分,目的是为了降低维护成本,方便后期点对点的纠错或者优化; 集群是对服务的横向扩展,目的是增强服务能力,降低服务压力 集群是个物理形态,分布式是个工作方式。 只要是一堆机器,就可以叫集群,他们是不是一起协作着干活,这个谁也不知道;一个程序或系统,只要运行在不同的机器上,就可以叫分布式,嗯,C/S架构也可以叫分布式。 集群一般是物理集中、统一管理的,而分布式系统则不强调这一点。 所以,集群可能运行着一个或多个分布式系统,也可能根本没有运行分布式系统;分布式系统可能运行在一个集群上,也可能运行在不属于一个集群的多台(2台也算多台)机器上。 前面的答案说的不太准确, 其实分布式不一定就是不同的组件,同一个组件也可以,关键在于是否通过交换信息的方式进行协作。比如说Zookeeper的节点都是对等的,但它自己就构成一个分布式系统。 也就是说, 分布式是指通过网络连接的多个组件,通过交换信息协作而形成的系统。而集群,是指同一种组件的多个实例,形成的逻辑上的整体。 可以看出这两个概念并不完全冲突,分布式系统也可以是一个集群,例子就是前面说的zookeeper等,它的特征是服务之间会互相通信协作。是分布式系统不是集群的情况,就是多个不同组件构成的系统;是集群不是分布式系统的情况

记录下最近看分布式系统设计的一些感想(上)

别说谁变了你拦得住时间么 提交于 2019-11-27 16:10:20
正式内容开始前的一点题外话: 去年毕业,到上个月13号工作正式满一年了,在工作开始之初就想着要多写博客,后来慢慢发现,自己没啥积累,即使写也是CV别人的,没多大意义,于是就放弃了写博客,专心提升自己。直到最近看了一些关于分布式系统设计的文章,才想好好总结总结,于是有了这篇难产的博文。 下面就开始胡诌了。 1、什么是分布式系统?为什么会有分布式系统? 我理解分布式系统就是将多台服务器按某种规则组合在一起,以期望获得更大的请求处理能力,让系统更加的稳健,不会因为某些故障导致系统的不可用。 在分布式系统出现之前,我们的系统都会面临两个问题,一个单机瓶颈,还有一个是单机故障: 单机瓶颈就是一台机器的处理能力是有限的,随着业务的发展,更多用户的访问使得单机无法处理更多的请求,由此造成用户体验的下降、用户流失; 单机故障就是当我们将服务部署到一台机器上后,万一服务器所在区域停电了、服务器网线断了,总之因为各种各样的原因,导致服务器宕机、网络不通,这样都会导致服务不可用 解决以上两种问题的办法就是加机器,对于第二种情况除了加机器之外,我们可能还需要多机房灾备、更甚至的就是异地多活,博主所在公司去年就在主推异地多活。将多台服务器通过网络组合在一起,形成一个分布式系统。 而我们根据服务器功能的不同可以将这些分布式系统细分为:分布式服务系统(包括微服务、消息服务、搜索服务等)、分布式缓存

分布式、集群

这一生的挚爱 提交于 2019-11-27 14:05:30
1.什么是分布式架构?什么是集群? 分布式 : 一个业务分拆为多个子业务,分别布署到不同服务器上,需要各子业务之间配合才能完成整个业务逻辑 。比如一个网站,会员系统放在A服务器,消息系统放在B服务器,支付系统放在C服务器等等,那么这个网站也算是一个分布式网站。 集群 : 同一个业务被布署到不同的服务器 以降低单台服务器的压力, 多台服务器一起实现同一个业务 。 区别: 分布式是指将不同的业务分给不同的服务器,每一个服务器都完成不同的业务,每个服务器缺一不可 ;而 集群指的是将几台服务器集中在一起,实现同一业务。每台服务器并不是缺一不可的。 分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率的。 【注】分布式中的每一个节点,都可以做集群。 而集群并不一定就是分布式的。 举个例子说明 :   一个小饭店里,原来只有一个厨师,买菜洗菜切菜炒菜全都是这厨师一人干,这叫 单机结构 。后来饭店客人多了,一个厨师确实忙活不过来,于是饭店又请来了个厨师,现在饭店有了两个厨师,这两个厨师都能从头到尾做一样的菜,这两个厨师就是 集群 。这样两个厨师集群确实能做更多的活,客人点10个菜可以分配每个人抄5个,单个厨师压力减少了。但是这样还不行,为了让厨师专心做菜,把菜做得更好,于是饭店又请来了采购和配菜师,采购负责买菜,配菜师负责把菜挑拣洗好切好给厨师做好准备

ZooKeeper系列(一)—— ZooKeeper 简介及核心概念

巧了我就是萌 提交于 2019-11-27 12:04:45
一、Zookeeper简介 Zookeeper 是一个开源的分布式协调服务,目前由 Apache 进行维护。Zookeeper 可以用于实现分布式系统中常见的发布/订阅、负载均衡、命令服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。它具有以下特性: 顺序一致性 :从一个客户端发起的事务请求,最终都会严格按照其发起顺序被应用到 Zookeeper 中; 原子性 :所有事务请求的处理结果在整个集群中所有机器上都是一致的;不存在部分机器应用了该事务,而另一部分没有应用的情况; 单一视图 :所有客户端看到的服务端数据模型都是一致的; 可靠性 :一旦服务端成功应用了一个事务,则其引起的改变会一直保留,直到被另外一个事务所更改; 实时性 :一旦一个事务被成功应用后,Zookeeper 可以保证客户端立即可以读取到这个事务变更后的最新状态的数据。 二、Zookeeper设计目标 Zookeeper 致力于为那些高吞吐的大型分布式系统提供一个高性能、高可用、且具有严格顺序访问控制能力的分布式协调服务。它具有以下四个目标: 2.1 目标一:简单的数据模型 Zookeeper 通过树形结构来存储数据,它由一系列被称为 ZNode 的数据节点组成,类似于常见的文件系统。不过和常见的文件系统不同,Zookeeper 将数据全量存储在内存中,以此来实现高吞吐,减少访问延迟。

cap理论与分布式事务的解决方案

浪子不回头ぞ 提交于 2019-11-27 09:18:16
现在很火的微服务系统所设计的系统是分布式系统。分布式系统有一个著名的CAP理论,即一个分布式系统要同时满足一致性(Consistency)、可用性(Availablility)和分区容错(Partition Tolerance)三个特性是一件不可能的事情。 CAP理论的简介 CAP理论是由Eric Brewer在2000年的PODC会议上提出的,该理论在两年后被证明成立。 CAP理论告诉架构师不要妄想设计出同时满足三者的系统,应该有所取舍,设计出适合业务的系统。 一致性(Consistency): 一致性指的是数据的强一致性。每次的读操作都是读取的最新数据。即如果写入某个数据成功的话,之后的读取都应该读的是新写入的数据;如果写入失败的话,之后读取的都不应该是写入失败的数据。 可用性(Availability): 可用性指的是服务的可用性。即每个请求都能在合理的时间内获得符合预期的响应结果。 分区容错性(Partition Tolerance): 分区容错性指的是当节点之间的网络出现问题之后,系统仍然能够正常提供服务。 在分布式的系统中,P是基本要求,而单体应用则是CA系统。微服务系统通常是一个AP系统,即同时满足可用性和分区容错性。这样就有了一个在分布式系统中保证数据强一致性的难题,这个难题的一个解决方案就是分布式事务。 分布式事务的解决方案 在微服务系统中

大数据笔记

老子叫甜甜 提交于 2019-11-27 08:44:06
1.Hadoop是什么?为什么要使用Hadoop?平常如何使用Hadoop完成工作? Hadoop是一个大数据开源框架。The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models. It is designed to scale up from single servers to thousands of machines, each offering local computation and storage. The project includes these modules: Hadoop Common : The common utilities that support the other Hadoop modules. Hadoop Distributed File System (HDFS™) : A distributed file system that provides high-throughput access to application data. Hadoop YARN

分布式场景常见问题及解决方案

感情迁移 提交于 2019-11-27 08:27:25
分布式场景常见问题及解决方案 前言: 本文主要是根据平常学习过程中遇到的一些分布式场景常见问题,并作出了解析,有不对或者需要补充的地方,希望广大的程序员朋友们及时改进,另外,想要学习,分布式的朋友,我提供一张分布式的学习路线思维导图,望可以给你们一点建议。 下面进入正题 一、分布式锁 分布式锁是在分布式场景下一种常见技术,通常通过基于redis和zookeeper来实现,本文主要介绍redis分布式锁和zookeeper分布式锁的实现方案和对比: (1)基于redis的普通实现 这个方案的加锁主要实现是基于redis的”SET key 随机值 NX PX 过期时间(毫秒)”指令,NX代表只有key不存在时才设置成功,PX代表在过期时间后会自动释放。 这个方案的释放锁是通过lua脚本删除key的方式,判断value一样则删除key。 使用随机值的原因是如果某个获取到锁的客户端阻塞了很长时间,导致了它获取到的锁已经自动释放,此时可能有其他客户端已经获取到了锁,如果直接删除是有问题的,所以要通过随机值加上lua脚本去判断如果value相等时再删除。 这个方案存在一个问题就是,如果采用redis单实例可能会存在单点故障问题,但如果采用普通主从方式,如果主节点挂了key还没来得及同步到从节点,此时从节点被切换到了主节点,由于没有同步到数据别人就会拿到锁。 (2)redis的RedLock算法