如何为微服务选择数据库

作者

JffCarpntr,InfoWorld

翻译

Jackyrong

你的微服务架构需要多种数据模型。你是应该选择混合持久化呢还是多模型数据库?

在过去的十年,大规模的分布式系统呈现爆炸式增长。这一趋势促使在数据库领域产生了一股巨大的创造力,这在软件业的历史上无疑是没有先例的。其结果是诞生了一个健康和充满竞争的数据库市场,我们可以因此在大量的平台中各取所需。但是我们应该如何抉择?

在本文中,我们将探讨如何根据应用程序去选择合适的数据库模式(可以有一种以上的选择)。我们还将分析对数据模式的选择要如何帮助确定在数据层中将选用哪些技术。

云架构,NoSQL和微服务架构

随着开发人员开始创建可扩展的Wb应用,历史上在数据架构上占主导地位的关系型数据库所面临的压力日益凸显。我们开发了非常流行的社交应用,并开始将越来越多的设备连接到物联网(IoT)。用户大量的读取和写入数据要求我们必须扩展数据层,从而诞生了新型的数据库来满足这些高可扩展性需求。

在许多情况下,这些新的数据库“NoSQL”或“非关系”的解决方案,所基于的数据模型和传统的关系数据库模型不同。NoSQL数据库包括有文档型、键值对型(ky-valu)、列式数据库甚至图数据库。通常情况下,这些数据库牺牲了一些关系数据库的常见的的特性,如强一致性、ACID事务特性和Join连接。

与此同时,和数据库技术的变革一样,在本世纪初的SOA(面向服务的架构),正逐渐演变为微服务架构的体系架构,许多企业也开始逐渐抛弃重量级的SOA体系架构如企业服务总线(ESB),并倾向使用“去中心化”的架构方法。微服务架构的魅力在于其开发、管理和扩展服务都是相对独立的。这给了我们很多在实施方面的灵活性,包括基础架构技术,如数据库。

举个例子,我们假设正在为微服务架构做开发工作,并期待着大规模的可扩展性的需求。无论这个项目是一个新的应用还是对现有应用的重构,我们都有机会针对数据库做出新的选择。

混合持久化(Polyglotprsistnc)

微服务架构风格的一大关键优势是持久性的封装。我们可以根据每个服务的需要,去选择不同的持久化技术。根据每种数据类型的特点而去选择数据存储的方法,被称为混合持久化,这一术语起初是由MartinFowlr等人推广起来的。混合持久化和微服务架构可谓是天作之合。

下图中,展示了一系列的微服务,以及我们如何为每个服务选择不同的数据模式。我不想在本文中,为每种类型的数据库去选择合适的用例。我的意图是要突出各类型数据库的优势,以及为什么混合持久化的方法是值得称道的。

其中,开发服务A的团队,因为该服务是基于大规模数据管理的核心应用,可能使用如ApachCassandra这样的表格模型数据库。例如,一个零售应用库存应用,可能很适合使用ApachCassandra。Cassandra提供了一系列协调机制工具,如可调一致,批处理和轻量级的事务机制,可以作为完整ACID事务机制的替代。

服务B支持用众所周知的关键字查找值的方式,例如针对产品目录的描述性数据。对于键值存储模型来说,这是一个很好的例子,在这里,我们通过一个众所周知的键值(如产品ID)查找一系列的数据。很多内存缓存都使用键值对数据模式去支持大规模的快速读取。

服务C可能主要







































中医治疗白癜风的医院
复方木尼孜其颗粒作用是什么



转载请注明:http://www.xcqg58.com/lsqy/8321.html