![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分布式
文章平均质量分 57
zhifeng687
这个作者很懒,什么都没留下…
展开
-
一致性哈希思维导图
参考:理解一致性哈希算法原创 2022-04-07 21:00:16 · 251 阅读 · 0 评论 -
redis分布式锁实现分布式系统定时任务单个执行
问题描述将带有定时任务的项目部署在单台测试环境上,完全没问题。生产上是两台集群服务器,项目部署上去发现定时任务的模块同时在两台机器上各执行了一遍,这将会导致其他意外的发生。解决方案----redis分布式锁使用redis分布式锁,为定时任务唯一指定的key加锁,并设置锁超时时间。当触发定时任务时,一台服务的任务进入切面,通过setNX(key,value)方法为唯一的key加锁,如果当前key不存在,将放入缓存,并返回true,通过expire(key,second)设置锁超时时间,结束后跳出执转载 2021-01-29 17:04:08 · 1570 阅读 · 0 评论 -
保证最终一致性的模式
在大规模、高并发服务化系统中,一个功能被拆分成多个具有单一功能的子功能,一个流程会有多个单一功能的服务组合实现,如果使用两阶段提交协议和三阶段提交协议,则确实能解决系统间的一致性问题。除了这两个协议的自身问题,其实现也比较复杂、成本比较高,最重要的是性能不好,相比来看,TCC 协议更简单且更容易实现,但是 TCC 协议由于每个事务都需要执行 Try,再执行 Confirm,略显臃肿,因此,现实系统的底线是仅仅需要达到最终一致性,而不需要实现专业的、复杂的一致性协议。实现最终一致性有一些非常有效、简单的模式,转载 2016-04-07 09:26:28 · 4727 阅读 · 0 评论 -
kafka的CAP理论
一个框架,要么是CP,要么是AP。2、要想实现强一致性,leader接受到数据之后,就必须等到所有replica同步过去之后才能响应procuder ack。如果replication同步失败,则leader无法响应ack,这就没法实现可用性(A)。转载 2016-04-27 14:39:42 · 641 阅读 · 0 评论 -
Zookeeper的CP特性
CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼分布式系统的CAP理论:理论首先把分布式系统中的三个特性进行了如下归纳:一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)分区容错性(P):以实际转载 2016-08-23 14:33:42 · 56579 阅读 · 1 评论 -
redis分布式锁的实现(setNx命令和Lua脚本)
前言本篇文章主要介绍基于Redis的分布式锁实现到底是怎么一回事,其中参考了许多大佬写的文章,算是对分布式锁做一个总结分布式锁概览在多线程的环境下,为了保证一个代码块在同一时间只能由一个线程访问,Java中我们一般可以使用synchronized语法和ReetrantLock去保证,这实际上是本地锁的方式。但是现在公司都是流行分布式架构,在分布式环境下,如何保证不同节点的线程同步执行呢?实际上,对于分布式场景,我们可以使用分布式锁,它是控制分布式系统之间互斥访问共享资源的一种方式。比如说转载 2016-05-27 13:31:06 · 83746 阅读 · 0 评论 -
Redisson 分布式锁的watch dog自动续期机制
背景据Redisson官网的介绍,Redisson是一个Java Redis客户端,与Spring 提供给我们的 RedisTemplate 工具没有本质的区别,可以把它看做是一个功能更强大的客户端(虽然官网上声称Redisson不只是一个Java Redis客户端)我想我们用到 Redisson 最多的场景一定是分布式锁,一个基础的分布式锁具有三个特性:互斥:在分布式高并发的条件下,需要保证,同一时刻只能有一个线程获得锁,这是最最基本的一点。 防止死锁:在分布式高并发的条件下,比如有个线程获转载 2018-03-21 20:13:57 · 29707 阅读 · 7 评论 -
分布式事务思维导图
原创 2018-03-21 20:16:40 · 4950 阅读 · 0 评论 -
KAFKA:百万级吞吐量原理
转自:https://blog.csdn.net/dshf_1/article/details/81044990kafka初衷 企业统一,高通量,低延迟。Kafka 是一种高吞吐量的分布式发布订阅消息系统,有如下特性:通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。 高吞吐量:即使是非常普通的硬件Kafka也可以支持每秒数百万...转载 2018-04-17 12:49:47 · 4582 阅读 · 0 评论 -
分布式选举算法-- Bully、Raft和ZAB
集群一般是由两个或两个以上的服务器组建而成,每个服务器都是一个节点。数据库集群、管理集群...数据库集群提供了读写功能,管理集群提供了管理、故障恢复等功能。对于一个集群来说,多个节点的协同和管理是非常重要的。而主节点则实现了协同和管理,主节点的存在,就可以保证其他节点的有序运行,以及数据库集群中的写入数据在每个节点上的一致性。这里的一致性是指,数据在每个集群节点中都是一样的,不存在不同的情况。分布式选举的作用就是选出一个主节点,由它来协调和管理其他节点,以保证集群有序运行和节点间数据的一致性。.转载 2018-04-17 17:52:02 · 1253 阅读 · 0 评论 -
Zookeeper的ZAB算法选主流程
5.4 验证:leader选举过程Leader选举是zookeeper最重要的技术之⼀,也是保证分布式数据⼀致性的关键所在。当Zookeeper集群中的⼀台服务器出现以下两种情况之⼀时,需要进⼊Leader选举。服务器初始化启动 服务器运⾏期间⽆法和Leader保持连接下⾯就两种情况进⾏分析讲解。5.4.1 服务器启动时期的Leader选举若进⾏Leader选举,则⾄少需要两台机器,这⾥选取3台机器组成的服务器集群为例。在集群初始化阶段,当有⼀台服务器Server1启动时,其单独⽆法转载 2018-04-18 10:47:18 · 413 阅读 · 0 评论 -
cdh5安装报错解决
1、Exhausted available authentication methods ubuntu未激活root用户,或者激活root用户后未允许可远程登录root 用户参考stackoverflow:Cloudera Manager Failed to authenticate : Exhausted available authentication methods ...原创 2018-04-22 23:56:07 · 7365 阅读 · 1 评论 -
curator2.1源码分析之LeaderLatch封装ZK主从选举
概述ZK主从选举的原理是:一组线程/进程竞争在zk的某个路径上创建临时节点,创建成功的则为主节点,其余的为从节点。LeaderLatch#start()方法判断连接是否已经建立,在连接建立后执行internalStart()方法。/** * Add this instance to the leadership election and attempt to acqu...原创 2018-05-09 15:31:00 · 770 阅读 · 0 评论 -
Apache Kylin在美团点评的应用
美团点评的OLAP需求大体分为两类:即席查询:指用户通过手写SQL来完成一些临时的数据分析需求。这类需求的SQL形式多变、逻辑复杂,对响应时间没有严格的要求。固化查询:指对一些固化下来的取数、看数的需求,通过数据产品的形式提供给用户,从而提高数据分析和运营的效率。这类需求的SQL有固定的模式,对响应时间有比较高的要求 。我们针对即席查询提供了Hive和Presto两个引擎。而固化查询由于需要秒级响...转载 2018-04-25 15:45:05 · 1669 阅读 · 0 评论 -
zookeeper实现服务注册的原理
服务提供者在启动的时候,会在ZooKeeper上注册服务。所谓注册服务,其实就是在ZooKeeper的/dubbo/com.foo.BarService/providers节点下创建一个子节点,并写入自己的URL地址,这就代表了com.foo.BarService这个服务的一个提供者。转载 2018-06-26 16:58:02 · 5617 阅读 · 0 评论 -
集中式 vs. 分布式系统架构
一、前言 随着计算机系统规模变得越来越大,将所有业务单元集中部署在一个或者若干个大型机 上的体系结构物,已经越来越不能满足当今计算机系统,尤其是大型互联网系统的快速发展,各种灵活多变的系统架构模型层出不穷。同时,随着微型计算机的出 现,越来越多廉价的PC机成为了各大IT企业架构的首选,分布式的处理方式越来越受到业界的青睐----计算机系统正在经历一场前所未有的从集中式到分布 ...转载 2015-06-28 16:03:47 · 646 阅读 · 0 评论 -
2pc和3pc的优缺点比较(同步阻塞、单点故障、数据不一致)
1.2pc2pc(Two Phase Commitment Protocol)当一个事务操作需要跨越多个分布式节点的时候,为了保持事务处理的 ACID特性,就需要引入一个“协调者”(TM)来统一调度所有分布式节点的执行逻辑,这些被调度的分布式节点被称为 AP。TM 负责调度 AP 的行为,并最终决定这些 AP 是否要把事务真正进行提交;因为整个事务是分为两个阶段提交,所以叫 2pc二阶段提...转载 2016-07-29 17:33:00 · 5223 阅读 · 0 评论 -
分布式系统中的幂等性
现如今我们的系统大多拆分为分布式SOA,或者微服务,一套系统中包含了多个子系统服务,而一个子系统服务往往会去调用另一个服务,而服务调用服务无非就是使用RPC通信或者restful,既然是通信,那么就有可能再服务器处理完毕后返回结果的时候挂掉,这个时候用户端发现很久没有反应,那么就会多次点击按钮,这样请求有多次,那么处理数据的结果是否要统一呢?那是肯定的!尤其再支付场景。 幂等性:就是用户对于同一操...转载 2017-02-04 23:24:14 · 649 阅读 · 0 评论 -
Kafka的通讯协议
Kafka的Producer、Broker和Consumer之间采用的是一套自行设计的基于TCP层的协议。Kafka的这套协议完全是为了Kafka自身的业务需求而定制的,而非要实现一套类似于Protocol Buffer的通用协议。本文将介绍这套协议的相关内容。基本数据类型定长数据类型:int8,int16,int32和int64,对应到Java中就是byte, short, int和long。变...转载 2016-10-05 21:02:53 · 571 阅读 · 0 评论 -
kafka 架构概述
问题导读1.Kafka独特设计在什么地方?2.Kafka如何搭建及创建topic、发送消息、消费消息?3.如何书写Kafka程序?4.数据传输的事务定义有哪三种?5.Kafka判断一个节点是否活着有哪两个条件?6.producer是否直接将数据发送到broker的leader(主节点)?7.Kafa consumer是否可以消费指定分区消息?8.Kafka消息是采用Pull模式,还是Push模式?...转载 2016-10-05 21:09:09 · 883 阅读 · 0 评论 -
KafkaController
Kafka集群中的其中一个Broker会被选举为Controller,主要负责Partition管理和副本状态管理,也会执行类似于重分配Partition之类的管理任务。如果当前的Controller失败,会从其他正常的Broker中重新选举Controller。进入KafkaController.scala文件看到如下代码:class KafkaController(val config : K...转载 2017-02-06 18:10:05 · 327 阅读 · 0 评论 -
Kafka Streams架构概述
9.1 概述Kafka Streams是一个客户端程序库,用于处理和分析存储在Kafka中的数据,并将得到的数据写回Kafka或发送到外部系统。Kafka Stream基于一个重要的流处理概念。如正确的区分事件时间和处理时间,窗口支持,以及简单而有效的应用程序状态管理。Kafka Streams的入口门槛很低: 你可以快速的编写和在单台机器上运行一个小规模的概念证明(proof-of-concep...转载 2017-01-31 21:39:13 · 855 阅读 · 0 评论 -
kafka消息格式——Commit Log
摘要Kafka作为一个消息中间件系统,面临的首要问题就是消息如何持久化,如何方便地进行读写和解析。本文将就Kafka的消息存储问题开一个头,后续将会对重要的代码部分一一讲解。Kafka的消息概念,首先我们在此谈论的不是网络传递中的消息,而更多偏向于记录的意思,也就是消费者和生产者所在意的实际对象。消息是Kafka造作的最小单元,并不允许更改消息的实际内容,一条消息本质上是一个键值可缺省的键值对。消...转载 2017-01-23 04:04:35 · 2210 阅读 · 0 评论 -
kafkaProducer
kafkaProducer概述kafkaProducer是由一池Buffer space(即缓冲池)组成的,buffer space会保持还没提交到server的record,同时background I/O线程把这些record转换成request并传输到cluster中。使用后如果没有关闭producer会导致resource溢出。kafkaProducer的send()方法是异步的,当调用这...翻译 2017-01-19 02:29:43 · 607 阅读 · 0 评论 -
Kafka Producer异步发送的流程
Producer API入门 ProducerRecord 说明异步发送流程 2.1 用户线程调用send将record压缩到BufferPool中 2.2 发送调度Producer设计说明Producer Configuration1. Producer API入门:KafkaProducer是一个发送record到Kafka Cluster的客户端API。这个类线程安全的。在...转载 2017-01-13 12:53:42 · 9574 阅读 · 0 评论 -
Transactional Messaging in Kafka
译自confluence官网: Transactional Messaging in Kafkakafka提供了at-least-once的消息保证。duplicate会出现因为producer重试或者consumer在失败后重启。去提供exactly-once消息语义的一个方法是实现一个idempotent producer。在idempotent producer(传送门)的建议中已经详细介绍...翻译 2017-02-23 22:37:30 · 2100 阅读 · 0 评论 -
Transactions in Kafka
本文翻译Confluent官网,原文地址:https://www.confluent.io/blog/transactions-apache-kafka/ 在之前的博客文章(见尾部链接)中,我们介绍了ApacheKafka的exactly once语义,介绍了各种消息传输语义,producer的幂等特性,事务和Kafka Stream的exactly once处理语义。现在我们将从上篇文章结尾的地...翻译 2017-01-18 15:13:56 · 1880 阅读 · 0 评论 -
Kafka文件存储机制
1.前言一个商业化消息队列的性能好坏,其文件存储机制设计是衡量一个消息队列服务技术水平和最关键指标之一。下面将从Kafka文件存储机制和物理结构角度,分析Kafka是如何实现高效文件存储,及实际应用效果。2.Kafka文件存储机制Kafka部分名词解释如下:Broker:消息中间件处理结点,一个Kafka节点就是一个broker,多个broker可以组成一个Kafka集群。Topic:一类消息,例...转载 2017-01-24 00:51:50 · 245 阅读 · 0 评论 -
kafka日志精简和备份机制
Kafka基本设计Kafka既不是队列平台(消息由consumer pool中的某一个consumer接收),也不是发布订阅平台(消息被发布给每个consumer)。在一个基本的结构中,producer发布消息到Kafka的topic中(message queue的同义词)。topic也可以看做是消息类别。topic是由作为Kafka server的broker创建的。如果需要,broker也会存...转载 2017-02-08 14:17:11 · 1732 阅读 · 0 评论 -
kafka的offset manage
https://cwiki.apache.org/confluence/display/KAFKA/Inbuilt+Consumer+Offset+Management介绍实现内置的消费者offset管理功能有两种方式:1.让消费者创建一个内置的producer示例,并且像生产消息一样发送offsets2.让消费者使用offset commit请求API来提交offsets. 我们让brokers...翻译 2017-02-14 17:10:28 · 763 阅读 · 0 评论 -
分布式队列编程:从模型、实战到优化
作为一种基础的抽象数据结构,队列被广泛应用在各类编程中。大数据时代对跨进程、跨机器的通讯提出了更高的要求,和以往相比,分布式队列编程的运用几乎已无处不在。但是,这种常见的基础性的事物往往容易被忽视,使用者往往会忽视两点:使用分布式队列的时候,没有意识到它是队列。有具体需求的时候,忘记了分布式队列的存在。本文分为三部分,包括模型篇、实战篇和优化篇,主要剖析了分布式队列编程模型的需求来源、定义、结构以...转载 2016-06-24 12:47:05 · 843 阅读 · 0 评论 -
Apache Kafka内核深度剖析
Kafka为什么快快是一个相对概念,没有对比就没有伤害,因此通常我们说Kafka是相对于我们常见的activemq,rabbitmq这类会发生IO,并且主要依托于IO来做信息传递的消息队列,像zeromq这种基本纯粹依靠内存做信息流传递的消息队列,当然会更快,但是此类消息队列只有特殊场景下会使用,不在对比之列。因此当我们说Kakfa快的时候,通常是基于以下场景:吞吐量:当我们需要每秒处理几十万上百万message的时候,相对其他MQ,Kafka处理的更快。 高并发:当具有百万以及千万的cons转载 2016-11-08 10:26:33 · 902 阅读 · 0 评论 -
分布式系统的数据结构
常用的数据结构包括:数组,队列,堆栈,链表,树(平衡二叉树,B树,Trie树,堆),哈希表,图,后缀数组,等等。其中,堆,图结构,Trie树及后缀数组解决特定问题,其它数据结构解决通用的查找,更新,删除操作。 查找,更新和删除操作一般是O(1),O(logN)或者O(N),通用的数据结果大致可分为如下三种: 1, 极端型;某些操作的算法复杂度为O(1),另外一些算法复杂度为O(N),比如有序链...转载 2016-06-24 17:05:55 · 592 阅读 · 0 评论 -
ZooKeeper原理及使用
ZooKeeper是Hadoop Ecosystem中非常重要的组件,它的主要功能是为分布式系统提供一致性协调(Coordination)服务,与之对应的Google的类似服务叫Chubby。今天这篇文章分为三个部分来介绍ZooKeeper,第一部分介绍ZooKeeper的基本原理,第二部分介绍ZooKeeper提供的Client API的使用,第三部分介绍一些ZooKeeper典型的应用场景。Z...转载 2016-06-23 11:27:59 · 553 阅读 · 0 评论 -
Zookeeper应用场景之分布式屏障Barrier
Barrier就是栅栏或者屏障,适用于这样的业务场景:当有些操作需要并行执行,但后续操作又需要串行执行,此时必须等待所有并行执行的线程全部结束,才开始串行,于是就需要一个屏障,来控制所有线程同时开始,并等待所有线程全部结束。下面放上一个简陋的图以便理解。要解决的问题如下:1.如何控制所有线程同时开始?所有的线程启动时在zookeeper节点/barrier下插入顺序临时节点,然后检查/barrie...转载 2016-06-24 14:30:08 · 806 阅读 · 0 评论 -
分布式事务之两阶段提交(2pc)
本文转发自技术世界,原文链接 分布式事务(一)两阶段提交及JTA分布式事务分布式事务简介分布式事务是指会涉及到操作多个数据库(或者提供事务语义的系统,如JMS)的事务。其实就是将对同一数据库事务的概念扩大到了对多个数据库的事务。目的是为了保证分布式系统中事务操作的原子性。分布式事务处理的关键是必须有一种方法可以知道事务在任何地方所做的所有动作,提交或回滚事务的决定必须产生统一的结果(全部提交或全部...转载 2016-07-28 15:10:16 · 1136 阅读 · 0 评论 -
kafka Transaction coordinator
本文转发自技术世界,原文链接 Kafka设计解析(八)- Exactly Once语义与事务机制原理 本文所有Kafka原理性的描述除特殊说明外均基于Kafka 1.0.0版本。为什么要提供事务机制Kafka事务机制的实现主要是为了支持Exactly Once即正好一次语义操作的原子性有状态操作的可恢复性Exactly Once《Kafka背景及架构介绍》一文中有说明Kafka在0.11.0.0...转载 2017-02-08 22:14:00 · 3287 阅读 · 1 评论