微服务架构的业务系统众多,那么数据的一致性怎么保障,数据的隔离机制如何实现等等?

当前微服务架构的业务系统越来越多,无论是做缓存场景,还是内存数据库场景,redis的适用非常普遍,但是每套业务系统都部署一套redis集群,相当浪费资源,而且,考虑到同城和异地的信息系统建设,费用也相当之高,是否有机制可以类似中台一样,建立一个统一的redis平台,提供各种场景的服务?那么数据的一致性怎么保障,数据的隔离机制如何实现,性能如何评估等等?

3回答

zhuqibszhuqibs  软件开发工程师 , Mcd
zhanghaiyanzhangpinhongdi等赞同了此回答
(1)首先统一的redis中心是很“技术”,  因为你要一个强大的技术人员或团队;(2)为了保证一致性,redis cluster读取数据是从master上读取数据的,这样可以保证数据的一致性,当然,性能也就差了; redis 主从模式,写master节点,异步同步slave节点,读从slave上读取数据,读性能提高了,但一致...显示全部

(1)首先统一的redis中心是很“技术”,  因为你要一个强大的技术人员或团队;
(2)为了保证一致性,redis cluster读取数据是从master上读取数据的,这样可以保证数据的一致性,当然,性能也就差了; redis 主从模式,写master节点,异步同步slave节点,读从slave上读取数据,读性能提高了,但一致性难以保证。这也就是门德尔不可能三角中的CAP原则中,保证P的同时,CA不可能同时满足。
(3)当然,也不是没有解决方案,但redis作为一个缓存数据库,并没有做的这么复杂。 现代分布式数据库中,使用multi raft架构,最大限度的解决了这个问题----master是变化的,根据应用的不同不断的变化,同时读永远从变化的master上写入和读取。
(4)redis也是有事物的,但只保证了一致性和隔离性,没有原子性,一致性上面说过了。因为redis本质上是单线程的,一个一个的去执行命令。这种顺序执行,隔离性是有保证的。

收起
 2020-04-18
浏览3167
尘世随缘尘世随缘  技术总监 , 上海某互联网金融公司
sdsfan80sdnx666赞同了此回答
首选纠正下你对微服务架构的理解,在微服务架构下,要求每个原子服务的数据库、缓存都是相互独立的,原因是当服务所依赖的数据库或者缓存有问题只影响它本身的服务,不影响其他服务,避免级联问题。其次关于你所担心的资源浪费问题,可以考虑每个服务的调用量来设置不同的服务资源配...显示全部

首选纠正下你对微服务架构的理解,在微服务架构下,要求每个原子服务的数据库、缓存都是相互独立的,原因是当服务所依赖的数据库或者缓存有问题只影响它本身的服务,不影响其他服务,避免级联问题。
其次关于你所担心的资源浪费问题,可以考虑每个服务的调用量来设置不同的服务资源配置,目前不管是虚拟化使用docker还是云平台所提供的redis服务,都可以做到非常低的费用。
所以,想微服务稳定,按标准的模式来,每种资源做隔离,而不是聚集在一起。

收起
 2020-04-19
浏览2455
顾黄亮顾黄亮  技术总监 , 苏宁消费金融有限公司
sdsfan80赞同了此回答
这个架构有问题,统一的redis平台或者是集群提供服务,因此这个集群肯定是横向扩容的,只能是cluster集群架构,所以从一致性、数据隔离、性能评估三个方面来分析1、一致性可以做到,cluster的特性可以保证数据一致性2、数据隔离做不到, 单机支持多个数据库,并且每个数据库的数据是隔...显示全部

这个架构有问题,统一的redis平台或者是集群提供服务,因此这个集群肯定是横向扩容的,只能是cluster集群架构,所以从一致性、数据隔离、性能评估三个方面来分析
1、一致性可以做到,cluster的特性可以保证数据一致性
2、数据隔离做不到, 单机支持多个数据库,并且每个数据库的数据是隔离的不能共享。cluster就没有数据库的概念,不支持多数据库。
3、性能评估取决于承载业务的访问量

收起
 2020-04-21
浏览2372

提问者

Dongxin系统架构师, 某银行股份有限公司

分布式关系型数据库选型优先顺序调查

发表您的选型观点,参与即得50金币。

问题状态

  • 发布时间:2020-04-17
  • 关注会员:5 人
  • 问题浏览:4492
  • 最近回答:2020-04-21