- 博客(27)
- 资源 (5)
- 收藏
- 关注

原创 分布式架构设计篇(十一)-柔性事务之最大努力通知事务详解
- 概述 -咱们在上一篇文章探讨了事务消息,事务消息是基于MQ实现的一种异步事务。接下来咱们开始聊聊咱们分布式事务系列中的最后一个方案:最大努力通知事务。最大努力通知事务的主流实现仍是基于MQ来进行事务控制。最大努力通知事务和事务消息都是通知型事务,主要适用于那些需要异步更新数据,并且对数据的实时性要求较低...
2020-06-29 18:23:06
454

原创 分布式架构设计篇(九)-柔性事务之Saga详解
- 起源 -Saga模型起源于1987年 Hector Garcia-Molina,Kenneth Salem 发表的论文《Sagas》,是分布式事务相关概念最早出现的。Saga模型是把一个分布式事务拆分为多个本地事务,每个本地事务都有相应的执行模块和补偿模块(对应TCC中的Confirm和Can...
2020-06-23 16:40:18
1113

原创 分布式架构设计篇(四)-聊聊cap
- CAP的前世今生 -1.1 起源CAP理论,被戏称为“帽子理论”,CAP是Eric Brewer在2000年ACM研讨会上出了一个想法:“一致性、可用性和分区容错性三者无法在分布式系统中被同时满足,并且最多只能满足其中两个!”2002年,Seth Gilbert和Nancy Lynch采用反正法证明了猜想:“如果三者可同时满足,则因为允许P的存在,一定存在Server之间的丢包,如此则不能保证C。” 在该证明中,对CAP的定义进行了更明确的声明。C:一致性...
2020-05-29 20:58:32
325
原创 一致性算法 - Distro协议在Nacos的实践
- 引文 -本系列文章前面几篇已经总体介绍了一致性、AP的Gossip、CP的Raft。接下去咱们了解一个简单的AP协议:Distro协议。Distro是阿里巴巴的私有协议,目前流行的Nacos服务管理框架就采用了Distro协议。Distro 协议被定位为临时数据的一致性协议:该类型协议,不需要把数据存储到磁盘或者数据库,因为临时数据通常和服务器保持一个session会话,该会话只要存在,数据就不会丢失。Distro 协议保证写必须永远是成功的,即使可能会发生网...
2020-09-14 17:29:25
2385
原创 分布式架构设计篇(十三)-一致性算法概述
- 一致性定义 -提到一致性这个词,大家会想到外文中有几个单词,如CAP中的Consistency、Cache Coherence、区块链的Consensus。这三个单词在外文不同环境拥有不同的含义。但在汉字中统一可以翻译为“一致性”。因此在谈一致性之前,有必要对这几个概念做一个区分,否则很容易让人迷惑。 Coherence:出现在Cache Coherence 一词中,称为“缓存一致性”。 Consensus:准确翻译是共识,即多个提议者达成共识的过程,例如Paxos、...
2020-08-28 14:44:29
448
原创 一致性算法 - Raft协议实践(SOFAJRaft剖析)
- SOFAJRaft 概述 -咱们对Raft协议已经进行了原理的解析,接下去咱们从通过SOFAJRaft 框架的核心流程剖析加深对Raft协议的理解。SOFAJRaft 是一个纯 Java 的 Raft 算法实现库, 基于百度 braft 实现而来, 使用 Java 重写了所有功能, 支持: 领导人选举和基于优先级的半确...
2020-08-28 14:38:13
697
1
原创 一致性算法 - Raft协议流程详解
- 引文 -咱们上文整体的介绍了下Raft协议,Raft协议分区容忍的一致性协议的核心思想:一致性的保证不一定非要所有节点都保持一致,只要大多数节点更新了,对于整个分布式系统来说数据也是一致性的。Raft 协议将概念分解成:Leader election、Log replication、Safety。Raft 把一致性协议划分为 Leader 选举、MemberShip 变更、日志复制、Snapshot 等几个几乎完全解耦的模块,实现了模块化设计。Raft 设计原则是通过减少状态数量...
2020-08-03 11:27:57
906
原创 一致性算法 - Raft协议总述
- 起源-Raft协议起源于 2013 年 斯坦福 Diego Ongaro和John Ousterhout的论文《In Search of an Understandable Consensus Algorithm》。作者表示因为Paxos 晦涩难懂且缺乏工程实现,所以要设计个既容易实现又利于学生学习的一致性算法。Raft 的数据一致性等价于 Multi Paxos,可以用于取代Paxos,并且证明可以提供与Paxos相同的容错性以及性能。Raft协议是一种基于日志复制的一致性算...
2020-07-28 15:23:56
463
原创 一致性算法-Gossip协议实践(Memberlist)
- 引文 -咱们上文简单说了Gossip协议的原始方案,在真实场景有几百种变种,比较常见的Gossip 协议实现框架有:java:https://github.com/scalecube/scalecube-cluster scalecube(伸缩立方)社区go:https://github.com/hashicorp/memberlist hashicorp公司出品memberlist 是HashiCorp公司出品的go语言开发库,使用基于Gossip协议管理集群成...
2020-07-21 10:22:57
2035
原创 一致性算法-Gossip协议详解
- 起源 -Gossip protocol 也叫 Epidemic Protocol (流行病协议),是基于流行病传播方式的节点或者进程之间信息交换的协议。。Gossip protocol在1987年8月由施乐公司帕洛阿尔托研究中心研究员艾伦·德默斯(Alan Demers)发表在ACM上的论文《Epidemic Algorithms for Replicated Database Maintenance》中被提出。Gossip协议是基于六度分隔理论(Six Degrees of ...
2020-07-15 12:09:09
7072
原创 分布式架构设计篇(十二)-分布式事务总结篇
- 总述 -咱们前面分别对分布式事务的几个分支:XA、2PC、3PC、TCC、Saga、事务消息、最大努力事务进行的详细介绍。本篇作为分布式事务设计的收尾篇,讲对前面的内容查缺补漏和总结,最后对市面的一些开源框架做一些介绍。- 查缺补漏 -1.补偿型事务柔性事务分补偿型事务和通知型事务。但对补偿型事务没有进行详细介绍,那什么是补偿型事务呢,在Atomikos 公司Guy Pardon的论文《Business Activities》中有这样的描述:...
2020-07-08 11:43:35
389
原创 分布式架构设计篇(十)-柔性事务之事务消息详解
- 概述 -在 《柔性事务之TCC详解》 和《柔性事务之Saga详解》两文中我们详细剖析了柔性事务的第一个分支补偿型事务。在《刚性事务总结和柔性事务概述》中我们介绍过的柔性事务包含补偿型事务和通知型事务。通知型事务主要包含事务消息和最大努力通知型分布式事务两个组成。通知型事务的核心思想是通过MQ来通知其他事务参...
2020-06-22 19:55:21
559
原创 未来技术展望(一):混沌工程与ChaosBlade
- 起源 -混沌工程是在分布式系统上进行实验的学科, 目的是建立对系统抵御生产环境中失控条件的能力以及信心。由...
2020-06-20 14:22:50
856
原创 分布式架构设计篇(八)-柔性事务之TCC详解
- 起源 -TCC概念由Pat Helland于2007年发表的一篇名为《Life beyond Distributed Transactions:an Apostate’s Opinion》的论文提出, 在该论文中,TCC还是以Tentative-Confirmation-Cancellation命名。正式以Try-Confirm-Cancel作为名称的是Atomikos公司,并且还注册了TCC商标。国内最早可查引进TCC概念,应是阿里程立2008年在 软件开发2.0大会 上分享主...
2020-06-12 20:20:03
805
原创 分布式架构设计篇(七)-刚性事务总结和柔性事务概述
- 刚性事务总结 -在《分布式架构之设计篇-刚性事务之2PC详解》和《分布式架构之设计篇-刚性事务之3PC详解》二文中分析了分布式事务的本质、XA、2PC、3PC等等。但是没有说分布式事务的现象或者场景,我总结了分布式事务的触发场景大约有以下几种:1、跨数据库分布式事务:数据库的物理分割下保障跨库操作的ACID。2、跨服务分布式事务:服务的网络分割下保障多服务的事务完整性。3、混合式分布式事务:跨数据库分布式事务 + 跨服务分布式事务。最根本的原因就是事务参与者...
2020-06-05 20:06:46
644
原创 分布式架构设计篇(六)-刚性事务之3PC详解
2PC必须注意的问题咱们上文介绍了分布式事务的常见方案、类型划分、2PC的起源和流程。但是不幸的是2PC还是存在几个问题:1、全流程的同步阻塞:不管是第一阶段还是第二阶段,所有参与节点都是事务阻塞型。当参与者占有公共资源时,其他第三方访问公共资源可能不得不处于阻塞状态。2、TM单点故障:由于全流程依赖TM的协调,一旦TM发生故障。参与者会一直阻塞下去。尤其在第二阶段,TM发生故障,那么所有的参与者还都处于锁定事务资源的状态中,而无法继续完成事务操作。所有参与者必须等待TM重新上线(TM重新.
2020-05-31 10:58:08
497
原创 分布式架构设计篇(五)-刚性事务之2PC详解
分布式一致性分布式场景下,多个服务同时对服务一个流程,比如电商下单场景,需要支付服务进行支付、库存服务扣减库存、订单服务进行订单生成、物流服务更新物流信息等。如果某一个服务执行失败,或者网络不通引起的请求丢失,那么整个系统可能出现数据不一致的原因。上述场景就是分布式一致性问题,追根到底,分布式一致性的根本原因在于数据的分布式操作,引起的本地事务无法保障数据的原子性引起。分布式一致性问题的解决思路有两种,一种是分布式事务,一种是尽量通过业务流程避免分布式事务。分布式事务是直接解决...
2020-05-27 18:50:09
350
原创 7小时上线1个秒杀系统!!!!
本文基于东南某市的真实案例进行文字化整理,由林淮川/孙玄工作编写。首发于 微信公众号“架构之美”上,转载请保留。
2020-03-31 10:55:49
351
1
原创 分布式注册中心的思考和选型
一、概述在微服务时代,注册中心越来越被重视。服务治理逐渐跟业务服务并驾齐驱。所以本文想对注册中心进行体系化探索。注册中心,起源于分布式时代。不管是水平拆分架构 或者 ESB架构;对于多服务、多实例的支持,出现服务治理的需求,注册中心被用于服务治理中的服务发现、服务注册、服务探活三个功能与需求。架构师需要追寻事物的本质,才能设计使用好技术。那么注册中心的本质是什么:1、根据服务发现的需求...
2019-12-30 15:58:44
492
1
原创 分布式锁选型背后的架构思维(带源码)
此文为林淮川(鄙人)和玄姐(转转首席架构师)共同编写,发布在csdn和 架构之美工作号上。https://blog.youkuaiyun.com/jianxian89/article/details/103584137转载请保留!1. 分布式锁本质提到分布式锁,有很多实现,比如Redis分布式锁、ZooKeeper分布式锁、etcd分布式锁等。但是选择哪个更适合你的项目?在《基于CAP模型设计企...
2019-12-17 18:41:17
756
原创 Dubbo rest 协议简单示例
一、应用配置A、引入依赖 (jboss.resteasy 的版本为:3.6.2.Final) B、配置web.xml(使用外部tomcat启动时) C、配置提供者 D、配置rest地址(类似Spring mvc Controller) E、注意事项 1、使用外部容器时(比如部署到tom...
2018-12-10 10:58:39
1301
原创 quartz学习四--存储、集群
一、Quartz的存储和持久化 1、存储机制 Quartz 用 JobStores 对 Job、Trigger、calendar 和 Schduler 数据提供一种存储机制。 Scheduler 应用已配置的JobStore 来存储和获取到部署信息,并决定正被触发执行的 Job 的职责。 所有的关于哪个 Job 要执行和以什么时间表
2016-06-01 15:31:29
557
原创 quartz学习三--Spring集成
一、基础 1、依赖 jar quartz-1.8.5.jar spring-context-3.0.5.RELEASE.jar spring-context-support-3.0.5.RELEASE.jar 2、Spring 与 Quartz Spring-3.1 整合必须使用 Quartz-1.
2016-06-01 15:25:35
430
原创 quartz学习二--监听、排除日期、线程
一、Listener 1、基本概念 (1)、分类 JobListener TriggerListener SchedulerListener (2)、作用 可以扩展框架并定制来做特定的事情。跟Spring,Hibernate,Servlet监听器类似.
2016-06-01 15:24:48
854
原创 quartz学习一--入门
一、概述 1、简介 (1)、项目创立于1998年, 不间断更新,活跃度高。 (2)、纯Java设计,设计用于JavaSE、JavaEE, 方便集成于:JVM、JMI (3)、官网 http://www.quartz-scheduler.org/ (4)、cron表达式辅助工具
2016-06-01 15:24:12
602
原创 JPA 注解
一、Table注解 源代码: @Target({TYPE}) @Retention(RUNTIME) public @interface Table { String name() default ""; ---> 实体所对应表的名称,默认表名为实体的名称。 Strin
2012-03-12 09:35:40
816
原创 Oracle入门
一、Oracle初识 1、oracle监听配置 ----> 作用:类似于Mysql的连接 a、"开始" --> "所有程序" --> "Oracle..." --> "配置和移植工具" --> "Net manager" b、Oracle Net配置" --> "本地" --> "服务命名
2012-03-12 09:30:33
246
附件九-rpc论文译文.pdf
2020-06-20
JSON-RPC 2.0 规范(中文版)
2018-11-16
EditPlus 5汉化包(汉文博士翻译版)
2018-10-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人