【行业观点】如何为微服务选择正确的数据库

微服务成为基础设施建设重点的原因在于它提供了服务分离、数据自主存储、小型化开发、测试可设置等优势,这有助于新应用程序更快地上市或迭代更新。此外,容器和容器编排工具也增加了对微服务的使用频率。
微服务的核心摒弃了传统架构,这使得它在服务之间共享一个单一的数据库。相比于传统的服务架构,微服务架构的每个微服务单元都具有独立、自主、专用的数据存储单元。
以一个电子商务解决方案为例,如图所示,该方案采用的服务包括:应用服务器、内容缓存、会话存储、产品目录、搜索发现、订单处理、订单跟踪和数据分析等等。现代电子商务解决方案不是使用大型单个数据库来存储所有的操作和交易数据,而是使用类似于图1所示的微服务架构,其中每个服务都有自己的数据库。

如何为微服务选择数据存储方式
“如何选择正确的数据存储方式”是设计微服务时最重要的问题之一。选择正确数据存储方式的第一步是确定微服务数据的性质。数据性质大致可以分为以下几类:
1. 短暂数据:缓存服务器就是短暂数据存储的一个很好的例子,它是一个临时数据存储,其目的是通过实时提供信息来改善用户体验。 微服务通常被调整为高性能,并且操作读取频繁,它没有耐久性要求,因为它不存储数据的主副本,但它又仍然必须保持高度可用,因为出现故障可能会导致用户体验不佳,从而影响收益。另外,故障也可能会导致“缓存冲突”问题,因为数据库爬网速度较慢,它们无法处理高频的访问,反而这可能导致完全可以避免的故障出现。
2. 瞬态数据:日志、消息和信号等数据通常以高容量和高速率实现传输。数据摄取服务通常在将其传递到适当的目的地之前处理该信息。 像这样的数据存储方式就需要支持高速写入。同时,支持时间序列数据和JSON的内置功能也是一个额外的好处。对瞬态数据的耐久性要求会高于短暂数据,而低于交易数据。
3. 操作数据:从用户会话收集的信息(如用户个人资料,购物车内容等)被视为操作数据。微服务器为用户提供更好的体验并进行实时反馈。即使存储在数据库中的数据不是永久的,但架构也必须最大程度地保留数据以实现业务连续性。这样就对于操作数据的持久性、一致性和可用性要求很高。一般而言,操作数据被放在特定的数据模型中,如JSON、图形、关系、键值等
4. 交易数据:从类似于付款处理和订单处理的交易收集到数据必须作为永久记录,存储在能够支持强ACID控制的数据库中。
在图1所示的电子商务应用中,我们可以对微服务及其各自的数据存储方式进行分类,如下表所示:

一致性和耐用性的可调度
为了达到优化微服务以获得高性能和数据耐久性要求,务必要确认所选数据库能够为当前数据类别提供适当的可调参数。对于高性能而言,纯内存的数据库是理想的选择。对于数据耐久性而言,让数据复制以及磁盘闪存耐久是最好的解决办法。例如,电子商务示例中的缓存服务器必须针对低延迟、高速读取操作进行优化。基于数据的性质,数据库不需要承受耐久性考验。另一方面,订单跟踪微服务重点是保持数据清晰和一致。
下表显示了如何基于对数据的原则性、一致性、隔离性和耐久性的要求来配置和调整每个微服务器的数据存储方式。

最后但也同样重要的是评估数据库可用的部署方法和编排选项,以确保能够让所有微服务在同一种环境中被部署和管理。以下是要查找的一些关键标准:
1. 作为容器的可用性:由于微服务大多都部署为由编排工具所管理的容器,所以当使用数据库作为容器时,可以获得很好的运营效率。
2. 云端/本地化选择:数据库是否可用于云端或本地,微服务器部署在哪里? 可用于两个部署选项的数据库为此提供了更大的灵活性。
3. 锁定供应商:组织有时会切换编排工具,因此确保数据库支持所有流行的编排工具对锁定供应商非常有帮助。

关于Ghostcloud
Ghostcloud(中文名:精灵云)坐落于成都天府软件园,是成都高新区重点扶持企业,国内首批从事容器虚拟化研发的企业,是西南地区唯一一家基于Docker的云计算服务商,为企业级行业客户提供针对互联网化、私有云管理平台、大数据业务基础架构的平台服务。
Ghostcloud因容器技术而生,以最新容器技术Docker为基础,为适应不同行业客户需求,全自主研发了一套调度引擎框架Newben,且全方位适配Kubernetes主流开源调度引擎,也是国内率先实现双调度引擎的企业,是一流的企业级容器云服务专家。Ghostcloud推出了企业级容器云PaaS/CaaS平台,命名为EcOS(EnterpriseContainer Operation System)。Ghostcloud将EcOS平台与微服务/DevOps相融合,运用至企业IT系统的全生命周期的开发、测试、运维及发布流程中,致力于为多个领域企业向“互联网+”转型提供针对互联网化、私有云管理平台、大数据业务基础架构的平台服务,帮助企业级客户降低成本、提升效率、简化运维及产品部署,并提升系统的可靠性和安全性。

时间: 2024-11-02 08:34:53

【行业观点】如何为微服务选择正确的数据库的相关文章

如何在微服务之间共享使用数据库

本文讲的是如何在微服务之间共享使用数据库,[编者的话]如何在微服务之间共享使用数据库?本文介绍了一个该领域很容易犯错的架构问题,并且提出了解决方案和反思. 几年前,我是一个团队的首席开发人员,该团队为客户端开发Java web应用程序.本文里我们称之为"项目A".我们在客户现场构建web应用,还有其他团队在相关项目上共同工作.因为我们在项目早期沟通合作一直很愉快深入,所以会定期在团队间交换软件的架构思想. 一天,一个新项目(项目B)启动了.该项目会由另外一个团队完成.我认为在这个新项目

微服务(Microservices)—Martin Flower【翻译】【转载】

本文转载自:http://www.cnblogs.com/liuning8023/p/4493156.html ---------------------------------------------------------------------------- 原文是 Martin Flower 于 2014 年 3 月 25 日写的<Microservices>. 本文内容 微服务 微服务风格的特性 组件化(Componentization )与服务(Services) 围绕业务功能的组

微服务、SOA和API对比与分析

本文讲的是微服务.SOA和API对比与分析[编者的话]对比微服务架构和面向服务的架构(SOA)是一个敏感的话题,常常引起激烈的争论.本文将介绍这些争论的起源,并分析如何以最佳方式解决它们.然后进一步查看这些概念如何与 API 管理概念结合使用,实现更敏捷.更分散化.更具弹性的企业架构. 1 简介 在对比微服务架构和面向服务的架构(SOA)时,几乎不可能在它们彼此的关系上达成一致意见.如果应用程序编程接口(API) 再加入混战,就会让理解它们的差异变得更加困难.一些人可能会说这些概念完全不同,它们

从多租户隔离到高可用,谈DaoShip微服务架构演进

本文根据DCOS联盟第3期线上分享整理而成   讲师介绍姜冲 DaoCloud高级软件工程师   Docker Contributor,负责公有云构建服务.DaoShip的设计与研发. 对微服务架构设计与实现有着丰富的理论与实践经验.     大纲:   正确构建镜像的目标和所需资源,以及如何规划和构建服务: 基于优良的微服务架构设计及网络层优化,为数十万用户的服务使用提供稳定高速的构建能力: 不同运营需求下的技术架构演进: 微服务带给客户的价值.   DaoShip 作为 DaoCloud S

设计事件驱动的微服务

事件驱动的微服务是一个未受到应有探讨的领域,在近日举行的μCon伦敦2017微服务大会上,Greg Young表达了这样的观点.同时,他还特别强调,不应该对所有的微服务都使用事件驱动模式.相反,他建议逐个服务进行考察,并将事件驱动模式运用到真正能从中受益的服务上. Greg Young是一名事件驱动专家,同时也是Event Store的首席架构师.他认为,在创建微服务系统时需要考虑的一个重要的设计问题是,应该每个微服务使用一个数据库,还是所有的微服务都访问同一个数据库.在存储状态时,比如使用一个

这个中秋,Docker与微服务更配呦!

回顾视频:https://yq.aliyun.com/edu/lesson/play/357 在本文中,阿里云技术专家李斌从微服务架构.如何利用Spring Cloud和Docker构建微服务应用.微服务应用部署到阿里云容器服务三部分分享了基于Docker的微服务实战经验.在演讲中,李斌不仅详细介绍了微服务.Spring Cloud.服务发现模式等概念,并且对部分配置代码也进行了详解. 以下为现场分享观点整理. 微服务架构 单体应用VS微服务 微服务顾名思义就是一些小服务,与之相对应的是单体应用

微服务和软件交付的4个原则

本文讲的是微服务和软件交付的4个原则[编者的话]本文介绍了使用微服务架构时需要考虑的问题和遵循的四个原则,对于从传统架构向微服务架构转型起到了很好的指导作用. [上海站|3天烧脑式微服务架构训练营]培训内容包括:DevOps.微服务.Spring Cloud.Eureka.Ribbon.Feign.Hystrix.Zuul.Spring Cloud Config.Spring Cloud Sleuth等. 微服务是一个杰出的架构,因为这种架构便于对软件系统进行管理.但实际情形是,有很多遗留的应用

利用微服务构建现代应用(二)

本文讲的是利用微服务构建现代应用(二),[编者的话]本文是如何用微服构建现代应用的第二部分,介绍了如何用MongoDB中实现微服务,在迁移到微服务之前需要考虑的问题以及使用MongoDB构建微服务架构的客户案例. 在上一篇博文中,我介绍了微服务的背景知识及其优势.本文将介绍如何使用MongoDB构建微服务以及在实施微服务的项目中应该要注意的问题. MongoDB如何实现微服务 企业要享受到微服务的好处需要一些基本的技术原则,其中最主要的是灵活的数据模型.冗余.自动化和可扩展性. 灵活的数据模型:

微服务架构核心:专注执行同一件事并做好

微服务有且仅有一种非常专项的功能,通过远程API来提供系统其余功能.举个例子:试想一下仓库的管理系统,这样的系统中微服务可能提供的一些功能有: 接收库存 计算新的库存该存到什么地方 计算在仓库内将库存运往正确放置点的路线 为仓库员工分配运送路线 接收订单 计算仓库内指定一组订单的拣货路线 为仓库员工分配拣货路线 以上这些功能(可能还会有更多)都是由单个微服务实现的.每个微服务都有单独的运行线程,并且可以独立于其他微服务进行部署.同样每个微服务都有自己的专用数据库,尽管每个微服务都会与其他微服务协