分治策略(divide and conquer)-微服务与数据库水平拆分

本文涉及的产品
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 分治策略 divide and conquer 微服务 数据库 水平拆分

概述

分治法可以通俗的解释为:把一片领土分解,分解为若干块小部分,然后一块块地占领征服,被分解的可以是不同的政治派别或是其他什么,然后让他们彼此异化。

分治策略的关键三个步骤:

  1. 分解(divide):将问题划分为一些子问题。
  2. 解决(conquer):递归的求解子问题。
  3. 合并(combine):将子问题的解组合成原问题的解。

常见的分治策略算法:

  1. 归并排序
  2. 快速排序

但是今天我们以分治策略的角度来分析下微服务及微服务中的分层。

分治-微服务

概述

微服务就是一些小而自治的服务。
微服务的核心思想是把业务进行垂直拆分成一个个小的服务,每个小的服务处理单一的业务。

那么以分治策略的三个步骤来分析微服务应该是这样的:

  1. 分解

将一个大的按照动词和名词规则拆分成小的领域服务。

  1. 解决

每个小的领域服务解决掉该领域内的业务问题。

  1. 合并

合并分为两种情况:

  • 不需要多领域协作

单个领域服务就可以解决这个用户的问题。如果一个用户问题能在一个领域服务内解决,那么这个用户问题就不用合并。

  • 需要多领域协作

如果一个用户问题不能在一个领域服务内解决,那么就需要服务编排。服务编排可以在领域服务内编排,也可以新建服务层来编排。

分治图

  1. 领域服务内编排

1.png

一般都不会选择领域服务内编排,因为耦合太高。

  1. 服务层编排

2.png

通常选择服务层编排。

分治-数据库水平切分

概述

以分治策略来看待数据大表水平拆分。

  1. 分解

以业务的一个或多个维度将数据库表中的大表拆分为多个相同结构的小表来存储数据(期望是数据均匀分布)。

  1. 解决

拆分出来的小表在通过上层业务代码分别进行CURD。

  1. 合并

小表数据根据需要进行汇总计算后合入另一些小表中以满足业务需求。

分治图

3.png

更多

分治策略在现实生活中无处不在。

参考

  1. https://baike.baidu.com/item/%E5%88%86%E6%B2%BB%E6%B3%95/2407337
  2. 算法导论
目录
相关文章
|
3天前
|
监控 Java 持续交付
使用Java构建企业级微服务架构的策略与挑战
使用Java构建企业级微服务架构的策略与挑战
|
2天前
|
SQL 数据库 微服务
微服务03,最简单的Demo,我们每个服务不能重复开发相同业务,微服务数据独立,不要访问其他微服务的数据库,微服务的特点之一是提供不能功能的数据库互相分割,微服务需要根据业务模块拆分,做到单一职责,
微服务03,最简单的Demo,我们每个服务不能重复开发相同业务,微服务数据独立,不要访问其他微服务的数据库,微服务的特点之一是提供不能功能的数据库互相分割,微服务需要根据业务模块拆分,做到单一职责,
|
4天前
|
关系型数据库 分布式数据库 数据库
PolarDB,阿里云的开源分布式数据库,与微服务相结合,提供灵活扩展和高效管理解决方案。
【7月更文挑战第3天】PolarDB,阿里云的开源分布式数据库,与微服务相结合,提供灵活扩展和高效管理解决方案。通过数据分片和水平扩展支持微服务弹性,保证高可用性,且兼容MySQL协议,简化集成。示例展示了如何使用Spring Boot配置PolarDB,实现服务动态扩展。PolarDB缓解了微服务数据库挑战,加速了开发部署,为云原生应用奠定基础。
20 3
|
4天前
|
设计模式 弹性计算 监控
后端开发中的微服务架构:优势、挑战与实施策略
在现代软件开发中,微服务架构已成为一种流行的设计模式,特别是在后端开发领域。该架构风格通过将应用程序分解为一组小型、松耦合的服务,旨在提升可维护性、可扩展性和敏捷性。本文深入探讨了微服务架构的关键优势,面临的主要挑战,以及成功实施微服务的策略。通过引用业界案例和最新研究,文章提供了对微服务架构综合理解的视角,并讨论了如何在不断变化的技术环境中保持其有效性。
|
4天前
|
数据处理 数据库 索引
数据库索引策略如何影响数据的读取效率?
【7月更文挑战第3天】数据库索引策略如何影响数据的读取效率?
7 2
|
4天前
|
存储 数据处理 数据库
数据库索引策略如何影响数据更新操作的性能?
【7月更文挑战第3天】数据库索引策略如何影响数据更新操作的性能?
8 1
|
4天前
|
监控 关系型数据库 MySQL
数据库索引策略
【7月更文挑战第3天】数据库索引策略
9 1
|
5天前
|
敏捷开发 运维 监控
微服务将大型应用拆分成小型自治服务,每个服务专注单一功能,独立部署。
【7月更文挑战第2天】微服务将大型应用拆分成小型自治服务,每个服务专注单一功能,独立部署。起源于对单体架构局限性的应对,它促进了敏捷开发、技术多样性及高可伸缩性。但同时也增加了系统复杂度、数据一致性和运维挑战。实施涉及服务划分、技术选型、CI/CD及监控。Netflix、Uber和Spotify的成功案例展示了微服务在应对高并发和快速迭代中的价值。尽管挑战重重,微服务仍是构建现代应用的关键。
10 2
|
5天前
|
运维 API 数据库
微服务架构下的数据一致性挑战与解决策略
随着软件架构从单体应用向微服务架构的迁移,数据一致性问题成为开发和运维团队面临的一大技术挑战。本文旨在深入探讨在微服务环境下保持数据一致性的重要性、面临的难题以及采取的策略。通过分析事务管理的传统模式与现代方法的对比,结合具体的案例研究,本文提供了一套综合性解决方案,以帮助读者理解并应对分布式系统中的数据一致性问题。
|
6天前
|
负载均衡 Java Nacos
Spring Boot与微服务治理框架的集成策略
Spring Boot与微服务治理框架的集成策略

热门文章

最新文章