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

云原生架构

  • 一. 云原生技术介绍
  • 二. 传统架构模式 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.mzph.cn/news/127760.shtml

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

相关文章

家政APP开发服务同城预约维修接单管理系统软件小程序

家政服务小程序是一个基于移动端的家政服务平台,为用户提供方便快捷的家政服务。以下是小程序的主要功能: 1. 家政服务内容展示:商家可以在小程序中展示各种家政服务项目,如清洁、保洁、保姆、月嫂、钟点工等。用户可以浏览服务信…

Ansible中的变量及加密

目录 一、变量的设定 二、变量的使用方式 1、在playbook中直接定义变量 2、在文件中定义变量 3、设定主机变量和清单变量 4、目录设定变量 5、用命令覆盖变量 6、使用数组设定变量 7、注册变量 8、事实变量 9、魔法变量 三、JINJA2模板 四、加密控制 1、创建加…

Flutter中的各种刷新小部件

1.FutureBuilder 用于处理异步操作和构建界面的非常有用的小部件。它通常与 Future 对象一起使用,用于在异步操作完成后构建界面。 import package:flutter/material.dart;void main() > runApp(MyApp());class MyApp extends StatelessWidget {overrideWidget…

Qt 插件开发详解

1.简介 Qt插件是一种扩展机制,用于将应用程序的功能模块化,并且可以在运行时动态加载和卸载。Qt框架为插件提供了一套标准的接口和管理机制,使得插件的使用和集成变得简单和灵活,通过插件机制,可以将应用程序的功能划…

C语言 DAY09 指针02

1.指针的指针 又名二维指针 语法:数据类型 **p; 示例: void fun() { int a10; int *p1 &a; int **p2 &p1; printf("p1的地址是:%p\n",p1); printf("p2的存储的地址是:%p\n",*p2); printf("p2的地…

Maven Repository使用

1.Maven Repository网站 https://mvnrepository.com/https://mvnrepository.com/ 2.查询需要的依赖 3.参考例子 <!-- https://mvnrepository.com/artifact/org.freeswitch.esl.client/org.freeswitch.esl.client --> <dependency> <groupId>org.freesw…

【k8s】资源管理命令-陈述式

一、资源管理介绍 1、资源管理概念 在kubernetes中&#xff0c;所有的内容都抽象为资源&#xff0c;用户需要通过操作资源来管理kubernetes。 //kubernetes的本质就是一个集群系统&#xff0c;用户可以在集群中部署各种服务&#xff0c;起始就是在kubernetes集群中运行一个个…

科技驱动教育!将名师智慧资产固定在系统中

文章目录 每日一句正能量前言未来教育教育趋势一、在线教育&#xff1a;打破时间和空间的限制二、混合式学习&#xff1a;结合线上和线下的优势三、项目式学习&#xff1a;以问题为导向&#xff0c;以项目为载体 科技驱动教育模式在线教育人工智能教育虚拟现实/增强现实教育游戏…

React事件处理

目录 前言 1. 添加事件处理函数 2. 传递参数 使用箭头函数 使用bind方法 3. 阻止默认行为和冒泡 阻止默认行为 阻止事件冒泡 4. 最佳实践 前言 React是一个流行的JavaScript库&#xff0c;用于构建用户界面。在React中&#xff0c;事件处理是非常重要的一部分&#xf…

非递归(迭代)遍历二叉树

前言 在树结构中我们经常使用递归算法&#xff0c;但是递归本身的特质会带来很多疑难痛点&#xff0c;比如递归过深导致爆栈&#xff0c;或者是逻辑复杂... 本文将以树的前序遍历为例&#xff0c;浅析迭代算法如何模拟递归过程。

tasks.json、launch.json、c_cpp_properties.json配置

tasks.json //tasks.json是辅助程序编译的模块&#xff0c;执行类似于在命令行输入“gcc hello.c -o hello”命令的操作 {"version": "2.0.0","tasks": [{"type": "cppbuild", //任务类型&…

Linux开源存储方案系统介绍

文章目录 开源云计算数据存储平台怎么理解云计算 存储管理和软件定义存储软件定义存储开源项目OpenSDSLibvirt Storage Management&#xff1a;OHSM&#xff08;Online Hierarchical Storage Manager&#xff09; 开源分布式存储什么是分布式存储元数据服务器数据服务器客户端 …

“深入理解Nginx的负载均衡与动静分离“

目录 引言一、Nginx简介1. Nginx的基本概念2. Nginx的特点3. Nginx的安装配置 二、Nginx搭载负载均衡三、前端项目打包四、Nginx部署前后端分离项目&#xff0c;同时实现负载均衡和动静分离总结 引言 在现代互联网应用中&#xff0c;高性能和可扩展性是至关重要的。Nginx作为一…

django 下载与安装

#django安装 pip3 install django#创建工程 django-admin startproject 名称 如&#xff1a;django-admin startproject bookmanager#django启动 python manage.py runserver python manage.py runserver 127.0.0.1:8081#数据迁移 生成迁移文件&#xff1a;python manage.py ma…

吴恩达《机器学习》2-2->2-4:代价函数

一、代价函数的概念 代价函数是在监督学习中用于评估模型的性能和帮助选择最佳模型参数的重要工具。它表示了模型的预测输出与实际目标值之间的差距&#xff0c;即建模误差。代价函数的目标是找到使建模误差最小化的模型参数。 二、代价函数的理解 训练集数据&#xff1a;假设我…

操作系统 (1)

进程的概念 进程同步/进程互斥 进程互斥的软件实现 进程互斥的硬件实现 信号量机制 生产者消费者问题 以下wei8最终情况,不可调换位置,否则会发生死锁 预防死锁 避免死锁

警惕!当心AI诈骗!

本文参照材料有&#xff1a; 鄂尔多斯新闻公众号、澎湃新闻网、搜孤新闻、腾讯网等 AI换脸诈骗实例&#xff08;就发生在近期&#xff09; 事例一&#xff1a; 近期 “AI换脸”新型诈骗频发和你视频对话的可能不是本人&#xff01; 近日&#xff0c;东胜市民李女士遭遇了冒充…

CentOS一键部署Docker

Docker官网&#xff1a;https://www.docker.com/ CentOS&#xff08;7.6&#xff09; Docker&#xff08;18.06.1&#xff09;一键安装脚本 #!/bin/bash echo "1、安装依赖..." yum -y install gcc yum -y install gcc-c##验证gcc版本 gcc -vecho "2、卸载老…

Linux shell编程学习笔记18:while循环语句

上回我们研究和探讨了Linux shell编程中for 循环语句&#xff0c;与在C/C中一样&#xff0c;for 循环语句Linux shell编程中有很多灵活的用法。今天我们来研究和探讨while循环语句。 一、数字条件循环 我们继续以for循环语句中的例子&#xff0c;计算 从1到10与2的乘积 并输出…

【论文阅读】Iterative Poisson Surface Reconstruction (iPSR) for Unoriented Points

文章目录 声明作者列表核心思想归纳算法流程机器翻译声明 本帖更新中如有问题,望批评指正!如果有人觉得帖子质量差,希望在评论中给出建议,谢谢!作者列表 FEI HOU(侯飞)、CHIYU WANG、WENCHENG WANG:中国科学院大学 HONG QIN CHEN QIAN、YING HE 核心思想归纳 当一条从…