当前微服务架构的业务系统越来越多,无论是做缓存场景,还是内存数据库场景,redis的适用非常普遍,但是每套业务系统都部署一套redis集群,相当浪费资源,而且,考虑到同城和异地的信息系统建设,费用也相当之高,是否有机制可以类似中台一样,建立一个统一的redis平台,提供各种场景的服务?那么数据的一致性怎么保障,数据的隔离机制如何实现,性能如何评估等等?
(1)首先统一的redis中心是很“技术”, 因为你要一个强大的技术人员或团队;
(2)为了保证一致性,redis cluster读取数据是从master上读取数据的,这样可以保证数据的一致性,当然,性能也就差了; redis 主从模式,写master节点,异步同步slave节点,读从slave上读取数据,读性能提高了,但一致性难以保证。这也就是门德尔不可能三角中的CAP原则中,保证P的同时,CA不可能同时满足。
(3)当然,也不是没有解决方案,但redis作为一个缓存数据库,并没有做的这么复杂。 现代分布式数据库中,使用multi raft架构,最大限度的解决了这个问题----master是变化的,根据应用的不同不断的变化,同时读永远从变化的master上写入和读取。
(4)redis也是有事物的,但只保证了一致性和隔离性,没有原子性,一致性上面说过了。因为redis本质上是单线程的,一个一个的去执行命令。这种顺序执行,隔离性是有保证的。