分布式系统理论与实践
文章平均质量分 93
本专栏介绍分布式的基本理论和相关技术,比如CAP和BASE理论,一致性算法,以及ZooKeeper这类的分布式协调服务。
在分布式实践方面,我们会讲到负载均衡,缓存,分布式事务,分布式锁,以及Dubbo这样的微服务,也包括消息队列,数据库中间件等等。
Java技术江湖
在下程序员黄小斜,前阿里Java工程师,4年码龄。 专注分享Java技术干货文,偶尔也吹水吐槽聊人生。
展开
-
一文梳理2021年常见消息中间件MQ与RabbitMQ面试题
文章目录为什么使用MQ?MQ的优点消息队列有什么优缺点?RabbitMQ有什么优缺点?你们公司生产环境用的是什么消息中间件?Kafka、ActiveMQ、RabbitMQ、RocketMQ 有什么优缺点?MQ 有哪些常见问题?如何解决这些问题?什么是RabbitMQ?rabbitmq 的使用场景RabbitMQ基本概念RabbitMQ的工作模式如何保证RabbitMQ消息的顺序性?消息如何分发?消息怎么路由?消息基于什么传输?如何保证消息不被重复消费?或者说,如何保证消息消费时的转载 2021-05-15 17:26:39 · 781 阅读 · 0 评论 -
搞懂分布式技术21:浅谈分布式消息技术 Kafka
浅谈分布式消息技术 Kafka 本文主要介绍了这几部分内容: 1基本介绍和架构概览 2kafka事务传输的特点 3kafka的消息存储格式:topic和parition 4副本(replication)策略:主从broker部署和partition备份,以及选主机制 5kafka消息分组,通过comsu...转载 2018-07-05 00:12:02 · 949 阅读 · 0 评论 -
搞懂分布式技术22:Kafka 安装及快速入门
Kafka 安装及快速入门2018-01-04×文章目录1.介绍 2.安装 kafka 3.功能验证: 3.1.1、启动 zk 3.2.2、启动Kafka 服务 3.3.3、创建 topic 3.4.4、产生消息 3.5.5、消费消息 3.6.6、查看描述 topics 信息 4.集群配置 4.1.单机多broker 集群配置 ...转载 2018-07-05 09:21:18 · 548 阅读 · 0 评论 -
搞懂分布式技术23:SpringBoot Kafka 整合使用
Spring Boot系列文章(一):SpringBoot Kafka 整合使用2018-01-05×文章目录1.前提 2.创建项目 2.1.项目整体架构: 3.Kafka 设置 3.1.启动 zk 3.2.启动 Kafka 服务 4.运行 5.关注我 6.最后前提假设你了解过 SpringBoot 和 Kafka。1、S...转载 2018-07-05 09:22:14 · 1699 阅读 · 0 评论 -
搞懂分布式技术24:基于Flume+Kafka+ Elasticsearch+Storm的海量日志实时分析平台:
0背景介绍随着机器个数的增加、各种服务、各种组件的扩容、开发人员的递增,日志的运维问题是日渐尖锐。通常,日志都是存储在服务运行的本地机器上,使用脚本来管理,一般非压缩日志保留最近三天,压缩保留最近1个月,其它直接删除或迁移到日志服务器上。运维会将这些日志mount到远程的日志服务器上,然后开发人员使用运维分配的账号登陆堡垒机器跳转到日志服务器上查看不同项目不同机器的日志。下图是日志服务...转载 2018-07-05 22:06:21 · 2733 阅读 · 1 评论 -
搞懂分布式技术25:初探大数据计算框架与平台
1.前言计算机的基本工作就是处理数据,包括磁盘文件中的数据,通过网络传输的数据流或数据包,数据库中的结构化数据等。随着互联网、物联网等技术得到越来越广泛的应用,数据规模不断增加,TB、PB量级成为常态,对数据的处理已无法由单台计算机完成,而只能由多台机器共同承担计算任务。而在分布式环境中进行大数据处理,除了与存储系统打交道外,还涉及计算任务的分工,计算负荷的分配,计算机之间的数据迁移等...转载 2018-07-11 17:23:17 · 1164 阅读 · 0 评论 -
搞懂分布式技术26:消息队列设计精要总结之基础篇
消息队列设计精要总结之基础篇消息队列概述消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发的Notify、MetaQ、RocketMQ等。本文不会一一介绍这些消息队...转载 2018-07-13 10:50:35 · 1593 阅读 · 2 评论 -
搞懂分布式系统27:消息队列设计精要总结之高级特性篇
消息队列设计精要总结之高级特性篇队列高级特性设计上面都是些消息队列基本功能的实现,下面来看一些关于消息队列特性相关的内容,不管可靠投递/消息丢失与重复以及事务乃至于性能,不是每个消息队列都会照顾到,所以要依照业务的需求,来仔细衡量各种特性实现的成本,利弊,最终做出最为合理的设计。可靠投递(最终一致性)这是个激动人心的话题,完全不丢消息,究竟可不可能?答案是,完全可能...转载 2018-07-13 16:01:26 · 1171 阅读 · 0 评论 -
搞懂分布式技术20:消息队列因何而生
消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发的Notify、MetaQ、RocketMQ等。本文不会一一介绍这些消息队列的所有特性,而是探讨一下自主开发设计一个消息队列时...转载 2018-06-24 16:31:42 · 1702 阅读 · 2 评论 -
分布式系统理论学习总结
分布式理论CAPCAP定理讲的是三个性。consistency数据一致性,availability可用性,partition tolerance分区容错性。三者只能选其中两者。为什么呢,看看这三个性质意味着什么吧。首先看看分区容错性,分区容错性指的是网络出现分区(丢包,断网,超时等情况都属于网络分区)时,整个服务仍然可用。由于网络分区在实际环境下一定存在,所以必须首先被考虑...原创 2018-07-04 17:53:11 · 3835 阅读 · 0 评论 -
分布式系统实践学习总结
分布式技术分布式数据和nosql分布式一般是指分布式部署的数据库。比如Hbase基于HDFS分布式部署,所以他是一个分布式数据库。当然MySQL也可以分布式部署,比如按照不同业务部署,或者把单表内容拆成多个表乃至多个库进行部署。一般MySQL的扩展方式有:1 主从复制 使用冗余保证可用2 读写分离 主库负责写从库负责读,分担压力,并且保证数据一致性和备份。3 分...原创 2018-07-04 17:53:44 · 4440 阅读 · 0 评论 -
分布式系统理论基础1: 一致性、2PC和3PC
分布式系统理论基础 - 一致性、2PC和3PC引言狭义的分布式系统指由网络连接的计算机系统,每个节点独立地承担计算或存储任务,节点间通过网络协同工作。广义的分布式系统是一个相对的概念,正如Leslie Lamport所说[1]:What is a distributed systeme.Distribution is in the eye of the beholder.To...转载 2018-06-23 23:29:38 · 978 阅读 · 0 评论 -
分布式系统理论基础开篇:从放弃到入门
分布式系统理论 - 从放弃到入门随承载用户数量的增加和容灾的需要,越来越多互联网后台系统从单机模式切换到分布式集群。回顾自己毕业五年来的工作内容,同样有这样的转变。毕业头两年负责维护运行在刀片机上的业务,在机房里拔插单板的日子是我逝去的青春。设备之间通过VCS组成冷备,但即使有双机软件保护,宕机、网络丢包等问题发生时业务仍会受影响。这样的系统架构下为保证SLA,有时候需要深入Linux系统内核或硬...转载 2018-06-23 23:34:01 · 1145 阅读 · 0 评论 -
分布式系统理论基础2 :CAP
分布式系统理论基础 - CAP2016-04-04 18:27 by bangerlee,12513阅读,0评论,收藏,编辑引言CAP是分布式系统、特别是分布式存储领域中被讨论最多的理论,“什么是CAP定理?”在Quora 分布式系统分类下排名 FAQ 的 No.1。CAP在程序员中也有较广的普及,它不仅仅是“C、A、P不能同时满足,最多只能3选2”,以下尝试综合各方观...转载 2018-06-23 23:42:43 · 799 阅读 · 0 评论 -
分布式系统理论基础4:Paxos
分布式系统理论进阶 - Paxos引言《分布式系统理论基础 - 一致性、2PC和3PC》一文介绍了一致性、达成一致性需要面临的各种问题以及2PC、3PC模型,Paxos协议在节点宕机恢复、消息无序或丢失、网络分化的场景下能保证决议的一致性,是被讨论最广泛的一致性协议。Paxos协议同时又以其“艰深晦涩”著称,下面结合Paxos Made Simple、The Part-Ti...转载 2018-06-24 00:05:57 · 1143 阅读 · 0 评论 -
分布式系统理论基础6:Raft、Zab
分布式系统理论进阶 - Raft、Zab引言《分布式系统理论进阶 - Paxos》介绍了一致性协议Paxos,今天我们来学习另外两个常见的一致性协议——Raft和Zab。通过与Paxos对比,了解Raft和Zab的核心思想、加深对一致性协议的认识。RaftPaxos偏向于理论、对如何应用到工程实践提及较少。理解的难度加上现实的骨感,在生产环境中基于Paxos实现一个正确的...转载 2018-06-24 00:21:48 · 1066 阅读 · 0 评论 -
分布式系统理论基础8:zookeeper分布式协调服务
分布式服务协调员zookeeper - 应用场景和监控zookeeper在分布式系统中作为协调员的角色,可应用于Leader选举、分布式锁、配置管理等服务的实现。以下我们从zookeeper供的API、应用场景和监控三方面学习和了解zookeeper(以下简称ZK)。ZK APIZK以Unix文件系统树结构的形式管理存储的数据,图示如下:其中每个树节点被称为znode...转载 2018-06-24 00:29:37 · 670 阅读 · 0 评论 -
分布式系统理论基础3: 时间、时钟和事件顺序
分布式系统理论基础 - 时间、时钟和事件顺序2016-05-03 10:58 by bangerlee, 7436 阅读, 3 评论, 收藏, 编辑 十六号…… 四月十六号。一九六零年四月十六号下午三点之前的一分钟你和我在一起,因为你我会记住这一分钟。从现在开始我们就是一分钟的朋友,这是事实,你改变不了,因为已经过去了。我明天会再来。 —— 《阿飞正传》 现实生活中时间是很重要的概念,时间可...转载 2018-06-24 10:19:48 · 1407 阅读 · 0 评论 -
分布式系统理论基础5:选举、多数派和租约
分布式系统理论基础 - 选举、多数派和租约选举(election)是分布式系统实践中常见的问题,通过打破节点间的对等关系,选得的leader(或叫master、coordinator)有助于实现事务原子性、提升决议效率。 多数派(quorum)的思路帮助我们在网络分化的情况下达成决议一致性,在leader选举的场景下帮助我们选出唯一leader。租约(lease)在一定期限内给予节点特定权利,...转载 2018-06-24 10:29:39 · 818 阅读 · 0 评论 -
分布式系统理论进阶7:Paxos变种和优化
分布式系统理论进阶 - Paxos变种和优化2016-12-18 20:38 by bangerlee, 2826 阅读, 0 评论, 收藏, 编辑引言《分布式系统理论进阶 - Paxos》中我们了解了Basic Paxos、Multi Paxos的基本原理,但如果想把Paxos应用于工程实践,了解基本原理还不够。 有很多基于Paxos的优化,在保证一致性协议正确(safety)的前提下,减少Pa...转载 2018-06-24 10:45:19 · 629 阅读 · 0 评论 -
搞懂分布式技术11:分布式session解决方案与一致性hash
session一致性架构设计实践原创:58沈剑架构师之路2017-05-18一、缘起什么是session?服务器为每个用户创建一个会话,存储用户的相关信息,以便多次请求能够定位到同一个上下文。Web开发中,web-server可以自动为同一个浏览器的访问用户自动创建session,提供数据存储功能。最常见的,会把用户的登录信息、用户信息存储在session中,...转载 2018-06-23 15:52:31 · 1967 阅读 · 0 评论 -
搞懂分布式技术12:分布式ID生成方案
分布式ID生成器 | 架构师之路转自:58沈剑架构师之路2017-06-25一、需求缘起几乎所有的业务系统,都有生成一个唯一记录标识的需求,例如: 消息标识:message-id 订单标识:order-id 帖子标识:tiezi-id 这个记录标识往往就是数据库中的主键,数据库上会建立聚集索引(cluster index),即在物理存储上以这个字段排...转载 2018-06-23 16:19:21 · 3986 阅读 · 0 评论 -
搞懂分布式技术13:缓存的那些事
缓存和它的那些淘汰算法们为什么我们需要缓存?很久很久以前,在还没有缓存的时候……用户经常是去请求一个对象,而这个对象是从数据库去取,然后,这个对象变得越来越大,这个用户每次的请求时间也越来越长了,这也把数据库弄得很痛苦,他无时不刻不在工作。所以,这个事情就把用户和数据库弄得很生气,接着就有可能发生下面两件事情:1.用户很烦,在抱怨,甚至不去用这个应用了(这是大多数情况下都会发生的...转载 2018-06-23 17:03:40 · 1593 阅读 · 0 评论 -
搞懂分布式技术14:Spring Boot使用注解集成Redis缓存
为了提高性能,减少数据库的压力,使用缓存是非常好的手段之一。本文,讲解 Spring Boot 如何集成缓存管理。Spring注解缓存Spring 3.1之后,引入了注解缓存技术,其本质上不是一个具体的缓存实现方案,而是一个对缓存使用的抽象,通过在既有代码中添加少量自定义的各种annotation,即能够达到使用缓存对象和缓存方法的返回对象的效果。Spring的缓存技术具备相当的灵活...原创 2018-06-23 17:43:43 · 1017 阅读 · 0 评论 -
搞懂分布式技术15:缓存更新的套路
缓存更新的套路看到好些人在写更新缓存数据代码时,先删除缓存,然后再更新数据库,而后续的操作会把数据再装载的缓存中。然而,这个是逻辑是错误的。试想,两个并发操作,一个是更新操作,另一个是查询操作,更新操作删除缓存后,查询操作没有命中缓存,先把老数据读出来后放到缓存中,然后更新操作更新了数据库。于是,在缓存中的数据还是老的数据,导致缓存中的数据是脏的,而且还一直这样脏下去了。我不知道为什么这么多人用的...转载 2018-06-23 18:02:51 · 2053 阅读 · 5 评论 -
搞懂分布式技术16:浅谈分布式锁的几种方案
前言随着互联网技术的不断发展,数据量的不断增加,业务逻辑日趋复杂,在这种背景下,传统的集中式系统已经无法满足我们的业务需求,分布式系统被应用在更多的场景,而在分布式系统中访问共享资源就需要一种互斥机制,来防止彼此之间的互相干扰,以保证一致性,在这种情况下,我们就需要用到分布式锁。分布式一致性问题首先我们先来看一个小例子:假设某商城有一个商品库存剩10个,用户A想要买6个,用户...原创 2018-06-23 21:49:24 · 1295 阅读 · 0 评论 -
搞懂分布式技术17:浅析分布式事务
众所周知,数据库能实现本地事务,也就是在同一个数据库中,你可以允许一组操作要么全都正确执行,要么全都不执行。这里特别强调了本地事务,也就是目前的数据库只能支持同一个数据库中的事务。但现在的系统往往采用微服务架构,业务系统拥有独立的数据库,因此就出现了跨多个数据库的事务需求,这种事务即为“分布式事务”。那么在目前数据库不支持跨库事务的情况下,我们应该如何实现分布式事务呢?本文首先会为大家梳理...原创 2018-06-24 11:38:56 · 1068 阅读 · 0 评论 -
搞懂分布式技术18:分布式事务常用解决方案
分布式事务的解决方案分布式事务的解决方案有如下几种:全局消息 基于可靠消息服务的分布式事务 TCC 最大努力通知方案1:全局事务(DTP模型)全局事务基于DTP模型实现。DTP是由X/Open组织提出的一种分布式事务模型——X/Open Distributed Transaction Processing Reference Model。它规定了要实现分布式事务,需要三种角色...转载 2018-06-24 12:42:05 · 3072 阅读 · 0 评论 -
搞懂分布式技术19:使用RocketMQ事务消息解决分布式事务
初步认识RocketMQ的核心模块rocketmq模块rocketmq-broker:接受生产者发来的消息并存储(通过调用rocketmq-store),消费者从这里取得消息。rocketmq-client:提供发送、接受消息的客户端API。rocketmq-namesrv:NameServer,类似于Zookeeper,这里保存着消息的TopicName,...转载 2018-06-24 15:01:20 · 6288 阅读 · 0 评论 -
搞懂分布式技术1:分布式系统的一些基本概念
本文较为粗略地讲述了CAP与BASE理论,以及分布式系统需要解决的一些问题,更加系统的理论可以参考后面的分布式系统理论专题文章。更加详细的实践内容也可以参考本专题的剩余文章1、分布式小明的公司又3个系统:系统A,系统B和系统C,这三个系统所做的业务不同,被部署在3个独立的机器上运行,他们之间互相调用(当然是跨域网络的),通力合作完成公司的业务流程。将不同的业...原创 2018-06-19 21:30:29 · 5421 阅读 · 0 评论 -
搞懂分布式技术开篇:浅析分布式系统的架构及常用方案
作者:wadehan,腾讯后台开发高级工程师商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处。浅析分布式系统WeTest导读我们常常会听说,某个互联网应用的服务器端系统多么牛逼,比如QQ、微信、淘宝。那么,一个互联网应用的服务器端系统,到底牛逼在什么地方?为什么海量的用户访问,会让一个服务器端系统变得更复杂?本文就是想从最基本的地方开始,探寻服务器...转载 2018-06-19 21:55:00 · 13777 阅读 · 4 评论 -
搞懂分布式技术3:初探分布式协调服务zookeeper
分布式核心组件:Zookeeper有什么用?本文是什么是Zookeeper?的笔记,从使用者的角度描述了Zookeeper有什么用处,至于它内部是如何工作解决在线服务列表同步问题现在公司的IT系统早已经从单机转向了分布式,然而分布式系统带来了很多的问题。比如说现在公司开发了一个RPC框架来给各组开发人员使用,为了支持高并发,OrderService部署了4份,也就意味着...转载 2018-06-19 22:50:50 · 1070 阅读 · 0 评论 -
搞懂分布式技术2:分布式一致性协议与Paxos,Raft算法
本文较为粗略地讲述了一致性协议与两种一致性算法,更加系统的理论可以参考后面的分布式系统理论专题文章。2PC由于BASE理论需要在一致性和可用性方面做出权衡,因此涌现了很多关于一致性的算法和协议。其中比较著名的有二阶提交协议(2 Phase Commitment Protocol),三阶提交协议(3 Phase Commitment Protocol)和Paxos算法。...原创 2018-06-21 10:23:05 · 1861 阅读 · 0 评论 -
搞懂分布式技术4:ZAB协议概述与选主流程详解
ZAB协议ZAB协议是专门为zookeeper实现分布式协调功能而设计。zookeeper主要是根据ZAB协议是实现分布式系统数据一致性。 zookeeper根据ZAB协议建立了主备模型完成zookeeper集群中数据的同步。这里所说的主备系统架构模型是指,在zookeeper集群中,只有一台leader负责处理外部客户端的事物请求(或写操作),然后leader服务器将客户端的写...转载 2018-06-21 11:07:15 · 3501 阅读 · 0 评论 -
搞懂分布式技术5:Zookeeper的配置与集群管理实战
4.1 配置文件ZooKeeper安装好之后,在安装目录的conf文件夹下可以找到一个名为“zoo_sample.cfg”的文件,是ZooKeeper配置文件的模板。ZooKeeper启动时,会默认加载“conf/zoo.cfg”作为配置文件,所以需要将“zoo_sample.cfg”复制一份,命名为“zoo.cfg”,然后根据需要设定里面的配置项。配置项很简单,说明如下:tick...原创 2018-06-21 15:22:57 · 1116 阅读 · 0 评论 -
搞懂分布式技术6:Zookeeper典型应用场景及实践
ZooKeeper 典型的应用场景Zookeeper 从设计模式角度来看,是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper 就将负责通知已经在 Zookeeper 上注册的那些观察者做出相应的反应,从而实现集群中类似 Master/Slave 管理模式,关于 Zo...原创 2018-06-21 16:20:28 · 1223 阅读 · 0 评论 -
搞懂分布式技术7:负载均衡概念与主流方案
负载均衡的原理原创:刘欣码农翻身4月23日这是1998年一个普通的上午。一上班,老板就把张大胖叫进了办公室,一边舒服地喝茶一边发难:“大胖啊,我们公司开发的这个网站,现在怎么越来越慢了? ”还好张大胖也注意到了这个问题,他早有准备,一脸无奈地说: “唉,我昨天检查了一下系统,现在的访问量已经越来越大了,无论是CPU,还是硬盘、内存都不堪重负了,高峰期的响应速度越来越慢。...原创 2018-06-22 15:37:10 · 1614 阅读 · 0 评论 -
搞懂分布式技术8:负载均衡原理剖析
负载均衡的重要性无需多说,今天带来:负载均衡原理的解析。开头先理解一下所谓的“均衡”。不能狭义地理解为分配给所有实际服务器一样多的工作量,因为多台服务器的承载能力各不相同,这可能体现在硬件配置、网络带宽的差异,也可能因为某台服务器身兼多职,我们所说的“均衡”,也就是希望所有服务器都不要过载,并且能够最大程序地发挥作用。一、http重定向当http代理(比如浏览器)向web服务器请求...转载 2018-06-22 16:07:02 · 752 阅读 · 0 评论 -
搞懂分布式技术9:Nginx负载均衡原理与实践
Nginx负载均衡与反向代理—《亿级流量网站架构核心技术》原创:张开涛开涛的博客2017-03-24本篇摘自《亿级流量网站架构核心技术》第二章 Nginx负载均衡与反向代理 部分内容。当我们的应用单实例不能支撑用户请求时,此时就需要扩容,从一台服务器扩容到两台、几十台、几百台。然而,用户访问时是通过如的方式访问,在请求时,浏览器首先会查询DNS服务器获取对应的IP,然后通过此IP...转载 2018-06-22 17:00:52 · 3470 阅读 · 0 评论 -
搞懂分布式技术10:LVS实现负载均衡的原理与实践
文末对一些概念进行了讲解,比如vip,loopback回环地址,以及iptables做了一些介绍。可以参见文末内容。浅析负载均衡及LVS实现原创:fireflyc写程序的康德2017-09-19负载均衡负载均衡(Load Balance,缩写LB)是一种网络技术,它在多个备选资源中做资源分配,以达到选择最优。这里有三个关键字: 网络技术,LB要解决的问...转载 2018-06-22 21:25:19 · 2383 阅读 · 0 评论