0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

分析探讨微服务迁移如何影响数据库管理和分解数据库的步骤

如意 来源:TechTarget中国 作者:邹铮 2020-10-12 14:43 次阅读

在从单体式架构迁移到微服务架构时,数据库通常是事后想法。有些人认为迁移仅涉及应用逻辑的重组,而底层数据保持不变。但是,这种做法可能会导致单体式服务和微服务的尴尬混合:分布式单体服务。

微服务模型使基础架构和数据存储发生深刻变化。在微服务模型中,从传统应用程序中拉出服务,并为其提供独立性,在这种情况下,团队也必须考虑其基础数据库,并将其分解为特定于服务的数据源。

让我们看一下微服务迁移如何影响数据库管理,并探讨分解数据库的步骤。

按服务模式的数据库

在微服务架构中,大型数据湖需要转型为分布式数据库,以匹配特定服务。这样做可在只需要访问原始数据库特定部分的各个服务间创建必要的关注点分离。这也可帮助管理自己服务集的团队维持所需的独立控制。

根据Praful Todkar建议的模型,分解单体数据库需要与其所支持的服务同时进行-有时称为按服务模式的数据库。这应该是逐步的过程,并要求团队:

从单体中分离出单个服务,并将流量路由到它;

分离相同数据库中的表,并将其与该服务匹配;

在该表旁边创建新的较小的数据库,并将流量路由到它;

从原始数据库中删除先前的数据和架构。

分离服务和表

在微服务迁移期间,重组整个数据库有点像在驾驶汽车的同时更换轮胎。这样做可能会导致各种故障,并增加丢失数据或破坏功能的机会。

正确的做法是,从小处着手,在旧架构与新微服务间进行逻辑分离。当你选择要从单体中移除的服务后,创建一个新数据表(或多个表),其中仅包含新服务所需的数据。

在此步骤中,明确的路由规则至关重要。首先团队需要将流量从单体应用程序重新路由到新的微服务。然后,他们必须将旧的单体数据库的部分转移到表中,这最终将构成新数据库的框架。所有这些都需要现代的联网功能,例如由Istio等工具实现的服务网格方法。

当将分离的表转换为新的分布式数据库时,奇偶校验也至关重要。请确保新旧数据库中的数据已完全同步。在确认数据奇偶校验后,从以前的数据库中删除表和旧数据。

使用模式是便于管理,但不能过于依靠

模式是元数据集,用来描述数据库内数据的结构。有些团队更喜欢按模式整理数据,为每个服务创建独有的数据库模式,而不是整个数据库。这种方法有着无可争议的好处,因为要管理的数据库更少,并且它们之间的统一性更高。

但是,这种做法非常接近单体式数据湖模型,而我们正试图远离这种模型。如果有选择的话,即使看起来客观上适得其反,开发人员和架构师也会倾向于熟悉的方法。他们会做出妥协并遵循按服务模式做法。但是请记住:只要有可能,最好为每个服务都设置专用数据库,而不要依赖总体架构。

微服务最好的部分是,它使你可以将专用数据库分配给某些服务,而将共享数据库用于其他服务。该决定通常取决于服务的重要性及其处理的数据类型。团队结构也在这里发挥作用。有些服务要求管理它们的团队具有严格的自治权,而其他服务最好在多个团队之间共享。

为微服务选择最佳数据库 通常,单体是构建大型关系数据库上。当迁移到微服务时,为新架构选择数据库是重大决定。

现在有很多数据库选项,包括:

键值数据库

文档存储数据库

图形数据库

基于列的数据库

每种类型的数据库模型都适合特定类型的数据管理需求。例如,键值数据库和列式数据库最适合结构化数据,图形适合半结构化数据,而文档存储则最适合非结构化数据。

请记住,每种数据库类型的读写速度都不同,围绕不同数据库的供应商工具也不同。在选择任何一种数据库类型或工具集前,请使用样本数据运行测试。例如,对于需要实时性能的服务,将需要具有强大内存性能的数据库。

尽管企业正在迁移到微服务,但是关系数据库不会很快消失。出于各种原因,很多应用程序的某些部件在传统架构中运行时性能最佳,并且将依赖于旧的单体数据库来运行。好消息是微服务支持这种数据库管理的多类型模型。因此,不要仅仅因为其他服务正在迁移到微服务,而试图将应用程序的每个部分从单体中移出。
责编AJX

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据库
    +关注

    关注

    7

    文章

    3591

    浏览量

    63371
  • 分布式
    +关注

    关注

    1

    文章

    754

    浏览量

    74090
  • 微服务
    +关注

    关注

    0

    文章

    117

    浏览量

    7240
收藏 人收藏

    评论

    相关推荐

    labview连接mysql数据库

    =127.0.0.1;UID=root;DATABASE=mxjtest;PORT=3306";用以上语句为什么不行求解数据库用户root密码100200就连自己电脑上的数据库
    发表于 10-09 14:44

    lanbview怎么与数据库连接?

    在ODBC中设置与远程数据库SQL Server连接步骤:①在操作系统中通过“控制面板”选择“管理工具”中的“数据源(ODBC)”,“添加”创建新
    发表于 03-22 11:32

    labvies访问数据库

    方式都无法正确反映各类数据之间的密切联系,都不能有效的管理和组织数据。因此以数据库为中心,以数据管理为重点,构建的基于
    发表于 08-26 10:19

    数据库连接

    在利用 LabVIEW数据库工具包操作数据库之前,需要先连接数据库,这就像操作文件之前,先要打开文件一样。在这里我们利用UDL连接数据库。Microsoft设计的ODBC标准只能访问关
    发表于 06-29 21:29

    数据库管理

    如题:用labview操作access数据库做公司测试流程管控。因测试数据量大,数据生成多,现在accdb文件已经有50M了,现在发现数据库在本地操作都很快,但是放在远端
    发表于 11-08 16:58

    labview远程访问服务器上的数据库

    行了。远程访问时要求服务器必须要开启共享权限才能进行访问,可是这样一来,网络上的计算机都能直接访问到这个数据库文件了,而且只要电脑上装了access就能直接打开这个数据库文件并且对其进行操作,甚至好像还可
    发表于 05-27 14:50

    一张图学会数据库迁云最佳路径

    个相同的ECS实例为数据库的备机,主备之间通过Oracle Data Guard做数据同步,当主机宕机后,备机可以接管服务,切换时间通常在分钟级别。自建的数据库系统,计划将
    发表于 01-11 16:13

    数据库智能管理助手-CloudDBA

    优,检测参数的不合理或者准备的延迟的情况。演讲嘉宾简介:勋臣,阿里云RDS内核团队技术专家,目前阿里云CloudDBA专家系统开发。有着丰富的数据库开发管理和优化的经验。本次直播视频精彩回顾,戳这里
    发表于 05-30 17:20

    使用NoSQL数据库的原因

    很大的支出; 横向扩展和纵向扩展:关系数据库一般只能是纵向扩展,通过对单机服务器的性能换代增强而实现;而对于扩展到多个服务器, DBMS先天不足;(DBMS不是设计给集群使用的)对数据
    发表于 05-27 06:43

    解数据库的事务:ACID,CAP和一致性

    解数据库的事务,ACID,CAP和一致性
    发表于 05-04 16:25

    labview软件连接云数据库,实现文件管理,版本更新,物联网搭建~~~

    。方案B:在家里或者公司里搭建一个mySQL数据库,树莓派或者NAS都可以。我用的是QNAP的NAS,可以安装mySQL服务。如何外网访问呢?用花生壳软件,可以运行在花生棒或者树莓派上。我用的是花生棒
    发表于 12-28 09:44

    labview 发布web服务数据库连接出错

    我需要在一台服务器电脑上发布web服务,用于访问外网的云端数据库,然后局域网电脑通过http调用web服务方法获取数据。1.本地点开始,并用
    发表于 07-16 10:40

    最新国产数据库排名

    最新国产数据库排名,本篇文章约14000字,包含如下5部分内容:1.开篇2.国产数据库产品清单,包括产品名称,产品类别及厂商名称;3.国产数据库各产品概述,产品基本介绍、应用场景等;4.国产
    发表于 07-28 08:06

    什么是数据库

    什么是数据库数据库的主要特点有哪些?数据库的基本结构是由哪几部分组成的?
    发表于 09-23 09:09

    请问如何迁移mysql数据库至imx6ul核心板?

    因编写的qt程序的多个子线程需要同时并发访问数据库,所以sqlite数据库不能完全满足要求。所以请教各位朋友,如何迁移mysql数据库至imx6ul核心板。小弟拜谢。
    发表于 01-07 07:23