摘要: RPC概念及分类 RPC全称为Remote Procedure Call,翻译过来为“远程过程调用”。目前,主流的平台中都支持各种远程调用技术,以满足分布式系统架构中不同的系统之间的远程通信和相互调用。远程调用的应用场景极其广泛,实现的方式也各式各样。 从通信协议的层面,大致可以分为: 基于HTTP 阅读全文
posted @ 2016-12-07 09:13 丁码农 阅读(4829) 评论(2) 推荐(5) 编辑
摘要: 缓存一致性问题 当数据时效性要求很高时,需要保证缓存中的数据与数据库中的保持一致,而且需要保证缓存节点和副本中的数据也保持一致,不能出现差异现象。这就比较依赖缓存的过期和更新策略。一般会在数据发生更改的时,主动更新缓存中的数据或者移除对应的缓存。 缓存并发问题 缓存过期后将尝试从后端数据库获取数据, 阅读全文
posted @ 2016-12-05 12:41 丁码农 阅读(20926) 评论(6) 推荐(16) 编辑
摘要: 缓存命中率的介绍 命中:可以直接通过缓存获取到需要的数据。 不命中:无法直接通过缓存获取到想要的数据,需要再次查询数据库或者执行其它的操作。原因可能是由于缓存中根本不存在,或者缓存已经过期。 通常来讲,缓存的命中率越高则表示使用缓存的收益越高,应用的性能越好(响应时间越短、吞吐量越高),抗并发的能力 阅读全文
posted @ 2016-11-30 12:57 丁码农 阅读(22573) 评论(2) 推荐(12) 编辑
摘要: 常见的数据库系统优化中的一些观点: “系统性能出现问题进行优化,一定要深入了解数据库内部参数、等待事件、Latch、缓冲池、trace文件、查询/优化引擎等底层细节。” 这种观点往往出自数据库“高手”,这部分人以了解数据库底层实现细节而感到非常骄傲。但是从优化角度讲数据库的等待事件、Latch等指标 阅读全文
posted @ 2016-11-29 13:13 丁码农 阅读(3472) 评论(9) 推荐(8) 编辑
摘要: 缓存的基本知识 在整个计算机体系构造中(无论是硬件层面还是软件层面),缓存都是无处不在的。 在计算机硬件构造中,由于两种介质的速度不匹配,高速介质在和低速介质交互时速度趋向低速方,这就导致了高速介质的资源闲置。而通过引入第三种介质(速度和成本介于两者中间),将低速方读写的部分内容数据保存在该介质中, 阅读全文
posted @ 2016-11-28 08:59 丁码农 阅读(4317) 评论(9) 推荐(18) 编辑
摘要: 做过APP产品的技术人员都知道,APP应用属于一种C/S架构的,所以在做多版本兼容,升级等处理则比较麻烦,不像web应用那么容易。下面将带大家分析几种常见的情况和应对方式: 小改动或者新加功能的 这种情况,数据库结构和API程序一般是可以兼容多版本的,所以不用强制升级,可以坐到多版本共存。 尽量采用 阅读全文
posted @ 2016-11-23 09:14 丁码农 阅读(7899) 评论(8) 推荐(14) 编辑
摘要: 在之前的文章中,我介绍了分库分表的几种表现形式和玩法,也重点介绍了垂直分库所带来的问题和解决方法。本篇中,我们将继续聊聊水平分库分表的一些技巧。 分片技术的由来 关系型数据库本身比较容易成为系统性能瓶颈,单机存储容量、连接数、处理能力等都很有限,数据库本身的“有状态性”导致了它并不像Web和应用服务 阅读全文
posted @ 2016-11-21 09:24 丁码农 阅读(18379) 评论(30) 推荐(72) 编辑
摘要: 在谈论数据库架构和数据库优化的时候,我们经常会听到“分库分表”、“分片”、“Sharding”…这样的关键词。让人感到高兴的是,这些朋友所服务的公司业务量正在(或者即将面临)高速增长,技术方面也面临着一些挑战。让人感到担忧的是,他们系统真的就需要“分库分表”了吗?“分库分表”有那么容易实践吗?为此, 阅读全文
posted @ 2016-11-18 09:03 丁码农 阅读(22501) 评论(17) 推荐(32) 编辑
摘要: 本文首发于InfoQ,版权所有,请勿转载!!! http://www.infoq.com/cn/articles/solution-of-distributed-system-transaction-consistency 开篇 在OLTP系统领域,我们在很多业务场景下都会面临事务一致性方面的需求, 阅读全文
posted @ 2016-07-17 22:06 丁码农 阅读(88794) 评论(18) 推荐(31) 编辑
摘要: 最近在招聘中,聊到基础的网络编程的时候,发现不少人对BIO、NIO、AIO等理解非常模糊,觉得有必要写文章来纠正下很多人的误解。在谈这些之前,非常有必要先介绍下Unix 5种IO模型:阻塞:阻塞是最常用的IO模型,默认情况下所有的文件操作都是阻塞的。以套接字编程为例。在进程空间中调用recvfrom... 阅读全文
posted @ 2016-01-05 14:19 丁码农 阅读(1626) 评论(1) 推荐(5) 编辑