专访田向阳:如何保证微服务架构下数据的一致性?

xiaoxiao2021-02-28  32

编者按:微服务是一个新兴的软件架构,就是把一个大型的单个应用程序和服务拆分为数十个的支持微服务。一个微服务的策略可以让工作变得更为简便,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。微服务自出现以来,就因为其灵活、高效、易于扩展深受开发者青睐。然而,由于在微服务架构中数据都是服务私有的,需要通过服务提供的API访问,因此,无法像而传统应用使用本地事务和分布式事务保证数据一致性。那么微服务架构又该怎么保证数据一致性呢?为此,记者专访了普元信息田向阳,请他介绍如何在微服务架构下保持数据的一致性。

推荐:田向阳将在2016年8月9日的晚20:00-21:00的CSDN公开课中,分享《微服务架构下数据一致性的保证》,欢迎大家前来报名,公开课主题摘要如下: 1) 传统分布式事务不是微服务中数据一致性的最佳选择 2) 微服务架构中应满足数据最终一致性原则 3) 微服务架构实现最终一致性的三种模式 4) 对账是最后的终极防线 报名链接:http://edu.csdn.net/huiyiCourse/detail/177

以下为专访正文:

:请简单的介绍一下您自己。目前关注哪些领域? 田向阳:大家好,我是普元信息的田向阳,是解决方案中心的一名架构师。个人比较关注微服务架构以及构建高性能的交易系统的技术。

:目前您负责普元哪些产品线? 田向阳:目前主要负责业务创新与集成平台产品,主要帮助客户快速实现业务创新。

:本次公开课主要针对哪些人群? 田向阳:主要是针对正在实施微服务架构或者是在不久的将来想采用微服务架构的企业技术人员,或者是对微服务有浓厚兴趣的人员。当然技术都是相通的,传统企业架构的技术人员也可以从中找到可以借鉴的地方。

:您对微服务怎么看?您认为什么样的应用适合微服务? 田向阳:我认为微服务架构是IT技术发展到一定阶段的必然产物,是未来企业架构的趋势。这些年IT技术发展太快,IT系统越来越复杂,已经远远超出了个人或者一个团队的理解力。这时候就需要用分而治之的思想,将复杂的事物拆分成可以理解的小事物,再将小事物互相连接起来,相互协作从而完成我们复杂的事物,这恰恰就是微服务架构的主要思想。所以如果要实现复杂的事物,微服务架构是首选;另外在一些需要敏捷开发、快速交付的场景都很适合。

:分布式服务为何不适用微服务架构? 田向阳:这要从三个方面来说, 首先,在微服务架构中数据都是微服务私有的,唯一可访问的方式就是通过API,不能再跨服务直接访问数据。 其次,微服务鼓励用最合适的技术做事,不同的微服务经常使用不同的数据库。比如NoSQL数据库,图数据库等,这些数据库大多不支持分布式事务。 最后,依据CAP理论,我们只能选择同时满足三个特性中的两个,而且在现代应用中P往往是必选的,所以我们只能在C和A之间选择,依据目前成功的经验可用性是更好的选择,而分布式事务保证强一致性,会在资源层面上进行锁定,这大大降低了可用性。

:在微服务架构下为什么会产生数据一致性的问题? 田向阳:微服务架构把一个复杂的问题分解成小的自治的微服务来实现,每个服务管理自己的数据。为了实现一个业务,需要很多个微服务一起来协作完成,协作的方式就是靠消息或者服务调用。但是由于硬件故障、网络故障(主要因素)等就会导致消息不能发送成功,出现业务只有部分的微服务实际完成,这就导致了数据不一致。

:如何做才能避免产生数据一致性的问题? 田向阳:传统的单体应用数据都在同一个数据库里,可以用ACID事务来实现一致性。但是在微服务架构中,数据分散在各个独立的微服务里,理论上说是不可能完全避免数据不一致的问题的。但是从目前的成功经验来看,大部分场景下保持强一致性都不是严格必须的,这时候我们可以通过实现一些模式,让我们的数据实现最终一致性。

:如果产生了数据一致性的问题,可以采用哪几种办法来解决?哪种方法是最推荐的? 田向阳:实现最终一致性有三种模式,可靠事件模式、补偿模式、TCC模式。简单的说可靠事件模式就是保证消息一定被投递到接收的服务;补偿模式相对更悲观,只要遇到异常的服务会撤销已经完成的服务;TCC模式可以理解为优化的补偿模式,在TCC模式如果没有明确收到最终的Confirm,所有服务最终都会被Cancel。 但三种模式都有各自的优缺点,都有各自最适合的场景,单从业务效率来说,可靠事件模式会更优一些。

:普元可以从哪些方面帮助用户解决数据一致性的问题? 田向阳:要很好的解决数据一致性问题需要从设计源头上就要考虑,比如服务拆分、该使用什么模式保证一致性等,而普元在多年的实践中积累了很多数据一致性方面的宝贵经验,可以帮助用户做出合理的设计,另外普元的新一代架构也实现了一致性框架,可以帮助客户提高实施效率。

公开课报名链接:http://edu.csdn.net/huiyiCourse/detail/177

相关资源:带音效新年烟花动画特效-HTML-代码
转载请注明原文地址: https://www.6miu.com/read-2400169.html

最新回复(0)