![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分布式系统
文章平均质量分 83
kobejayandy
十多年互联网产品研发经验,历经华为、腾讯、字节跳动等公司,主要从事后端技术研发及技术管理工作(andyjaykobe)
展开
-
系统架构战略体系
系统架构战略体系分布式系统理念FLPCAPBASE分布式共识算法PaxosRaftGossip架构设计方法论架构设计方法论分而治之人类解决复杂问题的根本方法:分而治之,把复杂问题拆解成若干足够小的问题关注点分离好的架构必须使每个关注点相互分离,也就是说系统中的一个部分发生了变化,不会影响其他部分。即使需要改变,也能够清晰地识别出那些部分需要改变。如果需要扩展架构,影响将会最小化,已经可以工作的每个部分都将继续工作。架构设计思维架构设原创 2022-04-24 00:32:00 · 495 阅读 · 0 评论 -
字节后台知识体系
字节跳动后台知识体系原创 2020-11-29 01:05:25 · 837 阅读 · 0 评论 -
关于如何实现一个TCC分布式事务框架的一点思考
一个TCC事务框架需要解决的当然是分布式事务的管理。关于TCC事务机制的介绍,可以参考TCC事务机制简介。TCC事务模型虽然说起来简单,然而要基于TCC实现一个通用的分布式事务框架,却比它看上去要复杂的多,不只是简单的调用一下Confirm/Cancel业务就可以了的。本文将以Spring容器为例,试图分析一下,实现一个通用的TCC分布式事务框架需要注意的一些问题。一、TCC全局事务必须...转载 2019-10-20 16:32:05 · 290 阅读 · 0 评论 -
微服务架构的基础框架选择:Spring Cloud还是Dubbo?
最近一段时间不论互联网还是传统行业,凡是涉及信息技术范畴的圈子几乎都在讨论 微服务架构 。近期也看到各大技术社区开始组织一些沙龙和论坛来分享Spring Cloud的相关实施经验,这对于最近正在整理Spring Cloud相关套件内容与实例应用的我而言,还是有不少激励的。目前,Spring Cloud在国内的知名度并不高,在前阵子的求职过程中,与一些互联网公司的架构师、技术VP或者CTO在转载 2016-07-31 13:50:44 · 91416 阅读 · 12 评论 -
ZooKeeper架构设计及其应用要点
ZooKeeper是一个开源的分布式服务框架,它是Apache Hadoop项目的一个子项目,主要用来解决分布式应用场景中存在的一些问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置管理等,它支持Standalone模式和分布式模式,在分布式模式下,能够为分布式应用提供高性能和可靠地协调服务,而且使用ZooKeeper可以大大简化分布式协调服务的实现,为开发分布式应用极大地降低了成本。转载 2016-02-28 16:09:34 · 911 阅读 · 0 评论 -
架构师需要了解的Paxos原理、历程及实战
数据库高可用性难题数据库的数据一致和持续可用对电子商务和互联网金融的意义不言而喻,而这些业务在使用数据库时,无论 MySQL 还是 Oracle,都会面临一个艰难的取舍,就是如何处理主备库之间的数据同步。对于传统的主备模式或者一主多备模式,我们都需要考虑的问题,就是与备机保持强同步还是异步复制。对于强同步模式,要求主机必须把 Redolog 同步到备机之后,才能应答客户端,转载 2016-03-07 13:55:42 · 3895 阅读 · 0 评论 -
开源分布式NoSQL数据库系统——Cassandra
Apache Cassandra(社区内一般简称为C*)是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集Google BigTable的数据模型与Amazon Dynamo的完全分布式架构于一身。Facebook于2008将 Cassandra 开源,此后,由于Cassandra良好的可扩展性和性能,被Digg、Twitter、Hulu、Ne转载 2016-03-06 18:36:50 · 1981 阅读 · 0 评论 -
Redis与Memcached的区别
传统MySQL+ Memcached架构遇到的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题: 1.MySQL需要不断进行拆库拆表,Memcached也需不断跟着扩容,扩容和维护工作占据大量开发时间。 2.Mem转载 2016-02-18 16:49:56 · 806 阅读 · 0 评论 -
持续可用与CAP理论 – 一个系统开发者的观点
持续可用 本文主要针对金融数据库,认为金融数据库的持续可用包含两点:一个是强一致性;另外一个是高可用性。 数据库系统必须是强一致性的系统,这是因为数据库系统有事务ACID的基本要求,而弱一致系统无法做到。业内也有一些流行的NOSQL系统,例如各种类Dynamo系统,如开源的Cassandra,对同一个最小数据单位(同一行数据)允许多台服务器同时写入,虽然采用NWR机制处理冲突,但是转载 2016-03-03 13:13:37 · 997 阅读 · 0 评论 -
分布式系统的事务处理经典问题及模型
摘要:分布式系统需要在数据完整、一致性和性能间做平衡。本文系统介绍了处理分布式数据一致性的技术模型,如:Master-Slave,Master-Master,2PC/3PC,经典的将军问题,Paxos,以及Dynamo的NRW和VectorClock的模型。编者按:数据服务的高可用是所有企业都想拥有的,但是要想让数据有高可用性,就需要冗余数据写多份。写多份的问题会带来一致性的问题,而一转载 2016-03-03 11:19:41 · 1392 阅读 · 0 评论 -
高一致性分布式数据库系统之实现
1 背景 2 问题一:数据一致性 3 问题二:分区可用性 4 问题三:性能 5 总结 6 问题四:一个极端场景的分析 背景 最近,@阿里正祥(阳老师)发了上面的一条微博,谁知一石激起转载 2016-03-02 19:51:56 · 3813 阅读 · 0 评论 -
从系统角度看分布式系统的挑战
在《分布式计算:原理、算法与系统》书中,1.8.1小节综述了设计和构建分布式系统时需要仔细考虑的10个方面,这10个方面也可以作为观察一个分布式系统的10个角度。设计和构建分布式系统时,以下几个方面务必仔细考虑。1)通信。这个任务包括设计适当的网络间进程通信机制。一些样例机制:远程过程调用(RPC),远程对象调用(ROI),面向流的通信和面向消息的通信。2)进程转载 2015-11-02 20:07:39 · 1749 阅读 · 0 评论 -
分布式系统之设计
敬请期待。。。转载 2014-03-31 23:36:57 · 627 阅读 · 0 评论 -
分布式系统之架构
敬请期待。。。转载 2014-03-31 23:36:21 · 678 阅读 · 0 评论 -
分布式系统之部署
敬请期待。。。转载 2014-03-31 23:37:32 · 871 阅读 · 0 评论 -
ZooKeeper监控
在公司内部,有不少应用已经强依赖zookeeper,zookeeper的工作状态直接影响它们的正常工作。目前开源世界中暂没有一个比较成熟的zookeeper-monitor, 于是开始zookeeper监控这块工作。目前zookeeper-monitor能做哪些事情,讲到这个,首先来看看哪些因素对zookeeper正常工作比较大的影响:用于zookeeper写日志的目录要有足够大小,并转载 2015-07-02 22:29:33 · 1523 阅读 · 0 评论 -
分布式服务框架之服务化最佳实践
在服务化之前,业务通常都是本地API调用,本地方法调用性能损耗较小。服务化之后,服务提供者和消费者之间采用远程网络通信,增加了额外的性能损耗,业务调用的时延将增大,同时由于网络闪断等原因,分布式调用失败的风险也增大。如果服务框架没有足够的容错能力,业务失败率将会大幅提升。除了性能、可靠性等问题,跨节点的事务一致性问题、分布式调用带来的故障定界困难、海量微服务运维成本增加等也是分布式服务框架转载 2016-08-08 20:29:08 · 9558 阅读 · 0 评论 -
几款消息中间的调研
消息系统简介本次主要调研业界使用广泛的两款消息队列——RabbitMQ, Kafka, 以及阿里云的提供的两个服务, MNS和ONS.RabbitMQRabbitMQ 是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正因如此,它非常重量级,更适合于企业级的开发。同时实现了Broker构架,这意味着消息在发送给客户端转载 2016-09-17 23:07:33 · 2899 阅读 · 0 评论 -
RocketMQ入门
能够保证严格的消息顺序提供丰富的消息拉取模式高效的订阅者水平扩展能力实时的消息订阅机制亿级消息堆积能力一.RocketMQ网络部署特点 (1)NameServer是一个几乎无状态的节点,可集群部署,节点之间无任何信息同步 (2)Broker部署相对复杂,Broker氛围Master与Slave,一个Master可以对应多个Slaver,但是一个Slave转载 2016-10-16 16:49:12 · 1372 阅读 · 0 评论 -
十分钟入门RocketMQ
本文首先引出消息中间件通常需要解决哪些问题,在解决这些问题当中会遇到什么困难,Apache RocketMQ作为阿里开源的一款高性能、高吞吐量的分布式消息中间件否可以解决,规范中如何定义这些问题。然后本文将介绍RocketMQ的架构设计,以期让读者快速了解RocketMQ。消息中间件需要解决哪些问题?Publish/Subscribe发布订阅是消息中间件的最基本功能,也是相对于传统...转载 2019-08-27 13:52:48 · 340 阅读 · 0 评论 -
阿里云飞天系统的技术架构
阿里云飞天系统的技术架构阿里云有以下五大优势:中国万网,提供虚拟主机托管的服务,而且还提供域名等服务,其客户群非常庞大;淘宝、阿里巴巴(内部称:B2B)、支付宝等其他子公司有大量的数据分析业务,需要消耗大量的服务器资源,电力,机房设施;阿里巴巴集团已经购买了多条大带宽的专线,并且形成多网互联和加速的能 力,并且有能力自己建设机房等方面的能力;阿里系公司技吸收转载 2017-09-21 18:59:25 · 16300 阅读 · 1 评论 -
学习笔记:The Log(我所读过的最好的一篇分布式技术文章)
前言这是一篇学习笔记。学习的材料来自Jay Kreps的一篇讲Log的博文。原文很长,但是我坚持看完了,收获颇多,也深深为Jay哥的技术能力、架构能力和对于分布式系统的理解之深刻所折服。同时也因为某些理解和Jay哥观点吻合而略沾沾自喜。Jay Kreps是前Linkedin的Principal Staff Engineer,现任Confluent公司的联合创始人和CEO,Kafka转载 2017-05-02 20:05:58 · 2622 阅读 · 0 评论 -
Kafka消息可靠性
如果MQ没有类似数据库事务结构和保证,是不可能达到消息投递100%可靠的,极端情况下消息投递要么丢失或重复。下面咋们从producer,broker,consumer的角度分析一下Kafka中会出现哪些情况。1.producer发送消息到Broker目前生产者发送消息(request.required.acks)有三种方式。acks =转载 2017-03-26 19:52:18 · 3331 阅读 · 0 评论 -
Kafka原理简介
背景介绍:Kafka 是一个消息系统,原本开发自 LinkedIn,用作 LinkedIn 的活动流(Activity Stream)和运营数据处理管道(Pipeline)的基础。现在它已被多家公司作为多种类型的数据管道和消息系统使用。活动流数据是几乎所有站点在对其网站使用情况做报表时都要用到的数据中最常规的部分。活动数据包括页面访问量(Page View)、被查看内容方面的信息以及搜索情转载 2017-03-26 19:42:39 · 3150 阅读 · 0 评论 -
kafka知识点整理
一、为什么需要消息系统1.解耦:允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。2.冗余:消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险。许多消息队列所采用的”插入-获取-删除”范式中,在把一个消息从队列中删除之前,需要你的处理系统明确的指出该消息已经被处理完毕,从而确保你的数据被安全的保存直到你使用完毕。3.扩展性:转载 2017-03-25 20:01:50 · 932 阅读 · 1 评论 -
Kafka高可用设计解析
Kafka在0.8以前的版本中,并不提供High Availablity机制,一旦一个或多个Broker宕机,则宕机期间其上所有Partition都无法继续提供服务。若该Broker永远不能再恢复,亦或磁盘故障,则其上数据将丢失。而Kafka的设计目标之一即是提供数据持久化,同时对于分布式系统来说,尤其当集群规模上升到一定程度后,一台或者多台机器宕机的可能性大大提高,对于Failover机制的需求转载 2017-03-27 20:36:47 · 1385 阅读 · 0 评论 -
MySQL分区与传统的分库分表
传统的分库分表传统的分库分表都是通过应用层逻辑实现的,对于数据库层面来说,都是普通的表和库。分库分库的原因首先,在单台数据库服务器性能足够的情况下,分库对于数据库性能是没有影响的。在数据库存储上,database只起到一个namespace的作用。database中的表文件存储在一个以database名命名的文件夹中。比如下面的employees数据库:my转载 2017-01-31 16:28:04 · 4824 阅读 · 1 评论 -
分布式事务之说说TCC事务
在当前如火如荼的互联网浪潮下,如何应对海量数据、高并发成为大家面临的普遍难题。广大IT公司从以往的集中式网站架构,纷纷转向分布式的网站架构,随之而来的就是进行数据库拆分和应用拆分,如何在跨数据库、跨应用保证数据操作和业务操作的一致性、原子性,又成为需要解决的新的问题。从分布式事务的需求来源来看:1、跨数据库数据库拆分(水平、垂直)带来的分布式事务->保证跨库操作的原子性基于单个JVM转载 2017-01-30 16:46:48 · 51423 阅读 · 5 评论 -
分布式缓存集群方案选型
分布式缓存集群方案特性使用场景(Memcache/Redis(Twemproxy/Codis/Redis-cluster))优缺点对比及选型转载 2017-02-28 23:56:17 · 1826 阅读 · 0 评论 -
深入理解 Spring 事务原理
一、事务的基本原理Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤进行:获取连接 Connection con = DriverManager.getConnection()开启事务con.setAutoCommit(true/false);执行CRUD提交事务/回滚事转载 2016-12-13 23:57:04 · 1442 阅读 · 0 评论 -
分布式系统事务一致性解决方案
开篇在OLTP系统领域,我们在很多业务场景下都会面临事务一致性方面的需求,例如最经典的Bob给Smith转账的案例。传统的企业开发,系统往往是以单体应用形式存在的,也没有横跨多个数据库。我们通常只需借助开发平台中特有数据访问技术和框架(例如Spring、JDBC、ADO.NET),结合关系型数据库自带的事务管理机制来实现事务性的需求。关系型数据库通常具有ACID特性:原子性(Atomici转载 2016-12-12 20:17:36 · 1178 阅读 · 0 评论 -
分布式事务:不过是在一致性、吞吐量和复杂度之间,做一个选择
这是一个开撕的话题,我经历过太多的关于分布式事务的需求:“有没有简单的方案,像使用数据库事务那样,解决分布式数据一致性的问题”。特别是微服务架构流行的今天,一次交易需要跨越多个“服务”、多个数据库来实现,传统的技术手段,已经无法应对和满足微服务情况下这些复杂的场景了。针对微服务下的交易业务如何保障数据一致性,本文尽量做到理论结合实践,将我们在实际产品中用到的分布式事务实现机制,和大家扒一扒,希望能转载 2016-12-11 22:06:18 · 3277 阅读 · 0 评论 -
ZooKeeper的基本原理
zookeeper是一个高可用性,高性能的协调服务解决哪些问题在分布式应用中,经常会出现部分失败的情况,即当节点间传递消息的时候由于网络或者接收者进程死掉等原因,发送者无法知道接收者是否收到消息。由于部分失败是分布式系统固有的特征因此zookeeper并不能避免部分失败,但是它可以帮你在部分失败的时候进行正确处理为了解决这个问题zookeeper具有以下特征:1:zookeep转载 2015-07-02 17:59:14 · 2139 阅读 · 0 评论 -
ZooKeeper权限配置
最近使用Zookeeper作为配置管理服务,因为配置数据有很高的安全要求,需要有权限控制,也就是需要登录才能看到Zookeeper上面的数据。Zookeeper对权限的控制是节点级别的,而且不继承,即对父节点设置权限,其子节点不继承父节点的权限。Zookeeper提供了几种认证方式:* world:有个单一的ID,anyone,表示任何人。* auth:不使用任何ID,表示任何通过转载 2015-07-02 17:46:46 · 4539 阅读 · 0 评论 -
ZooKeeper的核心特性
1.为了解决分布式事务性一致的问题2.文件系统也是一个树形的文件系统,但比linux系统简单,不区分文件和文件夹,所有的文件统一称为znode3.znode的作用:存放数据,但上限是1M ;存放ACL(access control list)访问控制列表,每个znode被创建的时候,都会带有一个ACL,身份验证方式有三种:digest(用户名密码验证),host(主机名验证),ip(ip验转载 2015-07-02 18:05:53 · 2293 阅读 · 0 评论 -
ZooKeeper FAQ
这段时间来,也在和公司里的一些同学交流使用zk的心得,整理了一些常见的zookeeper问题。这个页面的目标是解答一些zk常见的使用问题,同时也让大家明确zk不能干什么。页面会一直更新。客户端1. 客户端对ServerList的轮询机制是什么随机,客户端在初始化( new ZooKeeper(String connectString, int sessionTimeout, Watch转载 2013-09-19 23:21:34 · 1142 阅读 · 0 评论 -
【Apache ZooKeeper】理解ZooKeeper中的ZNodes
ZooKeeper中的每个结点都是一个ZNode。ZNode维护一个包括数据和ACL修改的版本号的stat结构。ZNode结构还包括时间戳。版本号和时间戳一起用来验证缓存和协调更新。ZNode中的数据每更新一次,版本号就相应的增加一次。例如,每当客户端需要检索数据的时候,它也会收到一个数据的版本号。当客户端执行修改或者删除操作时,必须提供正在修改的数据的版本号。如果客户端提供的版本号和实际数据的版转载 2013-09-19 23:19:01 · 1904 阅读 · 0 评论 -
【Apache ZooKeeper】官方文档
ZooKeeper是一个高性能的用于协调分布式应用程序的服务。它将公共服务,比如命名、配置管理、同步化和集群服务封装进一个简单的接口,可以直接用于实现共识(consensus)、集群管理、领导者选举和存在(presence )协议。可以在其上构建自己的分布式应用程序。ZooKeeper使用一种类似文件系统目录树的数据模型,它可以运行于Java上并且具有Java和C的封装。转载 2013-09-19 23:15:18 · 7664 阅读 · 1 评论 -
Paxos算法之旅 ZooKeeper代码解析
ZooKeeper是近期比较热门的一个类Paxos实现。也是一个逐渐得到广泛应用的开源的分布式锁服务实现。被认为是Chubby的开源版,虽然具体实现有很多差异。ZooKeeper概要的介绍可以看官方文档:http://hadoop.apache.org/zookeeper 这里我们重点来看下它的内部实现。ZooKeeper集群中的每个server都要知道其他成员,通过在配置文件zoo.cfg中转载 2013-09-19 22:50:45 · 1614 阅读 · 1 评论 -
分布式服务框架 Zookeeper -- 管理分布式环境中的数据
安装和配置详解本文介绍的 Zookeeper 是以 3.2.2 这个稳定版本为基础,最新的版本可以通过官网 http://hadoop.apache.org/zookeeper/来获取,Zookeeper 的安装非常简单,下面将从单机模式和集群模式两个方面介绍 Zookeeper 的安装和配置。单机模式单机安装非常简单,只要获取到 Zookeeper 的压缩包并解压到某个目录如:/转载 2013-09-19 15:04:40 · 1187 阅读 · 0 评论