架构训练营笔记:可扩展设计

news2024/12/27 18:19:25

可扩展

复杂度模型

      业务复杂度:业务固有的复杂度,主要体现为难以理解、难以扩展,例如业务数量多(微信)、业务流程长(支付宝)、业务之间关系复杂(例如ERP)。

质量复杂度:高性能、高可用、成本、安全等质量属性的要求。

复杂度越高,架构设计越难。

复杂度应对之道 

 可扩展与可伸缩区别:

可扩展extensibility:系统适应变化的能力,包含可理解和可复用两个部分

可伸缩scalability:系统通过添加更多资源来提升性能的能力

其中可扩展:主要是拆分跟封装。

拆分:拆分的形容与拆分 粒度互相约束。

 内部复杂度:又称为“单体复杂度”,指单个对象内部的复杂度,可以用参与的开发人数来衡量单个拆分对象的复杂度。例如:3个人负责一个子系统/子模块是比较合理的,20个人来在同一个子系统上开发,则内部复杂度过高。

外部复杂度:指拆分后的多个对象之间的关系复杂度。可以用业务流程涉及对象数量来衡量外部复杂度。例如:一次用户请求需要5个子系统参与是比较合理的,如果需要20个子系统参与,则外部复杂度过高。

   平衡的取舍

1 内外平衡原则:

2 先粗后细原则:如果你把握不准,那么就先拆少一些,后面发现有问题再继续拆分。

封装复杂度模型

    预测变化的方式会决定封装模型如何设计!

预测第一原则-2年原则只预测2年内的可能变化,不要试图预测10年后的变化

预测第二原则-3次法则预测没有把握就不要封装,等到需要的时候重构即可。

封装的技巧

 

高性能设计

单机高性能

集群高性能

主要是包含: 任务分配、任务分解两部分

任务分配:

将任务分配给多个服务器执行。

【复杂度分析】

1)增加“任务分配器”节点,可以是独立的服务器,也可以是SDK

2)任务分配器需要管理所有的服务器,可以通过配置文件,也可以通过配置服务器(例如ZooKeeper)

3)任务分配器需要根据不同的需求采用不同的算法分配

关键点:包含运行形态、配置获取、算法 

案例:DNS、CDN、nginx等

任务分解

将服务器拆分为不同角色,不同服务器处理不同的业务。

任务分解比任务分配复杂。

关键点:包含任务拆分、运行形态、配置获取、算法  

 案例:

微信服务拆分、shardingjdbc 读写分离、zuul 网关等

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/740946.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于单片机的智能空调系统的设计与实现

功能介绍 以51单片机作为主控系统;LCD1602液晶显示当前水温,定时提醒,水量变化DS18B20检测当前水体温度;水位传感器检测当前水位;继电器驱动加热片进行水温加热;定时提醒喝水,蜂鸣器报警&#x…

「网络编程」应用层协议_ HTTP协议学习及深入理解

「前言」文章内容大致是应用层协议的HTTP协议讲解。 「归属专栏」网络编程 「主页链接」个人主页 「笔者」枫叶先生(fy) 「枫叶先生有点文青病」「句子分享」 俗话说,开弓没有回头箭,唯有箭折、箭落、箭中靶子三种结果而已。 ——江晓英《苏东坡&#xf…

开源代码分享(6)—考虑实时市场联动的电力零售商鲁棒定价策略(附matlab代码)

摘要:电力零售商作为连接电力批发市场与零售市场的桥梁,是电力市场化改革中的重要主体,其经营效率直接决定了市场化改革的成败。然而电力零售商在运营过程中面临着用电量需求和价格双重不确定性的市场风险,亟需通过优化市场行为以…

Qt实现画板绘制椭圆

Qt在窗体中绘图在paintEvent函数中进行,使用QPainter类进行窗体绘制 如果只是简单的在paintevent中向画布绘制椭圆,由于实时绘制的许多个椭圆重合在一起,就会出现下面的情况 你可以在每次绘制椭圆之前调用清空画布 myPix->fill(Qt::white);但是又会出现下面的情况,无法…

一篇万字博客带你入门layUI

今日金句 心里种花,人生才不会荒芜 文章目录 一、什么是layui二、layui、easyui与bootstrap的对比2.1 layui和bootstrap对比(这两个都属于UI渲染框架)2.2 layui和easyui对比 三、layui入门3.1 引入3.2 入门案例:点击弹出框3.3 经…

数学建模———层次分析法及其matlab语法,函数和代码实现

层次分析法思想登场 建模比赛中最基础的模型之一,其主要用于解决评价类问题(例如:选择那种方案最好,哪位运动员或者员工表现的更优秀。) 评价类问题字眼: 评价的目标是什么?达到这个目标有那…

flutter开发实战-dio文件下载实现

flutter开发实战-dio文件下载实现 在开发中,需要下载文件,这里使用的是dio dio 是一个强大的 Dart HTTP 请求库,支持全局配置、Restful API、FormData、拦截器、 请求取消、Cookie 管理、文件上传/下载、超时以及自定义适配器等。 一、引入d…

apache下载

Apache VS17 binaries and modules download php下载地址 PHP For Windows: Home windows.php.net - /downloads/releases/archives/ 历史版本下载 php下载 https://windows.php.net/downloads/releases/archives/php-5.6.37-Win32-VC11-x64.zip https://www.apachehaus.com/…

代码随想录day14

这里推荐这三道题先熟悉二叉树的三种遍历方式 144. 二叉树的前序遍历(中->左->右) 根左右。前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根节点,然后遍历左子树,最后…

如何在云中实现安全与合规的规模化?亚马逊云科技给出了答案

在亚马逊云科技,为满足客户不断变化的需求,亚马逊云科技持续创新与迭代,设计的服务能帮助客户满足最严格的安全和合规性要求。针对安全相关工作,亚马逊云科技服务团队与Amazon Security Guardians云守护者项目密切配合&#xff0c…

【计算机视觉】80 TB!58.5 亿!世界第一大规模公开图文数据集 LAION-5B 解读

文章目录 一、导读二、数据集背景信息2.1 图文对数据集2.2 图像数据集 三、LAION-5B有什么3.1 子集3.2 开源模型3.3 KNN index/web界面 四、LAION可以做什么任务4.1 图文匹配及多模态预训练4.2 生成任务4.3 分类任务4.4 其他任务 五、总结 一、导读 继去年 LAION-400M 这个史上…

Android Jetpack Compose多平台用于Android和IOS

Android Jetpack Compose多平台用于Android和IOS JetBrains和外部开源贡献者已经努力工作了几年时间来开发Compose Multiplatform,并最近发布了适用于iOS的Alpha版本。自然地,我们对其功能进行了测试,并决定通过使用该框架在iOS上运行我们的…

leetcode47. 全排列 II 回溯剪枝的细节问题

题目描述: 1、思路 作为回溯算法的经典问题,常用的方法是,每次dfs前先判断是否达到临界条件,满足条件则加入结果集并return。通过循环和dfs来构建树,查找出全部满足条件的集合。 例如本题,如1&…

dp动态规划详解下

dp动态规划详解上:https://blog.csdn.net/weixin_73936404/article/details/131527247?spm1001.2014.3001.5501 目录 dp动态规划详解上:https://blog.csdn.net/weixin_73936404/article/details/131527247?spm1001.2014.3001.5501 【案例1】 【题目描…

强度(极限强度、屈服强度)、韧性材料与脆性材料(韧性材料与脆性材料的强度、为什么脆性材料在压缩时比在拉伸时更坚固?)、材料的延展性、韧性、弹性

1.强度 强度(Strength)是材料可以承受的应力的量度,通常使用极限强度(Ultimate strength)和屈服强度(Yield strength)来定义材料的强度-极限。 材料的极限抗拉强度定义为在拉伸试验过程中达到的…

windows 编译libyuv

一、libyuv下载 git clone https://chromium.googlesource.com/external/libyuv 二、libjpeg-turbo下 git clone https://github.com/libjpeg-turbo/libjpeg-turbo.git 三、编译可以参考 BUILDING.md 需要环境: VS2019 CMake YASM 启动vs工具 编译&#xff1…

js模块化开发

◼ 到底什么是模块化、模块化开发呢?  事实上模块化开发最终的目的是将程序划分成一个个小的结构;  这个结构中编写属于自己的逻辑代码,有自己的作用域,定义变量名词时不会影响到其他的结构;  这个结构可以将自己…

SAP S4 Hana 下面ACDOCA 凭证行字段增强创建过程

网上找到这个类下面是可以新增增强的 现在需要在如下位置建立四代增强点 保存以后会出现下面的增强项 保存激活后,完成在源程序中增加了一个4代显式增强点.上面步骤只是在程序中建立了一个增强点,并没有执行什么动作,就相当于建立一个容器。如…

Python将Excel数字对应列的字母写成字典(json)

在日常的办公中,我们经常需要利用python去读写Excel类型的文件,有时候我们需要将每个数字代表的列的字母表现出来,那么我们可以利用Python实现,而且今天的代码可以根据自己的需求去任意的改变你想规定的长度 如,或者更长 a {1:…

1分钟搭建VPN服务器

1分钟搭建一个VPN服务器 VPN技术在保障网络通信安全和隐私上发挥着重要作用。IPsec VPN是其中一种常用的VPN模式。本文将介绍如何通过使用Docker来快速搭建IPsec VPN Server。 什么是IPsec VPN? IPsec即Internet Protocol Security,是一种用于保护互联…