架构扩展性

news/2025/2/12 23:47:23/

架构扩展性:应用扩展 数据扩展 组织扩展 流程扩展

核心方法论–扩展立方体:
x轴:无脑克隆

				y轴:功能分割z轴:客户分割

扩展立方体在应用扩展的应用:
x轴:横向克隆
对于无状态的应用,多节点克隆复制
负载均衡器,控制业务负载流向
有状态应用,状态剥离(比如Session的处理)

			y轴:服务分割 子系统 模块 聚合拆分后台数据相应进行y轴分割z轴:用户UserID分割,多节点水平复制地理位置分割,Set单元化产品ID分割,SPU/SKU

应用扩展–套娃组合法:
在这里插入图片描述
扩展立方体在数据扩展的应用:
x轴:水平复制
传统SQL,读写分离,1写多读
NoSql 多副本replica
缓存读取,横向扩展
y轴:库表分割
配合应用Y轴分割
表、库享有独立数据库集群/节点
微服务、康威定律
z轴:hash取模
支持各种key:user spu sku
传统sql 分表分库
Nosql 多shard/chunk分片
在这里插入图片描述
组织扩展的应用:
目标一致
人员数量少
配合应用和数据的Y轴扩展
流程扩展的应用:
CMMI软件成熟度模型
在这里插入图片描述
SMART原则:
在这里插入图片描述
在这里插入图片描述

扩展性实现方案:
如何多快好省实现扩展性:
多:分布式架构设计、横向扩展
快:X轴无脑克隆和复制
应用:无状态、容器化、Serverless无服务器化
数据:多副本、读写分离,冷热分离
中间件:缓存、最终一致性
工具:SQL CDC技术

			好:Y轴服务和数据分割服务拆分、界限上下文交互服务发现、服务治理、负载均衡、服务追踪省:z轴哈希取模特征分割应用:负载均衡 客户端Ribbon 服务端Nginx k8s Service 中间件ESB API Gateway数据:分布式多片架构 分库分表 客户端sharding-jdbc 数据库Spanner  中间件(Mycat aurora)

单体应用从100节点到10000节点的扩展历程:
在这里插入图片描述
扩展到10000个:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/news/1388990.html

相关文章

React——关于表单元素

关于React 处理表单元素,有两种方式: 受控组件【推荐】非受控组件 受控组件-表单元素(状态可变,react的state控制) HTML中表单元素是可输入的,即表单用户并维护着自己的可变状态(input 的 value&#xff0…

链表取反、查找中间值、删除倒数第几个值、删除链表指定数据的结点、插入排序——数据结构——day02

建议和上一篇一起看 链表取反 void reverse_link(LINK_LIST *plist) {if (is_empty_link(plist)) //首先查看链表是否为空{return ;}LINK_NODE *pinsert NULL;LINK_NODE *ptmp plist->phead;plist->phead NULL;while (ptmp ! NULL){pinsert ptmp;ptmp ptmp->pn…

webpack5零基础入门-12搭建开发服务器

1.目的 每次写完代码都需要手动输入指令才能编译代码,太麻烦了,我们希望一切自动化 2.安装相关包 npm install --save-dev webpack-dev-server 3.添加配置 在webpack.config.js中添加devServer相关配置 /**开发服务器 */devServer: {host: localhos…

写了几个难一点的sql

写了几个难一点的sql SELECT bn.id AS book_node_id, t.version_id, bn.textbook_id, s.id AS subject_id, s.stage_id, COUNT( CASE WHEN d.document_type_id 1 AND d.scope IS NULL AND p.document_id IS NOT NULL THEN 1 END ) AS type_1_count, COUNT( CASEWHEN d.docume…

【重温设计模式】状态模式及其Java示例

状态模式的基本概念 在编程世界的大海中,各种设计模式就如同灯塔,为我们的代码编写指明方向。其中,状态模式是一种行为设计模式,它让你能在一个对象的内部状态改变时改变其行为,使得对象看起来就像改变了其类一样。这…

计算机网络——协议层次及服务模型

计算机网络中的协议层次是指将网络功能划分为不同的层次,每个层次负责特定的功能,并通过协议进行通信。 一、为什么要分层 分层是设计/讨论复杂系统的有效方法。分层使得复杂系统概念化,结构清晰便于标示网路组件,以及描述其相互…

使用uniapp,uni-data-select组件时,内容长度没超过容器宽度时候虽然能显示全内容但是数据后边会出现三个点,逼死强迫症

项目场景: 微信小程序开发,使用uniapp,uni-data-select组件时,内容长度没超过容器宽度时候虽然能显示全内容但是数据后边会出现三个点,逼死强迫症 解决方案: 找到组件的源代码,然后删除那三个…

【研发管理】产品经理-基础认知

导读:产品经理(Product Manager)是一个负责产品的全周期管理的职位,他们不仅参与产品的设计、开发、推广和销售,还涉及到产品的市场调研、用户需求分析、竞争分析、产品规划、产品测试以及后续的产品迭代等多个环节。产…