-
TCC Try-Confirm-Cancel
TCC (Try-Confirm-Cancel)
概念
TCC 最早在 《Life beyond Distributed Transactions:an Apostate’s Opinion》 中提出。
TCC事务机制相对于传统事务机制(X/Open XA),其特征在于它不依赖资源管理器(RM)对XA的支持,而是通过对(由业务系统提供的)业务逻辑的调度来实现分布式事务。
对于业务系统...
2018-09-02 02:54:19 |
SQL
-
分布式事务-本地消息表
本地消息表(经典的ebay模式)
该方案的核心思想在于分布式系统在处理任务时通过消息日志的方式来异步执行。
消息日志可以存储至本地文本、数据库或消息队列,然后再通过业务规则定时任务或人工自动重试。
以在线支付系统的跨行转账为例:
第一步
第一步,伪代码如下,对用户id为A的账户扣款1000元,通过本地事务将事务消息(包括本地事务id、支付账户、收款账户、金额、状态等)插入至消息表:...
2018-09-02 02:54:19 |
SQL
-
分布式事务-数据库实现
分布式事务
概念
分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。
简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。
本质上来说,分布式事务就是为了保证不同数据库的数据一致性。
产生的原因
从本地事务来看,我们可...
2018-09-02 02:06:45 |
SQL
-
Cache Travel-09-从零开始手写redis(16)实现渐进式 rehash map
思维导图:
上节内容回顾
我们在 从零手写缓存框架(15)实现自己的 HashMap 中已经实现了自己的简易版本的 HashMap,下面就让我们为这个简易版的 HashMap 加一点特技,让他变成一个渐进式 HashMap。
渐进式 rehash
好了,接下来,让我们考虑下,如何实现一个渐进式 rehash 的 Map?
实现流程
让我们在回顾一遍 redis 的渐进式 ...
2018-09-01 04:24:42 |
Cache
-
Cache Travel-09-从零开始手写redis(15)实现自己的 HashMap
回顾
我们在 从零手写缓存框架(14)redis渐进式rehash详解 中已经介绍了 redis 的渐进式 rehash 的原理。
在 从零开始手写缓存框架 redis(13)HashMap 源码原理详解 中详细讲解了 HashMap 的源码和设计思想。
本节就让我们一起来实现一个 HashMap,为后续实现渐进式 rehash 打下基础。
本文思维导图如下:
简易版本 Has...
2018-09-01 04:24:42 |
Cache
-
Cache Travel-09-从零手写缓存框架(14)redis渐进式rehash详解
redis 的 rehash 设计
本文思维导图如下:
HashMap 的 rehash 回顾
读过 HashMap 源码的同学,应该都知道 map 在扩容的时候,有一个 rehash 的过程。
没有读过也没有关系,可以花时间阅读下 从零开始手写 redis(13) HashMap源码详解 简单了解下整个过程即可。
HashMap 的扩容简介
这里简单介绍下:
扩容(res...
2018-09-01 04:24:42 |
Cache
-
Cache Travel-09-java 从零开始手写 redis(11)43243
前言
java从零手写实现redis(一)如何实现固定大小的缓存?
java从零手写实现redis(三)redis expire 过期原理
java从零手写实现redis(三)内存数据如何重启不丢失?
java从零手写实现redis(四)添加监听器
java从零手写实现redis(五)过期策略的另一种实现思路
java从零手写实现redis(六)AOF 持久化原理详解及实现
j...
2018-09-01 04:24:42 |
Cache
-
Cache Travel-09-java 从零开始手写 redis(十)缓存淘汰算法 LFU 最少使用频次
前言
java从零手写实现redis(一)如何实现固定大小的缓存?
java从零手写实现redis(三)redis expire 过期原理
java从零手写实现redis(三)内存数据如何重启不丢失?
java从零手写实现redis(四)添加监听器
java从零手写实现redis(五)过期策略的另一种实现思路
java从零手写实现redis(六)AOF 持久化原理详解及实现
j...
2018-09-01 04:24:42 |
Cache