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

简介: 分治策略 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. 算法导论
目录
相关文章
|
10月前
|
缓存 负载均衡 监控
微服务架构下的电商API接口设计:策略、方法与实战案例
本文探讨了微服务架构下的电商API接口设计,旨在打造高效、灵活与可扩展的电商系统。通过服务拆分(如商品、订单、支付等模块)和标准化设计(RESTful或GraphQL风格),确保接口一致性与易用性。同时,采用缓存策略、负载均衡及限流技术优化性能,并借助Prometheus等工具实现监控与日志管理。微服务架构的优势在于支持敏捷开发、高并发处理和独立部署,满足电商业务快速迭代需求。未来,电商API设计将向智能化与安全化方向发展。
545 102
|
存储 缓存 数据库
数据库数据删除策略:硬删除vs软删除的最佳实践指南
在项目开发中,“删除”操作常见但方式多样,主要分为硬删除与软删除。硬删除直接从数据库移除数据,操作简单、高效,但不可恢复;适用于临时或敏感数据。软删除通过标记字段保留数据,支持恢复和审计,但增加查询复杂度与数据量;适合需追踪历史或可恢复的场景。两者各有优劣,实际开发中常结合使用以满足不同需求。
1172 4
|
6月前
|
SQL 存储 监控
SQL日志优化策略:提升数据库日志记录效率
通过以上方法结合起来运行调整方案, 可以显著地提升SQL环境下面向各种搜索引擎服务平台所需要满足标准条件下之数据库登记作业流程综合表现; 同时还能确保系统稳健运行并满越用户体验预期目标.
347 6
|
7月前
|
SQL 关系型数据库 MySQL
MySQL数据库连接过多(Too many connections)错误处理策略
综上所述,“Too many connections”错误处理策略涉及从具体参数配置到代码层面再到系统与架构设计全方位考量与改进。每项措施都需根据具体环境进行定制化调整,并且在执行任何变更前建议先行测试评估可能带来影响。
1655 11
|
8月前
|
缓存 关系型数据库 MySQL
MySQL数据库性能调优:实用技术与策略
通过秉持以上的策略实施具体的优化措施,可以确保MySQL数据库的高效稳定运行。务必结合具体情况,动态调整优化策略,才能充分发挥数据库的性能潜力。
336 0
|
9月前
|
缓存 监控 API
电商API的微服务架构优化策略
随着电商快速发展,API成为连接用户、商家与系统的核心。本文探讨微服务架构下电商API的优化策略,分析高并发、低延迟与数据一致性等挑战,并提供服务拆分、缓存异步、监控容器化等实践方案,助力构建高性能、高可用的电商系统,提升用户体验与业务效率。
237 0
|
12月前
|
关系型数据库 MySQL 大数据
大数据新视界--大数据大厂之MySQL 数据库课程设计:MySQL 数据库 SQL 语句调优的进阶策略与实际案例(2-2)
本文延续前篇,深入探讨 MySQL 数据库 SQL 语句调优进阶策略。包括优化索引使用,介绍多种索引类型及避免索引失效等;调整数据库参数,如缓冲池、连接数和日志参数;还有分区表、垂直拆分等其他优化方法。通过实际案例分析展示调优效果。回顾与数据库课程设计相关文章,强调全面认识 MySQL 数据库重要性。为读者提供综合调优指导,确保数据库高效运行。
|
存储 NoSQL MongoDB
微服务——MongoDB常用命令1——数据库操作
本节介绍了 MongoDB 中数据库的选择、创建与删除操作。使用 `use 数据库名称` 可选择或创建数据库,若数据库不存在则自动创建。通过 `show dbs` 或 `show databases` 查看所有可访问的数据库,用 `db` 命令查看当前数据库。注意,集合仅在插入数据后才会真正创建。数据库命名需遵循 UTF-8 格式,避免特殊字符,长度不超过 64 字节,且部分名称如 `admin`、`local` 和 `config` 为系统保留。删除数据库可通过 `db.dropDatabase()` 实现,主要用于移除已持久化的数据库。
744 0
|
算法 NoSQL Java
微服务架构下的接口限流策略与实践#### 一、
本文旨在探讨微服务架构下,面对高并发请求时如何有效实施接口限流策略,以保障系统稳定性和服务质量。不同于传统的摘要概述,本文将从实际应用场景出发,深入剖析几种主流的限流算法(如令牌桶、漏桶及固定窗口计数器等),通过对比分析它们的优缺点,并结合具体案例,展示如何在Spring Cloud Gateway中集成自定义限流方案,实现动态限流规则调整,为读者提供一套可落地的实践指南。 #### 二、
472 3
下一篇
开通oss服务