10-02 单元化架构核心问题与概念

news2024/9/21 2:43:54

单元化架构产生的原因

  • 应对增长
    传统架构无法处理日益增长的互联网用户需求
  • 扩容
    需要新架构更近一部提升了系统的扩展能力
  • 系统稳定性
    新架构需要高可用、相对独立和故障隔离使整体系统更稳定
  • 灰度发布
    系统和组件都纳入版本管理,按需部署进行灰度发布

核心问题

  • 应用扩展性
    • 应用由单体进化到分布式
    • 应用扩展达到上限
    • 数据库无法支撑应用层的扩展
  • 数据中心扩展性
    • 单数据中心上限受物理因素限制
    • 系统需求超过单数据中心如何扩展
    • 应用如何在多数据中心灵活切换
  • 容错性
    • 应用
      • 组件冗余
      • 数据冗余
      • 时间冗余(重试)
    • 数据中心
      • 系统冗余(多地部署)
      • 数据冗余(数据复制)

单元化架构进化史

分层(Layer)架构

  • 系统以微服务的形式满足内外的业务需求
  • 以SOA或微服务架构为技术指导原则来构建各种服务
  • 按照特定规则将不同微服务分配到不同层,并定义层与层之间的依赖(接口)
  • 层自主权高、逻辑清洗、单向依赖,满足大部分系统需求
  • 架构层的扩展性上线受许多因素制约
    在这里插入图片描述

分段(Segment)架构

  • Agile开发方式、虚拟化和容器化可以在同一架构层中通过隔离和自主权划分为更细粒度的逻辑段(Segment)
  • 根据业务能力,在每一层中将不同组件划分到不同段中
  • 实现手段
    • Runtime partitioning
    • Multi-tenancy
    • Platform as a service
  • 分段架构无法实现一个自由扩展的、自包含的去中心化系统
    在这里插入图片描述

单元化架构

  • 将系统按数据特征和功能垂直地划分为一个个单元
  • 一个单元就是一个能完成所有业务操作的自包含集合
    包含业务所需的所有服务,数据及资源
  • 一个单元可以被独立地部署、管理及监控
    部署在一个或多个数据中心,提升整体系统的扩展上限
  • 单元化架构下,系统仍然分层
    • 层的任意组件都属于且仅属于统一单元
    • 上层调用下层时仅依赖于本单元内的层

在这里插入图片描述

单元化架构成员介绍

组件

  • 组件时单元化架构里最小的原子单位
  • 一个组件就是代表一组业务功能或服务
  • 组件自定义范围和形态,在其定义域内独立运行
  • 组件依赖于其他组件,也可以被其他组件依赖

单元与组件

  • 一个单元由一个或多个组件组成
  • 一个单元就是一组从设计到实现被分配到一个部署单位的组件
  • 一个单元就是一个可以被构建、部署和管理的不可分割的完备组件

名称和版本

  • 所有单元都必须被命名,且为全局唯一
  • 命名的主要作用是为后续发布和管理
  • 单元也会迭代和金华,必须以版本管理的形式来控制
  • 单元内的组件也必须被命名和版本化管理

独立性

  • 所有单元必须是独立的,才能达成容错、容灾
  • 所有单元是可以被独立部署
  • 设计单元时,各单元功能是独立的
    • 逻辑无重叠
    • 避免不必要的依赖

完备性

  • 一个业务功能在一个单元内完成,避免跨单元功能
  • 按逻辑划分为单元,相关业务场景应置于同一单元,达成逻辑完备
  • 一个单元能提供的功能,其所需服务和数据都要划分到同一单元内

独立部署

  • 一个单元就是一个可以被独立部署的组件
  • 设计单元的最终目的是该单元独立部署
  • 三级迭代
    • 单元内各组件可以独立迭代
    • 各个单元可以独立迭代
    • 系统作为多个单元的集合可以整体迭代

单元内外通信

  • 一个单元由一组或多组组件构成,并对外声明其功能
  • 单元的功能必须提供某种网络访问接口,内部的组件不能直接暴露,只能通过统一的ingress对外提供服务
  • 如果单元对外界有依赖,必须通过egress进行访问
  • 单元内的组件可以通过允许的通信协议互相通信

何时使用单元化架构:突破扩展上限

  • 系统能力或用户数发展至单机房或单数据中心成为瓶颈
  • 多机房部署而不改造架构,引起的跨机房调用性能降低
  • 数据库主库单点,连接数有限,不能支持应用的持续发展
  • 系统所服务的用户数量超过了阈值,单数据中心无法支撑起增长
    超十亿用户微信、支付宝、Google、Facebook、Whatsapp等

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

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

相关文章

成都待慕电商:抖音百亿现金扶持商家

新京报贝壳财经讯5月16日,抖音电商在广州举办第三届生态大会。抖音电商总裁魏雯雯透露,过去一年,抖音电商GMV(商品交易总额)同比增长80%,其中,货架场景GMV占比达30%,平台售出超300亿…

公司新招了个字节拿36K的人,让我见识到了什么才是测试扛把子......

5年测试,应该是能达到资深测试的水准,即不仅能熟练地开发业务,而且还能熟悉项目开发,测试,调试和发布的流程,而且还应该能全面掌握数据库等方面的技能,如果技能再高些的话,甚至熟悉分…

【目标检测】基于yolov5的交通标志检测和识别(可识别58种类别,附代码和数据集)

写在前面: 首先感谢兄弟们的订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。 文末附项目代码和数据集,请看检测效果: 1. 介绍 YOLOv5是一种用于目标检测的深度学习算法,它能够在高速和高精度的情…

Spring中的@Value注解详解

Spring中的Value注解详解 概述 本文配置文件为yml文件 在使用spring框架的项目中,Value是经常使用的注解之一。其功能是将与配置文件中的键对应的值分配给其带注解的属性。在日常使用中,我们常用的功能相对简单。本文使您系统地了解Value的用法。 Value…

人工智能的新时代:讯飞星火大模型Vs ChatGPT

近日,科大讯飞召开了星火认知大模型成果发布会,会上表示讯飞星火大模型将突破开放式问答,对标ChatGPT,在中文能力上超过ChatGPT,在英文能力上与ChatGPT相当。对此,你怎么看? 一、你有使用过这种…

在 Golang 中执行 Shell 命令

原文标题:Executing Shell Commands in Golang 作者:Soham Kamani 之前自己也写过 os/exec 包执行 Shell 命令的文章,但是没有这篇讲的详细,感兴趣可以看看,点此处。 在本教程中,我们将学习如何在 Golang …

融云 WICC 2023 定档!「出海嘉年华」穂城来袭!

集赞获纸质版《作战地图》 阔别一年,通信行业年度盛会 WICC 即将重磅回归。移步【融云全球互联网通信云】回复“地图”免费领 6 月 2 日(周五),融云与白鲸出海联合主办、以“聚势突围,布局全球”为主题的“WICC 社交…

进程线程常见面试题及基础知识

1 进程 我们编写的代码只是一个存储在硬盘的静态文件,通过编译后就会生成二进制可执行文件,当我们运行这个可执行文件后,它会被装载到内存中,接着 CPU 会执行程序中的每一条指令,那么这个运行中的程序,就被…

一起内核线程异常占用CPU资源的排查过程

1、软硬件环境 硬件: NXP LS1043A 4核 cortex-A53 软件: linux 5.10.35 2、问题现象 最近有个产品要把内核从4.19升级到 5.10.35版本,产品在内核版本4.19工作正常,升级到5.10.35以后,产品在不接任何外设,…

【基础1】SQL 数据库分类 代码建库、代码修改属性 代码建表 代码修改数据表属性 代码为数据表插入信息 数据的修改与删除

目录 数据库基础 代码建库 数据完整性 代码建表 数据库基础 系统数据库:master、model、tempdb、madb数据库文件的组成:【数据文件可以放在不同的文件组里】 主数据文件:*.mdf 主数据文件只能有一个次要数据文件:*.ndf日志文…

DolphinScheduler 集群模式部署

文章目录 DolphinScheduler 集群模式部署一、集群规划1、前置准备工作2、解压DolphinScheduler 安装包3、创建元数据库及用户 二、配置一键部署脚本1、初始化数据库2、一键部署 DolphinScheduler3、DolphinScheduler 启停命令 DolphinScheduler 集群模式部署 一、集群规划 集…

01.数据结构和算法概述

前言 数据结构是一个古老的课题。他与程序开发息息相关,但是我们日常开发中,好像很少让我们自己设计一个数据结构。只求程序能跑,并不太关注性能。但是它是我们软件开发人员的基本功,也是拉开普通程序员和高级程序员的一个门槛&a…

Selenium浏览器交互原理与应用,玩转Web自动化测试

目录 前言: 浏览器交互: Selenium的实现方式: Selenium WebDriver: WebDriver的等待机制: 总结: Web自动化测试: 前言: Web自动化测试是现代软件开发中必不可少的一个环节,它可以帮助开发人员快速自动…

ChatGPT4通道开放接入基于OPEN AI 平台你的任何APP 可一键接入AI 智能

你一定很好奇什么是 OPEN AI快速开发平台 顾名思义,开放的OPEN AI平台。 基于这个平台你的上层应用,如何 APP,小程序,H5,WEB, 公众号,任何一切终端都可以轻松接入,AI智能应用。 开发初衷 爆肝一周,我开源了ChatGPT 中文版接口&a…

Win11右键菜单选项变成英文了怎么恢复回来?

Win11右键菜单选项变成英文了怎么恢复回来?有用户在使用Win11系统的时候,遇到了右键菜单选项的一些选项变成英文的情况,导致自己的使用受到了影响。那么这个情况怎么去进行解决呢?来看看以下的解决方法吧。 方法一:直接…

零基础学网络安全?一般人我还是劝你算了吧

一、网络安全学习的误区 1.不要试图以编程为基础去学习网络安全 不要以编程为基础再开始学习网络安全,一般来说,学习编程不但学习周期长,且过渡到网络安全用到编程的用到的编程的关键点不多。一般人如果想要把编程学好再开始学习网络安全往…

mathtype公式符号显示不对

文章目录 问题解决方法结果 记录攥写论文遇到的问题及解决方法 问题 使用mathtype编辑公式过后,发现公式显示不对,出现两种问题: 1:部分符号变为方框 2:符号大小异常 例如: 解决方法 第一种&#xff1a…

KDZD5550系列电压击穿试验仪操作说明

一、产品概述 KDZD5550系列电压击穿试验仪根据国家GB1408.1-2006《绝缘材料电气强度试验方法》其作用可称为电气绝缘强度试验仪、介质强度测试仪等。其工作原理是:把一个高于正常工作的电压加在被测设备的绝缘体上,持续一段规定的时间,加在上…

优思学院|DOE试验设计在六西格玛项目的哪个阶段进行?

六西格玛DMAIC是一种用于现有流程改进的方法,其中包括五个阶段:定义阶段(D),测量阶段(M),分析阶段(A),改进阶段(I)和控制阶…

【C++动态内存管理】

目录 一、C/C内存分布二、C中动态内存管理2.1new/delete操作内置类型2.2new/delete操作自定义类型 四、new和delete的实现原理4.1内置类型4.2自定义类型 五、 定位new表达式(placement-new)六、总结 一、C/C内存分布 一张图重温一下C/C内存分布。 二、C中动态内存管理 C中的…