分布式系统
猴哥_IT小菜鸟
三分天注定七分靠打拼 爱拼才会赢
展开
-
关于消息队列的使用----ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ
一、消息队列概述消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ二、消息队列应用场景以下介绍消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景。2.1异步处转载 2017-02-15 19:41:06 · 617 阅读 · 0 评论 -
【Apache ZooKeeper】理解ZooKeeper中的ZNodes
ZooKeeper中的每个结点都是一个ZNode。ZNode维护一个包括数据和ACL修改的版本号的stat结构。ZNode结构还包括时间戳。版本号和时间戳一起用来验证缓存和协调更新。ZNode中的数据每更新一次,版本号就相应的增加一次。例如,每当客户端需要检索数据的时候,它也会收到一个数据的版本号。当客户端执行修改或者删除操作时,必须提供正在修改的数据的版本号。如果客户端提供的版本号和实际数据的版本转载 2017-02-10 15:39:54 · 369 阅读 · 0 评论 -
ZooKeeper FAQ
这段时间来,也在和公司里的一些同学交流使用zk的心得,整理了一些常见的zookeeper问题。这个页面的目标是解答一些zk常见的使用问题,同时也让大家明确zk不能干什么。页面会一直更新。客户端1. 客户端对ServerList的轮询机制是什么随机,客户端在初始化( new ZooKeeper(String connectString, int sessionTimeout, Watcher w转载 2017-02-10 15:38:56 · 163 阅读 · 0 评论 -
Zookeeper使用和原理探究
zookeeper介绍zookeeper是一个为分布式应用提供一致性服务的软件,它是开源的Hadoop项目中的一个子项目,并且根据google发表的论文来实现的,接下来我们首先来安装使用下这个软件,然后再来探索下其中比较重要一致性算法。 zookeeper安装和使用zookeeper的安装基本上可以按照 http://hadoop.apache.org/zookeeper/docs/curre转载 2017-02-10 15:38:09 · 163 阅读 · 0 评论 -
ZooKeeper典型应用场景一览
ZooKeeper是一个高可用的分布式数据管理与系统协调框架。基于对Paxos算法的实现,使该框架保证了分布式环境中数据的强一致性,也正是基于这 样的特性,使得ZooKeeper解决很多分布式问题。网上对ZK的应用场景也有不少介绍,本文将结合作者身边的项目例子,系统地对ZK的应用场景进行一 个分门归类的介绍。值得注意的是,ZK并非天生就是为这些应用场景设计的,都是后来众多开发者根据其框架的特性,利转载 2017-02-10 15:36:59 · 168 阅读 · 0 评论 -
Cassandra 入门介绍
1. 前言随着互联网大规模的Web2.0应用的兴起及云计算需要的大规模分布式服务和分布式存储的发展,传统的关系数据库面临着诸多全新的挑战,特别是在那些超大规模和高并发的SNS类型的应用场景下,使用关系数据库来存储和查询用户动态数据已经显得力不从心,暴露了很多难以克服的问题,例如需要很高的实时插入性能;需要海量的数据存储能力同时还需要非常快的查询检索速度;需要将数据存储无缝扩展到整个群集环境下,并且能转载 2017-02-10 15:35:57 · 410 阅读 · 0 评论 -
Cassandra 数据模型
1. 概述Cassandra是一套开源分布式NoSQL数据库系统,设计思想采用了google的BigTable的数据模型和Amazon的Dynamo的完全分布式架构,因而它具有很好的扩展性且不存在单点故障。本文假设读者已经具有了SQL数据库的基本知识,为了帮助读者更容易的理解Cassandra的数据模型,本文结合SQL数据库的概念,采用类比的方法介绍Cassandra的数据模型。2. 数据模型转载 2017-02-10 15:22:56 · 509 阅读 · 0 评论 -
Cassandra中的各种策略
1. 背景介绍Cassandra 使用分布式哈希表(DHT)来确定存储某一个数据对象的节点。在 DHT 里面,负责存储的节点以及数据对象都被分配一个 token。token 只能在一定的范围内取值,比如说如果用 MD5 作为 token 的话,那么取值范围就是 [0, 2^128-1]。存储节点以及对象根据 token 的大小排列成一个环,即最大的 token 后面紧跟着最小的 token,比如对转载 2017-02-10 15:22:07 · 645 阅读 · 0 评论 -
《分布式JAVA应用 基础与实践》 第六章 构建高可用的系统
对于互联网或企业中的大型应用而言,多数要求做到7*24小时不间断运行。实际上要完全做到不太可能,但可尽量接近,各大网站或大型应用在总结一年的运行状况时,通常会有当年的可用性为99.9%这样的内容。为实现类似的高可用,要避免系统中出现单点。6.1 避免系统中出现单点单点是指系统部署在单台机器上,一旦这台机器出现问题(硬件损坏,网络不通等),系统就不可用。解决单点最常见的方法是采用集群。采用集群则转载 2017-02-10 15:21:24 · 234 阅读 · 0 评论 -
《分布式JAVA应用 基础与实践》 第七章 构建可伸缩的系统
通常将通过升级或增加单机机器的硬件来支撑访问量及数据量增长的方式称为垂直伸缩,将通过增加机器来支撑访问量和数据量的增长的方式称为水平伸缩。垂直伸缩实现难度较低,但机器的硬件是无法不断升级和增加,容易达到瓶颈;水平伸缩理论上没有瓶颈,但技术难度较高。两者各有一定的优点,因此在应用中通常可以混合采用。7.1 垂直伸缩垂直伸缩前,先要分析系统的瓶颈,针对性地根据瓶颈对硬件进行升级或增加。另外,需要从软转载 2017-02-10 15:20:43 · 371 阅读 · 0 评论 -
Zookeeper简介
一、 Paxos基于消息传递通信模型的分布式系统,不可避免的会发生以下错误:进程可能会慢、垮、重启,消息可能会延迟、丢失、重复, Paxos 算法解决的问题是在一个可能发生上述异常的分布式系统中如何就某个值达成一致,保证不论发生以上任何异常,都不会破坏决议的一致性。一个典型的场景是,在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点都执行相同的操作序列,那么他们最后能得到一个一致转载 2017-02-10 15:19:58 · 225 阅读 · 0 评论 -
一致性哈希(Consistent Hashing)
直到现在为止,一致性哈希也没有一个非常明确的定义,多数文献还是从其应用场景之上对一致性哈希进行描述。“哈希”想必大家都已经了解,问题是何为“一致性”? 一致性 在讨论一致性哈希之前,先认识下“非一致性哈希”,显然HashMap属于此列。 当使用HashMap时,key被均匀地映射到数组之上,映射方法就是利用key的hash与数组长度取模(通过&运算)。 当put的数据超过负载因子loa转载 2017-02-10 15:19:09 · 226 阅读 · 0 评论 -
【Apache ZooKeeper】官方文档
ZooKeeper是一个高性能的用于协调分布式应用程序的服务。它将公共服务,比如命名、配置管理、同步化和集群服务封装进一个简单的接口,可以直接用于实现共识(consensus)、集群管理、领导者选举和存在(presence )协议。可以在其上构建自己的分布式应用程序。ZooKeeper使用一种类似文件系统目录树的数据模型,它可以运行于Java上并且具有Java和C的封装。ZooKeeper的设计目转载 2017-02-10 15:40:59 · 224 阅读 · 0 评论 -
Paxos算法之旅 ZooKeeper代码解析
ZooKeeper是近期比较热门的一个类Paxos实现。也是一个逐渐得到广泛应用的开源的分布式锁服务实现。被认为是Chubby的开源版,虽然具体实现有很多差异。ZooKeeper概要的介绍可以看官方文档:http://Hadoop.apache.org/zookeeper 这里我们重点来看下它的内部实现。ZooKeeper集群中的每个server都要知道其他成员,通过在配置文件zoo.cfg中作如转载 2017-02-10 15:42:57 · 197 阅读 · 0 评论 -
分布式服务框架 Zookeeper -- 管理分布式环境中的数据
安装和配置详解本文介绍的 Zookeeper 是以 3.2.2 这个稳定版本为基础,最新的版本可以通过官网 http://hadoop.apache.org/zookeeper/来获取,Zookeeper 的安装非常简单,下面将从单机模式和集群模式两个方面介绍 Zookeeper 的安装和配置。单机模式单机安装非常简单,只要获取到 Zookeeper 的压缩包并解压到某个目录如:/home/转载 2017-02-10 15:43:39 · 252 阅读 · 0 评论 -
Kafka下的生产消费者模式与订阅发布模式
在RabbitMQ下的生产消费者模式与订阅发布模式一文中,笔者以“数据接入”和“事件分发”两种场景为例,介绍了如何使用RabbitMQ来设计、实现生产消费者模式与订阅发布模式。生产消费者模式,指的是由生产者将数据源源不断推送到消息中心,由不同的消费者从消息中心取出数据做自己的处理,在同一类别下,所有消费者拿到的都是同样的数据;订阅发布模式,本质上也是一种生产消费者模式,不同的是,由订阅者首先向消息转载 2017-02-15 18:08:42 · 734 阅读 · 0 评论 -
kafka基础
http://kafka.apache.org/quickstartkafka笔记 1/kafka是一个分布式的消息缓存系统2/kafka集群中的服务器都叫做broker3/kafka有两类客户端,一类叫producer(消息生产者),一类叫做consumer(消息消费者),客户端和broker服务器之间采用tcp协议连接4/kafka中不同业务系统的消息可以通过topic进行区分,而且每转载 2017-02-15 17:49:50 · 274 阅读 · 0 评论 -
关于数据库的水平切分和垂直切分的一些概念
关于数据库的水平切分和垂直切分的一些概念(转) <div class="postBody"> <div id="cnblogs_post_body"><div> <strong>垂直拆分</strong></div> 垂直拆分就是要把表按模块划分到不同数据库表中(当然原则还是不破坏第三范式),这种拆分在大型网站的演变过程中是很常见的。当一转载 2017-02-10 16:11:39 · 1233 阅读 · 0 评论 -
Hadoop与MapReduce 分布式文件系统
最终一致性键值存储• Cassandra 内存键值存储 • Memcached 持久化键值存储 • BigTable Key/value 硬盘存储• BigTableKey/value RAM存储• MemcachedMapReduce是Google提出的一个软件架构,用于大规模数据集(大于1TB)的并行运算。概念“Map(映射)”和“Reduce(化简)”,及他们的主要思想,都转载 2017-02-10 15:55:08 · 396 阅读 · 0 评论 -
分布式开源框架Hadoop介绍
BigTable是一种压缩的、高性能的、高可扩展性的,基于Google文件系统(Google File System,GFS)的数据存储系统,用于存储大规模结构化数据,适用于云计算。 Hadoop是Apache软件基是金会所研发的开放源码并行运算编程工具和分散式档案系统,根据Google公司发表的MapReduce和Google档案系统的论文,自行实作而成。 Hbase是一个开源的高可靠性转载 2017-02-10 15:54:01 · 1563 阅读 · 0 评论 -
关系数据库还是NoSQL数据库
之前简单的说明了为什么要使用NoSQL。接下来我们看下如何把NoSQL引入到我们的项目中,我们到底要不要把NoSQL引入到项目中。在过去,我们只需要学习和使用一种数据库技术,就能做几乎所有的数据库应用开发。因为成熟稳定的关系数据库产品并不是很多,而供你选择的免费版本就更加少了,所以互联网领域基本上都选择了免费的MySQL数据库。在高速发展的WEB2.0时代,我们发现关系数据库在性能、扩展性、数据的转载 2017-02-10 15:49:53 · 218 阅读 · 0 评论 -
分布式存储系统设计的若干原则
1、CAP理论2000年Eric Brewer教授提出了著名的CAP理论,即:一个分布式系统不可能满足一致性,可用性和分区容错性这三个需求,最多只能同时满足两个。2002年MIT的Seth Gilbert 和 Nancy lynch两人证明了CAP理论的正确性。根据CAP理论,一致性(C),可用性(A),分区容错性(P),三者不可兼得,必须有所取舍。因此系统架构师不要把精力浪费在如何设计才能同时满转载 2017-02-10 15:49:02 · 429 阅读 · 0 评论 -
Ehcache和Memcached比较分析
项目 MemcacheEhcache分布式 不完全,集群默认不实现 支持 集群 可通过客户端实现 支持(默认是异步同步) 持久化 可通过第三方应用实现,如sina研发的memcachedb,将cache的数据保存到[url=]Berkerly DB[/url] 支持。持久化到本地硬盘,生成一个.data和.index文件。cache初始化时会自动查找这两个文件,将数据放入cach转载 2017-02-10 15:47:16 · 155 阅读 · 0 评论 -
基于RMI实现远程调用的系统间通信
在Java中实现远程调用方式的技术主要有RMI和WebService两种,下面分别来看看基于RMI技术如何实现远程调用方式的系统间通信。RMIRMI(Remote Method Invocation)是Java用于实现透明远程调用的重要机制。在远程调用中,客户端仅有服务器端提供的接口。通过此接口实现对远程服务器端的调用。远程调用基于网络通信来实现,RMI同样如此,其机制如图1.1所示: (转载 2017-02-10 15:46:26 · 253 阅读 · 0 评论 -
基于WebService实现远程调用方式的系统间通信
在Java中实现远程调用方式的技术主要有RMI和WebService两种,下面分别来看看基于WebService技术如何实现远程调用方式的系统间通信。WebServiceWebService是一种跨语言的系统间交互标准。在这个标准中,对外提供功能的一方以HTTP的方式提供服务,该服务采用WSDL(Web Service Description Language)描述,在这个文件中描述服务所使用的转载 2017-02-10 15:45:34 · 450 阅读 · 0 评论 -
分布式系统协调 ZooKeeper
ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。Zookeeper是Google的Chubby一个开源的实现.是高有效和可靠的协同工作系统.Zookeeper能够用来leader选举,配置信息转载 2017-02-10 15:44:33 · 230 阅读 · 0 评论 -
Gossip算法
Gossip算法因为Cassandra而名声大噪,Gossip看似简单,但要真正弄清楚其本质远没看起来那么容易。为了寻求Gossip的本质,下面的内容主要参考Gossip的原始论文:<<Efficient Reconciliation and Flow Control for Anti-Entropy Protocols>>。 1. Gossip背景Gossip算法如其名,灵感来自办公室八卦,转载 2017-02-10 15:18:33 · 333 阅读 · 0 评论 -
网站的分布式架构
互联网的网站和大部分企业管理软件一样都是使用B/S架构模型,但是大型的公共网站B/S架构会更加复杂,对架构人员的要求更高,今天我想在自己博客里聊聊我设计的网站的B/S技术架构。 不管是B/S架构的企业管理系统还是网站技术架构可以抽象为如下简图: 在传统B/S架构的企业管理系统里,技术架构往往就是一个工程项目,各个逻辑分层都是该工程的业务逻辑模块。但是作为提供公共服务的网站,由于用户群比较庞大,网转载 2017-02-10 15:17:57 · 443 阅读 · 0 评论 -
持续可用与CAP理论 – 一个系统开发者的观点
持续可用 本文主要针对金融数据库,认为金融数据库的持续可用包含两点:一个是强一致性;另外一个是高可用性。 数据库系统必须是强一致性的系统,这是因为数据库系统有事务ACID的基本要求,而弱一致系统无法做到。业内也有一些流行的NOSQL系统,例如各种类Dynamo系统,如开源的Cassandra,对同一个最小数据单位(同一行数据)允许多台服务器同时写入,虽然采用NWR机制处理冲突,但是由于不转载 2017-02-10 11:45:54 · 199 阅读 · 0 评论 -
开源分布式NoSQL数据库系统——Cassandra
Apache Cassandra(社区内一般简称为C*)是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集Google BigTable的数据模型与Amazon Dynamo的完全分布式架构于一身。Facebook于2008将 Cassandra 开源,此后,由于Cassandra良好的可扩展性和性能,被Digg、Twitter、Hulu、Netf转载 2017-02-10 11:45:05 · 400 阅读 · 0 评论 -
架构师需要了解的Paxos原理、历程及实战
数据库高可用性难题数据库的数据一致和持续可用对电子商务和互联网金融的意义不言而喻,而这些业务在使用数据库时,无论 MySQL 还是 Oracle,都会面临一个艰难的取舍,就是如何处理主备库之间的数据同步。对于传统的主备模式或者一主多备模式,我们都需要考虑的问题,就是与备机保持强同步还是异步复制。对于强同步模式,要求主机必须把 Redolog 同步到备机之后,才能应答客户端,一旦主备之间出现网络抖转载 2017-02-10 11:44:34 · 224 阅读 · 0 评论 -
微服务架构的基础框架选择:Spring Cloud还是Dubbo?
最近一段时间不论互联网还是传统行业,凡是涉及信息技术范畴的圈子几乎都在讨论 微服务架构 。近期也看到各大技术社区开始组织一些沙龙和论坛来分享Spring Cloud的相关实施经验,这对于最近正在整理Spring Cloud相关套件内容与实例应用的我而言,还是有不少激励的。目前,Spring Cloud在国内的知名度并不高,在前阵子的求职过程中,与一些互联网公司的架构师、技术VP或者CTO在交流时,有转载 2017-02-10 11:43:57 · 983 阅读 · 0 评论 -
分布式服务框架之服务化最佳实践
在服务化之前,业务通常都是本地API调用,本地方法调用性能损耗较小。服务化之后,服务提供者和消费者之间采用远程网络通信,增加了额外的性能损耗,业务调用的时延将增大,同时由于网络闪断等原因,分布式调用失败的风险也增大。如果服务框架没有足够的容错能力,业务失败率将会大幅提升。除了性能、可靠性等问题,跨节点的事务一致性问题、分布式调用带来的故障定界困难、海量微服务运维成本增加等也是分布式服务框架必须要解决转载 2017-02-10 11:43:22 · 238 阅读 · 0 评论 -
几款消息中间的调研
消息系统简介本次主要调研业界使用广泛的两款消息队列——RabbitMQ, Kafka, 以及阿里云的提供的两个服务, MNS和ONS.RabbitMQRabbitMQ 是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正因如此,它非常重量级,更适合于企业级的开发。同时实现了Broker构架,这意味着消息在发送给客户端时先在中心队列排队。转载 2017-02-10 11:42:51 · 769 阅读 · 0 评论 -
RocketMQ入门
能够保证严格的消息顺序提供丰富的消息拉取模式高效的订阅者水平扩展能力实时的消息订阅机制亿级消息堆积能力一.RocketMQ网络部署特点 (1)NameServer是一个几乎无状态的节点,可集群部署,节点之间无任何信息同步 (2)Broker部署相对复杂,Broker氛围Master与Slave,一个Master可以对应多个Slaver,但是一个Slaver只能对应一个Master,Mas转载 2017-02-10 11:42:14 · 265 阅读 · 0 评论 -
分布式事务:不过是在一致性、吞吐量和复杂度之间,做一个选择
这是一个开撕的话题,我经历过太多的关于分布式事务的需求:“有没有简单的方案,像使用数据库事务那样,解决分布式数据一致性的问题”。特别是微服务架构流行的今天,一次交易需要跨越多个“服务”、多个数据库来实现,传统的技术手段,已经无法应对和满足微服务情况下这些复杂的场景了。针对微服务下的交易业务如何保障数据一致性,本文尽量做到理论结合实践,将我们在实际产品中用到的分布式事务实现机制,和大家扒一扒,希望能帮转载 2017-02-10 11:41:20 · 193 阅读 · 0 评论 -
分布式系统事务一致性解决方案
开篇在OLTP系统领域,我们在很多业务场景下都会面临事务一致性方面的需求,例如最经典的Bob给Smith转账的案例。传统的企业开发,系统往往是以单体应用形式存在的,也没有横跨多个数据库。我们通常只需借助开发平台中特有数据访问技术和框架(例如Spring、JDBC、ADO.NET),结合关系型数据库自带的事务管理机制来实现事务性的需求。关系型数据库通常具有ACID特性:原子性(Atomicity)、一转载 2017-02-10 11:38:41 · 327 阅读 · 0 评论 -
深入理解 Spring 事务原理
一、事务的基本原理Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤进行:获取连接 Connection con = DriverManager.getConnection()开启事务con.setAutoCommit(true/false);执行CRUD提交事务/回滚事务 con.com转载 2017-02-10 11:38:08 · 207 阅读 · 0 评论 -
分布式事务之说说TCC事务
在当前如火如荼的互联网浪潮下,如何应对海量数据、高并发成为大家面临的普遍难题。广大IT公司从以往的集中式网站架构,纷纷转向分布式的网站架构,随之而来的就是进行数据库拆分和应用拆分,如何在跨数据库、跨应用保证数据操作和业务操作的一致性、原子性,又成为需要解决的新的问题。从分布式事务的需求来源来看:1、跨数据库数据库拆分(水平、垂直)带来的分布式事务->保证跨库操作的原子性基于单个JVM2、跨应用应用转载 2017-02-10 11:37:36 · 2192 阅读 · 0 评论 -
分布式系统的事务处理经典问题及模型
摘要:分布式系统需要在数据完整、一致性和性能间做平衡。本文系统介绍了处理分布式数据一致性的技术模型,如:Master-Slave,Master-Master,2PC/3PC,经典的将军问题,Paxos,以及Dynamo的NRW和VectorClock的模型。编者按:数据服务的高可用是所有企业都想拥有的,但是要想让数据有高可用性,就需要冗余数据写多份。写多份的问题会带来一致性的问题,而一致性的问题又转载 2017-02-10 11:46:54 · 247 阅读 · 0 评论