死锁
摘要:一 前言 死锁,其实是一个很有意思也很有挑战的技术问题,大概每个DBA和部分开发同学都会在工作过程中遇见 。关于死锁我会持续写一个系列的案例分析,希望能够对想了解死锁的朋友有所帮助。二 案例分析2.1 环境说明MySQL 5.6 事务隔离级别为RR CREATE TABLE `ty` ( `id`
阅读全文
posted @
2015-05-11 11:50
duanxz
阅读(991)
推荐(0)
MySQL中间层 Atlas
摘要:Atlas是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atla
阅读全文
posted @
2015-05-11 11:47
duanxz
阅读(665)
推荐(0)
Redis实现访问控制频率
摘要:《高可用服务设计之二:Rate limiting 限流与降级》 《nginx限制请求之一:(ngx_http_limit_conn_module)模块》 《nginx限制请求之二:(ngx_http_limit_req_module)模块》 《nginx限制请求之三:Nginx+Lua+Redis
阅读全文
posted @
2015-05-11 11:32
duanxz
阅读(2180)
推荐(0)
AOP+RateLimiter平滑限流
摘要:RateLimiter平滑限流分:平滑突发限流和平滑预热限流 RateLimiter简介(guava的令牌桶实现) Google开源工具包Guava提供了限流工具类RateLimiter,该类基于令牌桶算法(Token Bucket)来完成限流,非常易于使用.RateLimiter经常用于限制对一些
阅读全文
posted @
2015-05-11 10:58
duanxz
阅读(3032)
推荐(0)
无限变长字符编码方案
摘要:■无限变长字符编码方案 【目的】 无限变长编码,不浪费储存空间,一次扫描就能识别字符,乱码不会扩散。 【基础】 字符编码由字节组成,一个字节为8个二进制位,理论上可表示2的8次方个字符。 【方案】 0开头的编码,当其前一个编码以0开头时为ASCLL码;当其前一个编码为1开头时为变长编码尾码。注意:有
阅读全文
posted @
2015-05-07 07:31
duanxz
阅读(1389)
推荐(0)
分布式事务之:定期校对
摘要:现金和积分的组合支付场景中,需要同时保证现金和积分的支付结果同步。可以通过定期校对来完成。 注意: 1、查询接口保证“可查询操作” 2、积分相关接口要求“幂等性” 冻结积分 解冻积分 操作积分(冻结后的确认) 时序图: 定时校对的时序图:
阅读全文
posted @
2015-04-23 08:55
duanxz
阅读(446)
推荐(0)
分布式事务之:可靠消息/事务消息
摘要:方案一:消息中间件 所谓的消息事务就是基于消息中间件的两阶段提交,本质上是对消息中间件的一种特殊利用,它是将本地事务和发消息放在了一个分布式事务里,保证要么本地操作成功成功并且对外发消息成功,要么两者都失败,开源的RocketMQ就支持这一特性,具体原理如下: 关于RocketMQ中的特性详解见《分
阅读全文
posted @
2015-04-06 21:14
duanxz
阅读(776)
推荐(0)
谈谈分布式事务之三: System.Transactions事务详解[下篇]
摘要:在前面一篇给出的Transaction的定义中,信息的读者应该看到了一个叫做DepedentClone的方法。该方法对用于创建基于现有Transaction对 象的“依赖事务(DependentTransaction)”。不像可提交事务是一个独立的事务对象,依赖事务依附于现有的某个事务(可能是可提交...
阅读全文
posted @
2015-02-09 17:19
duanxz
阅读(1199)
推荐(1)
谈谈分布式事务之三: System.Transactions事务详解[上篇]
摘要:在.NET 1.x中,我们基本是通过ADO.NET实现对不同数据库访问的事务。.NET 2.0为了带来了全新的事务编程模式,由于所有事务组件或者类型均定义在System.Transactions程序集中的System.Transactions命名空间下,我们直接称基于此的事务为System.Tran...
阅读全文
posted @
2015-02-09 17:17
duanxz
阅读(2396)
推荐(1)
谈谈分布式事务之二:基于DTC的分布式事务管理模型[下篇]
摘要:[续上篇] 当基于LTM或者KTM的事务提升到基于DTC的分布式事务后,DTC成为了本机所有事务型资源管理器的管理者;此外,当一个事务型操作超出了本机的范 围,出现了跨机器的调用后,本机的DTC需要于被调用者所在机器的DTC进行协助。上级对下级(包括本机DTC对本机所有资源管理器,以及上下级DTC)...
阅读全文
posted @
2015-02-09 17:16
duanxz
阅读(428)
推荐(0)
谈谈分布式事务之二:基于DTC的分布式事务管理模型[上篇]
摘要:通过上一篇的 介绍,我们知道了SOA真正需要的是一个能够协调服务操作直接(通过服务自身访问的资源)或者间接(通过被调用服务访问的资源)访问的所有资源的分布式事 务管理系统,这是一个复杂的架构体系。WCF,作为Windows平台下基于SOA的分布式框架,对分布式事务提供全面的支持。不过,WCF并不是另...
阅读全文
posted @
2015-02-09 17:15
duanxz
阅读(516)
推荐(0)
FastCGI技术
摘要:1 FastCGI介绍 FastCGI:快速通用网关接口(Fast Common Gateway Interface/FastCGI)是一种让交互程序与Web服务器通信的协议。 FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一...
阅读全文
posted @
2014-11-21 10:07
duanxz
阅读(1374)
推荐(0)
一致性哈希算法原理、避免数据热点方法及Java实现
摘要:一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用。 一致性hash算法提出了
阅读全文
posted @
2014-09-16 10:24
duanxz
阅读(1390)
推荐(0)
缓存与数据库一致性之三:缓存穿透、缓存雪崩、key重建方案
摘要:一、缓存穿透预防及优化 缓存穿透是指查询一个根本不存在的数据,缓存层和存储层都不会命中,但是出于容错的考虑,如果从存储层查不到数据则不写入缓存层,如图 11-3 所示整个过程分为如下 3 步: 缓存层不命中 存储层不命中,所以不将空结果写回缓存 返回空结果 缓存穿透将导致不存在的数据每次请求都要到存
阅读全文
posted @
2014-06-17 09:15
duanxz
阅读(8605)
推荐(4)
缓存与数据库一致性之二:高并发下的key重建(先淘汰cache再写db)的问题
摘要:一、为什么数据会不一致 回顾一下上一篇文章《缓存与数据库一致性之一:缓存更新设计》中对缓存、数据库进行读写操作的流程。 写流程: (1)先淘汰cache (2)再写db 读流程: (1)先读cache,如果数据命中hit则返回 (2)如果数据未命中miss则读db (3)将db中读取出来的数据入缓存
阅读全文
posted @
2014-06-13 18:01
duanxz
阅读(2502)
推荐(1)
缓存与数据库一致性之一:缓存更新设计
摘要:一、缓存更新场景介绍 缓存是一种提高系统读性能的常见技术,对于读多写少的应用场景,我们经常使用缓存来进行优化。 例如对于用户的余额信息表account(uid, money),业务上的需求是: (1)查询用户的余额,SELECT money FROM account WHERE uid=XXX,占9
阅读全文
posted @
2014-06-13 09:49
duanxz
阅读(9810)
推荐(4)
diamond专题(三)—— diamond架构
摘要:大家好,这次为大家带来的是diamond的架构,架构如下图所示:对该图进行一些说明:1、作为一个配置中心,diamond的功能分为发布和订阅两部分。因为diamond存放的是持久数据,这些数据的变化频率不会很高,甚至很低,所以发布采用手工的形式,通过diamond后台管理界面发布;订阅是diamon...
阅读全文
posted @
2014-06-12 10:38
duanxz
阅读(961)
推荐(0)
diamond专题(四)—— 容灾机制
摘要:大家好,本次为大家带来diamond的容灾机制。 diamond之所以表现的稳定可靠,除了架构简单之外,另一个重要原因是diamond具有一套完备的容灾机制,容灾机制涉及到client和server两部分,主要包括以下几个方面:1、server存储数据的方式。server存储数据是“数据库 + 本地...
阅读全文
posted @
2014-06-12 10:38
duanxz
阅读(664)
推荐(0)
淘宝JAVA中间件Diamond详解(一)---简介&快速使用
摘要:大家好,今天开始为大家带来我们通用产品团队的产品 —— diamond的专题,本次为大家介绍diamond的概况和快速使用。一、概况diamond是淘宝内部使用的一个管理持久配置的系统,它的特点是简单、可靠、易用,目前淘宝内部绝大多数系统的配置,由diamond来进行统一管理。diamond为应用系...
阅读全文
posted @
2014-06-12 10:37
duanxz
阅读(4485)
推荐(0)
分布式环境下的session管理
摘要:一、分布式Session的几种实现方式 1.1、基于cookie 进行session共享 简单、方便,每次通过判断cookie中的用户状态信息判断用户的登录状态;但是用户信息要存在客户端,存在安全隐患,除非有相当安全的加密措施,如果加密码负载,也会增加运算的成本。 简单、方便,每次通过判断cooki
阅读全文
posted @
2014-06-12 10:37
duanxz
阅读(588)
推荐(0)