系统架构设计之云原生架构

news2024/9/27 23:35:12

云原生架构

  • 一. 云原生技术介绍
  • 二. 传统架构模式 VS 云原生架构模式
  • 三. 云原生架构反模式
  • 四. 云原生架构设计原则

在这里插入图片描述

其它相关推荐:
软考系统架构之案例篇(架构设计相关概念)
系统架构之微服务架构
系统架构设计之微内核架构
鸿蒙操作系统架构

所属专栏:系统架构设计师

一. 云原生技术介绍

【云原生】:是基于分布部署和统一运营的分布式云,以容器、微服务、DevOps等技术为基础建立的一套云技术产品体系。

云原生在技术部分上依赖于在传统云计算的3层概念:基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。
在这里插入图片描述

二. 传统架构模式 VS 云原生架构模式

首先看一下两者对比图:
传统架构与云原生架构区别
 传统架构建立在本地基础设施上,侧重于单体应用程序和垂直扩展。而云原生架构是专为云环境设计的,强调容器化、微服务、自动化和横向扩展。这两种架构之间有着明显的区别和优劣势。

云原生架构模式:

  1. 服务化架构模式
    典型代表【微服务】,服务拆分使维护压力大增。

  2. Mesh化架构模式
    把中间件框架(RPC、缓存、异步消息)从业务进程中分离,由Mesh进程完成。

  3. Serverless模式
    非常适合于事件驱动的数据计算任务。

  4. 存储计算分离模式
    各类暂态数据(如session)用云服务保存。
    为什么要分离?即无状态和有状态应用架构的区别
    无状态应用架构是指服务请求和所在的服务器完全无关,即使请求涉及数据相关的逻辑,也是从外部获取,服务器本身不存储任何信息;
    有状态应用架构是指请求和对应服务器相关,如请求的数据在服务器上、会话数据在服务器内存中、对个请求相关联时将中间状态保存在服务器的内存或持久化存储中。

  5. 分布式事务模式
    解决微服务模式中多数据源事务问题。

  6. 可观测架构
    可观测性主要是指了解程序内部运行情况的能力。作为开发不希望应用发布上线后,对应用的内部一无所知。
    可观测架构设计主要涉及三部分:日志(Logging)、度量(Metrics)和追踪(Tracing)。

  7. 事件驱动架构
    其本质上是一种应用/组件间的集成架构模式。
    事件驱动架构采用了松耦合的方式,事件的生成源并不知道哪些系统正在监听这些事件,而且事件也不知道自己所产生的结果,这是区别于 API 调用的,API 调用都能知道预期的结果。
    既然事件驱动架构对结果的处理存在不确定性,还选择他的原因也是因为越来越多的分布式应用架构正在采纳松耦合和异步化。

三. 云原生架构反模式

 反模式=架构设计中的陷阱,反模式也是随着项目的推进演变而来的,主要的原因如重大需求调整,但架构没有对应的变化,性能和安全需求对当前架构的硬性改变,团队或组织强行调整技术等。

  1. 庞大的单体应用
     需要多人开发的业务模块,考虑通过服务化进行拆分,并让组织与架构匹配
  2. 单体应用“硬拆”为微服务(服务拆分要适度)
     小规模软件的服务拆分(为拆而拆)、数据依赖(服务间数据依赖)、性能降低
  3. 缺乏自动化能力的微服务
     手动维护大量微服务是不现实的

四. 云原生架构设计原则

  • 服务化原则:使用微服务
  • 弹性原则:可根据业务变化自动伸缩
  • 可观测原则:通过日志、链路跟踪和度量
  • 韧性原则:面对异常的抵御能力
  • 所有过程自动化原则:自动化交付工具
  • 零信任原则:默认不信任网络内部和外部的任何人/设备/系统
  • 架构持续演进原则:业务高速迭代情况下的架构与业务平衡

总结:

 云原生架构的出现和逐渐普及,是对传统架构的一种革新和进步。它不仅改变了软件开发和IT基础设施的方式,也影响了企业的竞争力和业务发展。云原生架构的灵活性、可靠性、成本效益和持续交付的优势,使其成为当今企业和组织必备的技术和发展方向。

  在一个日益变化和竞争激烈的市场环境中,企业需要将IT架构和开发方法进行现代化转型。云原生架构提供了更加适应云环境的解决方案,使得企业能更好地适应变化、提高效率并降低成本,因此,它已经成为现代企业的不可或缺的一部分。

在这里插入图片描述

其它相关推荐:
软考系统架构之案例篇(架构设计相关概念)
系统架构之微服务架构
系统架构设计之微内核架构
鸿蒙操作系统架构

所属专栏:系统架构设计师

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

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

相关文章

Tomcat简介 安装 站点部署 多实例配置 反向代理

一、Tomcat简介二 、Tomcat帮手 --- JDK安装jdk检查jdk是否安装成功 三.安装TomcatTomcat配置管理页面 四、web站点部署五、部署开源站点(jspgou商城)安装数据库 六、 jspgou商城上线配置数据库连接 七、Tomcat多实例配置复制程序文件浏览器访问 八、Tom…

3D LUT 滤镜 shader 源码分析

最近在做滤镜相关的渲染学习,目前大部分 LUT 滤镜代码实现都是参考由 GPUImage 提供的 LookupFilter 的逻辑,整个代码实现不多。参考网上的博文也有各种解释,参考了大量博文之后终于理解了,所以自己重新整理了一份,方便…

RT-Smart 开发笔记:int 类型数值溢出造成的奇怪问题的分析与排查记录

前言 最近在调试 RT-Smart 上的用户态 mq(消息队列)时,遇到一个奇怪的问题,这个例程打印了一下获取的时间,就可以正常的工作(超时退出),否则,就一直卡住(无法…

10.27~10.29数电第三次实验分析与问题

实验要求 分析 寄存器 D触发器有两个输出口,一个输入口,一个时钟信号,一个复位信号 同步异步就是说复位信号在不在always里 给它加一个load就成了一位寄存器, 寄存器堆 8个8位的寄存器堆,每个寄存器都有两读一写…

Zynq-Linux移植学习笔记之64- 国产ZYNQ在linux下配置国产5396芯片

1、背景介绍 复旦微ZYNQ通过SPI配置国产JEM5396,框图如下: 现在需要在linux下的应用程序内配置JEM5396的寄存器。其中FMQL和进口的XILINX ZYNQ类似,JEM5396和进口的BCM5396兼容。因此可以参考进口ZYNQ在linux下配置BCM5396过程。Zynq-Linux移…

【Java 进阶篇】Java HTTP响应消息详解

在Web开发中,HTTP(Hypertext Transfer Protocol)是一种用于传输数据的协议,它用于浏览器和Web服务器之间的通信。当你在浏览器中访问一个网页时,浏览器向Web服务器发送HTTP请求,然后Web服务器返回HTTP响应。…

YOLOv8如何添加注意力模块?

分为两种:有参注意力和无参注意力。 eg: 有参: import torch from torch import nnclass EMA(nn.Module):def __init__(self, channels, factor8):super(EMA, self).__init__()self.groups factorassert channels // self.groups > 0self.softmax …

CondaError_ Downloaded bytes did not match Content-Length

问题 使用anaconda下载包文件时,出现了CondaError: Downloaded bytes did not match Content-Length的错误 CondaError: Downloaded bytes did not match Content-Lengthurl: https://conda.anaconda.org/pytorch/win-64/pytorch-2.1.0-py3.11_cuda11.8_cudnn8_0.…

二维码智慧门牌管理系统升级,打造高效事件处理流程

文章目录 前言一、二维码智慧门牌管理系统的升级目标二、事件处理流程优化三、升级带来的好处 前言 随着城市化的不断推进,城市管理面临越来越多的挑战。为了更好地解决这些问题,许多城市已经开始采用二维码智慧门牌管理系统。这个系统不仅可以提高城市…

操作系统第一章-第三章大题_期末考试_详细易考

1.ABC三道作业如下表所示: 作业输入CPU输出A1505050B10060100C806050 (1) 计算在单道环境下运行时CPU的利用率;(2分) (2) 假设计算机系统中具有一个CPU、三个通道,画出ABC三道作业并发执行的情况图,并计算CPU利用率。(12分) 问题分析: c p u 利用率 c p u 有效…

Python对象(Object)与类型(Type)的关系

Object与Type 1、Object与Type概述2、Object与Type的关系 1、Object与Type概述 对象(Object)和类型(Type)是Python中两个最最基本的概念,它们是构筑Python语言大厦的基石 所有的数据类型,值,变…

[BUUCTF NewStarCTF 2023 公开赛道] week4 crypto/pwn

再补完这个就基本上完了. crypto RSA Variation II Schmidt-Samoa密码系统看上去很像RSA,其中Npqq, 给的eN给了d from secret import flag from Crypto.Util.number import *p getPrime(1024) q getPrime(1024)N p*p*qd inverse(N, (p-1)*(q-1)//GCD(p-1, q-1))m bytes…

cause: java.lang.numberformatexception: for input string

一个十分粗心的错误 我本来想要写的是name不为空,并且不为空字符串,结果不小心写成了空格! 解决方案:将空格改为空字符串即可

JMeter的使用——傻瓜式学习【中】

目录 前言 1、JMeter参数化 1.1、什么是参数化 1.2、用户定义的变量 1.2.1、什么时候使用用户定义的变量 1.2.2、使用“用户定义的变量”进行参数化的步骤: 1.2.3、案例 1.3、用户参数 1.3.1、什么时候使用用户参数? 1.3.2、使用“用户参数”进…

交叉编译工具链(以STM32MP1为例)

1.什么是交叉编译工具链? 在一个系统上进行编译,在另一个系统上进行执行 2.STM32MP1交叉编译工具链 3.交叉编译器内容 4.两种工具链模式 5.两种链接模式 6.工具使用 注意:OpenSTLinux已经提供了编译框架,不需要命令行手工编译 …

Spring Cloud 实战 | 解密Feign底层原理,包含实战源码

专栏集锦,大佬们可以收藏以备不时之需 Spring Cloud实战专栏:https://blog.csdn.net/superdangbo/category_9270827.html Python 实战专栏:https://blog.csdn.net/superdangbo/category_9271194.html Logback 详解专栏:https:/…

在VM虚拟机上安装centos并了解Linux常用命令

一. centos安装 新建一个虚拟机,使用ISO映像文件(在浏览器上直接搜索阿里云镜像站,下载合适的镜像文件) 安装后设置密码然后重启 重启后输入账号和密码 查看IP 输入命令: vi ifcfg-ens33,进入编辑界面&a…

物联网AI MicroPython传感器学习 之 PAJ7620手势识别传感器

学物联网,来万物简单IoT物联网!! 一、产品简介 手势识别传感器PAJ7620u2是一款集成3D手势识别和运动跟踪为一体的交互式传感器,传感器可以在有效范围内识别手指的顺时针/逆时针转动方向和手指的运动方向等。它可以识别13种手势&a…

STM32的RTC模块的难点推导

在 S T M 32 STM32 STM32的 R e a l t i m e c l o c k , R T C Real\quad time\quad clock,RTC Realtimeclock,RTC模块中有一些功能点不太好理解,下面我根据我自己对这些功能难点的理解来做一些推导并记录如下。 首先来看一下平滑数字校准。假设我们目前的 R …

万字解析设计模式之原型模式与建造者模式

一、原型模式 1.1概述 原型模式是一种创建型设计模式,其目的是使用已有对象作为原型来创建新的对象。原型模式的核心是克隆,即通过复制已有对象来创建新对象,而不是通过创建新对象的过程中独立地分配和初始化所有需要的资源。这种方式可以节…