分布式架构-中间件
文章平均质量分 85
travi
这个作者很懒,什么都没留下…
展开
-
分布式缓存--序列4--缓存更新策略/缓存穿透/缓存雪崩
前面几篇关于缓存的文章主要介绍了相关原理,本篇从业务应用角度讲述相关的使用策略。有兴趣朋友可以关注公众号“架构之道与术”, 获取最新文章。 或扫描如下二维码: 缓存更新策略被动更新设置key过期的时间,让其自动失效。主动更新更新DB的时候,同时更新缓存。一般业务都是主动更新和被动更新结合使用。先更新DB,后更新缓存对于主动更新来说,存在一个问题:你是...原创 2016-11-28 21:15:23 · 6573 阅读 · 2 评论 -
分布式缓存--系列1 -- Hash环/一致性Hash原理
当前,Memcached、Redis这类分布式kv缓存已经非常普遍。从本篇开始,本系列将分析分布式缓存相关的原理、使用策略和最佳实践。我们知道Memcached的分布式其实是一种“伪分布式”,也就是它的服务器结点之间其实是相互无关联的,之间没有网络拓扑关系,由客户端来决定一个key是存放到哪台机器。具体来讲,假设我有多台memcached服务器,编号分别为m0,m1,m2,…。对于一个ke...原创 2016-11-25 01:26:18 · 6164 阅读 · 0 评论 -
分布式缓存--系列2 -- Redis Cluster
说到Memcached和Redis的区别,我想很多人都会想到下面3点: 但这都是从“单机角度“来比较。可以说,在redis cluster出来之前,memcached 和 redis 的差别还不算大。但从Redis 3.0开始,引入了Redis Cluster,从此Redis进入了真正的“分布式集群“时代。而在“集群角度“,可以说Redis已经和Memcached有了很多重大的区别。下面这个表,从原创 2016-11-25 19:27:28 · 2131 阅读 · 0 评论 -
分布式缓存--序列3--原子操作与CAS乐观锁
问题的提出我们知道,在单机的“线程模型“中,2个线程并发修改一个变量,是需要加锁的。这个在Java并发编程–序列1已经讲过,要么是悲观锁,要么是乐观锁。 如果把单机的线程模型,改成有客户端/服务器的进程模型。服务器可以是Mysql/Redis/Memcached任何一种,那该问题又如何解决呢?有兴趣朋友可以关注公众号“架构之道与术”, 获取最新文章。 或扫描如下二维码: ...原创 2016-11-26 01:13:34 · 11473 阅读 · 1 评论 -
分布式存储--Mysql--序列1--聚簇索引&非聚簇索引
从本篇开始,将进入分布式系统的存储的讨论。存储一直是设计分布式系统中最最核心的问题,这里面设计到诸多设计策略。而Mysql作为一个开源的数据库,在各大互联网公司使用极为普遍。本系列将从Mysql开始,一步步展示关于存储设计的诸多策略。说到InnoDB和MyISAM的区别,很多人都会提到一个支持事务,一个不支持;一个是行锁,一个是表锁(这个其实不准确,后面会详细阐述)。但跟日常使用最密切相关的,更基本原创 2016-11-27 01:52:17 · 1591 阅读 · 0 评论 -
分布式存储--Mysql--序列2--索引的设计策略
索引设计一直是Mysql存储的核心部分,本篇将详细介绍设计索引过程中,要注意的一些基本策略。在线计算转化成离线计算,减少索引个数在通常用户量不是很大的系统中,我们会把C端的用户系统和内部用的运营系统混在一起,用一个库来查询。但你会发现大多数查询条件,其实都只是内部运营系统才用得到,比如做各种复杂的报表查询。所以如果你可以把C端系统和内部运营系统分开,C端系统用在线计算的思路做,运营系统用离线计算的思原创 2016-11-27 02:13:48 · 1130 阅读 · 0 评论 -
分布式存储--Mysql--序列3--分库分表策略
分库分表是存储层设计中一个普遍而重大的问题,什么时候分?怎么分?分完之后引发的新问题,比如不能Join、分布式事务? 本篇将从最基本的策略出发,逐步深入讲解这里面涉及的一序列策略。分库-业务分拆 & 数据隔离读多写少 vs. 读少写多分表/分库垂直切分水平切分待续原创 2016-11-29 12:24:10 · 2779 阅读 · 3 评论