返回顶部
首页 > 资讯 > 数据库 >如何分解单体式数据库以实现微服务
  • 677
分享到

如何分解单体式数据库以实现微服务

2024-04-02 19:04:59 677人浏览 独家记忆
摘要

这篇文章主要讲解了“如何分解单体式数据库以实现微服务”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何分解单体式数据库以实现微服务”吧!按服务模式的数据库在

这篇文章主要讲解了“如何分解单体式数据库以实现微服务”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何分解单体式数据库以实现微服务”吧!

按服务模式的数据库

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

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

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

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

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

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

分离服务和表

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

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

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

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

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

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

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

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

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

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

  • 键值数据库

  • 文档存储数据库

  • 图形数据库

  • 基于列的数据库

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

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

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

感谢各位的阅读,以上就是“如何分解单体式数据库以实现微服务”的内容了,经过本文的学习后,相信大家对如何分解单体式数据库以实现微服务这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

您可能感兴趣的文档:

--结束END--

本文标题: 如何分解单体式数据库以实现微服务

本文链接: https://lsjlt.com/news/62018.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何分解单体式数据库以实现微服务
    这篇文章主要讲解了“如何分解单体式数据库以实现微服务”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何分解单体式数据库以实现微服务”吧!按服务模式的数据库在...
    99+
    2024-04-02
  • 如何把单体式应用拆解成微服务?【上】
    微服务是当下最流行的应用架构技术了,它跟容器服务、DevOps合称云时代的三剑客,可以帮我们化解业务发展过快导致的产品迭代压力,让我们可以自由选择最适合团队的技术栈,让系统能够承载互联网海量用户的访问,让我们可以更加轻松地运维大型的互联网系...
    99+
    2023-06-05
  • 数据库容器化的进化:从单体到微服务
    单体数据库架构 单体数据库应用程序将所有功能集成在一个单一的容器中,包含数据库引擎、应用程序代码和数据。 优点:简单易部署,适合小型项目。 缺点:扩展性差,难以维护和升级。 微服务数据库架构 微服务架构将数据库拆分成多个相互连接的容...
    99+
    2024-04-02
  • 如何在Aurora数据库中实现分布式事务
    在Amazon Aurora数据库中实现分布式事务可以通过以下步骤实现: 使用Aurora Serverless或Aurora G...
    99+
    2024-04-02
  • php+thinkphp6实现数据库分库(单服务器或多服务器)
    php+thinkphp6实现数据库分库(单服务器或多服务器) 一、问题简介 开发过程中遇到数据分库问题,以地域为划分(本省和外省),以下是两种解决方案。 二、单服务器多数据库 配置数据库连接:在应...
    99+
    2023-09-11
    数据库 服务器 php
  • 如何使用PHP微服务实现分布式数据存储和检索
    引言:随着互联网技术的不断发展,数据的规模也在迅速增长。传统的数据存储和检索方式往往面临着各种限制,例如单机存储容量限制、性能瓶颈、单点故障等等。为了解决这些问题,微服务架构逐渐兴起,并逐渐应用于各个领域。本文将介绍如何使用PHP微服务来实...
    99+
    2023-10-21
    数据检索 PHP微服务 分布式数据存储
  • 数据库中如何实现分库分表
    这篇文章将为大家详细讲解有关数据库中如何实现分库分表,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 分片是解决数据库存储容量限制的直接途径。分片包括垂直分片与水平分片两...
    99+
    2024-04-02
  • 一个微服务系统如何实现兼容oracle数据库
    一.背景 很多时候我们的系统往往使用的是MySql数据库,却突然遇上要使用oracle数据库了,这时候就要考虑给系统做兼容多种数据库了。 二.步骤 1.在配置文件或者配置中心对应的服务配置文件里配置对应的数据源,配置哪个数据库,你的系统就...
    99+
    2018-04-16
    一个微服务系统如何实现兼容oracle数据库
  • Go实现简单的数据库表转结构体详解
    目录前言设计过程迭代升级前言 码上源码 package main import ( "database/sql" "fmt" _ "github.com/go-sql-driv...
    99+
    2023-01-10
    Go数据库表转结构体 表转结构体
  • Vue单页式应用Hash模式下如何实现微信分享
    这篇文章将为大家详细讲解有关Vue单页式应用Hash模式下如何实现微信分享,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体如下:前端微信分享的基本步骤:一.绑定域名:先...
    99+
    2024-04-02
  • 如何实现微服务前端数据加载
    这篇文章主要讲解了“如何实现微服务前端数据加载”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何实现微服务前端数据加载”吧!目前在不少团队里已经逐步实践落地...
    99+
    2024-04-02
  • 如何通过AmazonAurora实现数据库的分布式事务处理
    Amazon Aurora是一个关系型数据库服务,其支持分布式事务处理。要通过Amazon Aurora实现数据库的分布式事务处理,...
    99+
    2024-04-09
    AmazonAurora
  • 数据库分布式事务的实现原理!
    事务是数据库系统中非常有趣也非常重要的概念,它是数据库管理系统执行过程中的一个逻辑单元,它能够保证一个事务中的所有操作要么全部执行,要么全不执行;在 SOA 与微服务架构大行其道的今天,在分布式的多个服...
    99+
    2024-04-02
  • Redis如何实现数据库读写分离详解
    前言 Redis是一种NoSQL的文档数据库,通过key-value的结构存储在内存中,Redis读的速度是110000次/s,写的速度是81000次/s,性能很高,使用范围也很广。Redis是一个key-...
    99+
    2024-04-02
  • PHP如何实现MySQL数据库分表
    本篇内容介绍了“PHP如何实现MySQL数据库分表”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、MySQL分表的概念MySQL分表是将一...
    99+
    2023-07-06
  • PHP如何实现MySQL数据库分区
    本篇内容介绍了“PHP如何实现MySQL数据库分区”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、MySQL数据库分区MySQL数据库分区...
    99+
    2023-07-06
  • SpringCloud如何实现微服务数据权限控制
    这篇文章将为大家详细讲解有关SpringCloud如何实现微服务数据权限控制,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。举个例子:有一批业务员跟进全国的销售订单。他们被按城市进行划分,一个业务员跟进3个...
    99+
    2023-06-21
  • 如何实现mysql的数据库简单回复
    这篇文章将为大家详细讲解有关如何实现mysql的数据库简单回复,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 bin/mysql -uroot -hlocalhost ...
    99+
    2024-04-02
  • MySQL数据库分布式事务XA的实现原理分析
      1 原理   关于MySQL数据库的分布式事务XA,分布式事务实现的原理,可见[3];关于MySQL XA的说明,可见[1][2]。   MySQL XA分为两类,内部XA与外部XA;内部XA用于同一...
    99+
    2024-04-02
  • MySQL如何实现清空分区表单个分区数据
    这篇“MySQL如何实现清空分区表单个分区数据”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQL如何实现清空分区表单个...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作