你好,我是任杰。这一讲我想和你聊一聊常见的分布式数据系统的设计原理。
所有的业务系统归根到底都需要处理数据,因此从本质上来讲都是数据系统。业务系统和一般数据系统只是在处理数据的逻辑上有所不同,它们对于数据的存储、读取、容灾等都有极大的相似之处。
因此,我希望在学完这节课之后,你既能了解常用数据系统的运作原理,更好地使用它们,同时也能举一反三,在今后设计金融系统架构的时候能借鉴一些思路。
大部分的原理我在前面的课已经讲过了,关键之处我还会再次提示,如果有不清楚的内容,你可以回到对应的文章去复习一下。
Redis
我们先从最简单的 K/V 存储开始。Redis 出现之后,一举取代了 Memcached,成为首选的基于内存的 K/V 解决方案。Redis 的核心竞争力是速度快,那我们就来分析一下,为什么 Redis 会拥有速度上的优势呢?
首先,我们看看 Redis 处理数据的方式。Redis 默认用单线程处理所有数据。
单线程是一种能优化延时的解决方案,不过单线程虽然适合处理数据,但是不一定适合 I/O。同一时刻可能会有多个客户端在访问 Redis,如果用多线程处理的话,就会出现多线程造成的加锁冲突。
这时候,Redis 用了我们在第 11 节课讲网络优化时提到的 epoll 方法,用较少的计算资源来支持大量的 I/O 并发。