系统架构设计师-第14章-云原生架构设计理论与实践-
云原生架构产生背景
云原生与商业场景的深度融合
( 1 )从为企业带来的价值来看,云原生架构有着以下优势通过对多元算力的支持,满足不同应用场景的个性化算力需求,井基于软硬协同架构,为应用提供极致性能的云原生算力
(2) 通过最新的DevSecOps 应用开发模式,实现了应用的敏捷开发,提升业务应用的选代速度,高效响应用户铺求,并保证全流程安全。
(3)帮助企业管理好数据,快速构建数据运营能力,实现数据的资产化沉淀和价值挖掘,并借助一系列Al 技术,再次赋能给企业应用,结合数据和AI 的能力研助企业实现业务的智能升级。
(4) 结合云平行全方位企业级安全服务和安全合规能力,保障企业所用在云上去全构建,业务安全运行.
云原生架构内涵
云原生架构定义
从技术的角度,去原生架构是基于云原生技术的一组架构原则和设计悦武的集合,旨在将云应用中的非收务代码部分进行最大化的剥离, 从而让云设施接管应用中原有的火母非功能特性(如弹性、韧性、安全、可观测性、灰度等) , 使业务不再有非功能性业务中断困扰的同时,具备轻量、敏捷、高度自动化的特点。
技术部分依赖于传统云计算的3层概念,即基础设施即服务。IaaS) 、平台即服务( PaaS) 和软件即服务(SaaS) 。
云原生的代码通常包括三部分:业务代码、三方软件、处理非功能特性的代码.
1 . 代码结构发生巨大变化
云原生架构产生的最大影响就是让开发人员的编程模型发生了巨大变化。
2. 非功能性特性大量委托
任何应用都提供两类特性,功能性特性和非功能性特性。
功能性特性是真正为业务带来价值的代码,比如建立客户资料、处理订单、支付等;即使是一些通用的业务功能特性, 比如组织管理、业务字典管理、搜索等也是紧贴业务需求的。
非功能性特性是没有给业务带来直接业务价值,但通常又是必不可少的特性,比如高可用能力、容灾能力、安全特性、可运维性、易用性、可测试性、灰皮发布能力等。
3. 高度自动化的软件交付
云原生架构原则
1 . 服务化原则
2. 弹性原则
3. 可观测原则
4 . 韧性原则
5 . 所在过程自动化原则
6. 零信任原则
7. 架构持续演进原则
主要架构模式
1 . 服务化架构模式
2. Mesh 化架构模式
3. Serverless 模式
4. 存储计算分离模式
5. 分布式事务模式
架构师需要根据不同的场景远择合适的分布式事务模式。
( 1 )传统采用XA 模式,虽然具备很强的一致性, 但是性能差
( 2 ) 基于消息的最终-致性( BASE ) 通常有很高的性能, 但是通用性有限.
( 3 ) TCC 模式完全出凶阳层来控制事务, 事务隔离性可控, 也可以做到比较高效; 但是对业务的侵入性非常强, 设计开发维护等成本很高。
( 4 ) SAGA 模式与TCC 模式的优缺点类似但没有try 这个阶段, 而是何个正向事务部对院一个补偿事务,也是开发维护成本高。
( 5 ) 开源项目SEATA 的AT 模式非常高性能且无代间开发工作量, 且可以自动执行国跤操作,同时也存在一些使用场景限制。
6 . 可观测架构
7 . 事件驱动架构
典型的云原生架构模式
1. 庞大的单体应用
2. 单体应用"硬拆" 为微服务
3. 缺乏自动化能力的微服务
云原生架构相关技术
容器技术
容器技术是一种虚拟化技术,它可以将一份应用程序和其所有依赖项封装在一个轻量级的容器中,以便在不同的计算环境中进行部署和运行。容器技术的主要组成部分包括容器引擎、容器镜像和容器编排工具。容器引擎负责管理和运行容器,容器镜像是容器的基础镜像,可包含应用程序和其依赖项,容器编排工具可用于自动化和管理容器生命周期。容器技术的优势在于它可以快速部署和运行应用程序,提高了开发和运维效率,同时也提高了系统的可移植性和可扩展性。常见的容器技术包括Docker、Kubernetes等。
1 . 容器技术的背景与价值
容器技术的背景与价值:
1. 背景:传统的应用程序部署方式需要在服务器上安装各种依赖库和软件组件,每个应用程序都需要占用一个完整的虚拟机,导致服务器资源浪费,管理困难,效率低下。
2. 价值:容器技术通过将应用程序和所有依赖库和软件组件封装在一个容器中,使得应用程序可以在任意环境中运行,减少了服务器资源浪费,简化了管理,提高了效率。容器技术还可以实现快速部署、快速扩容、快速回滚等功能,提高了应用程序的可靠性和可维护性。此外,容器技术还支持微服务架构,可以拆分为多个小型服务,从而使得系统更加灵活、可扩展和容错。最后,容器技术是现代化云计算的基础,支持云原生应用的构建和部署,是未来技术的趋势和方向。
2 . 容器编排
容器编排是指在容器化应用程序的基础上,对容器进行规划、调度和管理的过程。容器编排工具可以帮助开发团队更高效地管理容器,从而实现快速部署、自动伸缩和高可用性等目标。
常见的容器编排工具有Kubernetes、Docker Swarm、Mesos等。这些工具可以根据应用程序的需求,自动化地将容器分配到合适的节点上,并实现自动扩展、负载均衡、服务发现、监控等功能。
容器编排可以使开发者从基础设施管理中解放出来,更专注于应用程序的开发和维护。同时,容器编排也可以提高应用程序的可靠性和稳定性,确保应用程序在任何情况下都能正常运行。
云原生微服务
1. 微服务发展背景
2. 微服务设计约束
3. 主要微服务技术
主要的微服务技术包括:
1. Spring Boot:一个用于创建独立的、基于Spring的生产级别的应用程序的框架,被广泛使用于微服务架构中。
2. Docker:一种容器化技术,可以实现快速部署、运行和管理微服务。
3. Kubernetes:一个用于管理容器化应用程序的开源平台,可以自动部署、扩展和管理多个容器化应用程序。
4. Apache Kafka:一个分布式流处理平台,可以处理实时的大量数据,在微服务中被用于实现异步通信。
5. RabbitMQ:一个开源的消息队列系统,可以在微服务架构中实现异步通信。
6. Netflix OSS:由Netflix开发的一组开源工具,包括Eureka、Hystrix、Zuul等组件,可以实现服务注册、熔断、路由等功能。
7. Istio:一个开源的服务网格框架,可以管理多个微服务之间的流量和通信。
8. gRPC:一个高性能、开源的远程过程调用框架,可以在微服务中实现跨语言的通信。
9. Elasticsearch:一个分布式搜索引擎,可以在微服务中实现日志分析、全文搜索等功能。
以上这些技术都是常用的微服务架构中的重要组成部分。
无服务器技术
无服务器技术(Serverless)是一种新型的云计算服务模式,它将应用程序的开发、部署和运行抽象为函数的形式,屏蔽了底层的计算基础设施,开发者不再需要关心服务器、虚拟机、操作系统、负载均衡等底层细节,只需编写简单的函数代码即可实现应用程序的快速部署和运行。
无服务器技术是一种事件驱动的计算模型,只在需要时才启动并运行函数,可以实现高效的资源利用,避免了传统服务器模式下的资源浪费和维护成本。此外,无服务器技术还具有自动扩容、灵活部署、快速响应等优点,被广泛应用于互联网、物联网、移动应用、大数据等各个领域。
1. 技术特点
Serverless 计算包含以下特征:
(1) 全托管的计算服务,客户只需要编写代码构建应用,无需关注同质化的、负担繁重的基于服务器等基础设施的开发、运维、安全、高可用等工作:
(2) 通用性,结合云BaaSAPI的能力,能够支撑云上所有重要类型的应用;
(3) 自动弹性伸缩,让用户无需为资源使用提前进行容量规划:
(4) 按量计费,让企业使用成本得有效降低, 无需为闲置资源付费。
2 . 技术关注点
1 )计算资源弹性调度
2 ) 负载均衡和流控
3 )安全性
服务网络
1 ,技术特点
服务网格(ServiceMesh ) 是分布式应用在微服务软件架构之上发展起来的新技术, 旨在将那
些微服务间的连接、安全、流量控制和可观测等通用功能下沉为平台基础设施, 实现应用与平台
基础设施的解祸。
2. 主要技术
云原生架构案例分析
云原生架构案例有很多,以下是一些典型的案例:
1. Netflix
Netflix 是一家全球领先的流媒体服务提供商,从一开始就采用了云原生架构。Netflix 实现了自己的云原生平台,名为 Spinnaker,支持跨多个云平台进行部署。
2. Airbnb
Airbnb 是一家在线住宿预订平台,其技术架构采用了微服务和容器化。Airbnb 采用了 Kubernetes 来管理容器和部署,还使用 Istio 来管理服务之间的通信。
3. JD.com
京东是中国最大的综合型零售商,其云原生架构案例是京东云。京东云采用了 Kubernetes 和 Istio 来管理容器和服务之间的通信,并提供了丰富的云服务。
4. 美团
美团是中国最大的在线服务平台之一,其技术架构采用了微服务和容器化。美团采用了 Spring Cloud 和 Kubernetes 来管理服务和容器,并使用 Istio 来优化服务之间的通信。
5. 阿里巴巴
阿里巴巴是中国最大的电子商务企业之一,其云原生架构案例是阿里云。阿里云采用了 Kubernetes 和 Istio 来管理容器和服务,还提供了丰富的云服务,如对象存储、数据库、消息队列等。
这些云原生架构案例充分展示了云原生的优势,包括弹性、可伸缩性、自动化、高可用性等,推动了企业的数字化转型和业务创新。
相关文章:
系统架构设计师-第14章-云原生架构设计理论与实践-
云原生架构产生背景 云原生与商业场景的深度融合 ( 1 )从为企业带来的价值来看,云原生架构有着以下优势通过对多元算力的支持,满足不同应用场景的个性化算力需求,井基于软硬协同架构,为应用提供极致性能的云原生算力 (2) 通过最…...

conda 实践
1. 环境部署 1.1. 下载 anaconda 安装包 下面这个网址查找自己需要的版本 https://repo.anaconda.com/archive/ 或者手动下载。 wget https://repo.anaconda.com/archive/Anaconda3-5.3.0-Linux-x86_64.sh 1.2. 执行安装程序 #安装依赖: sudo yum install bzip2…...

行业追踪,2023-10-31
自动复盘 2023-10-31 凡所有相,皆是虚妄。若见诸相非相,即见如来。 k 线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让…...
springboot 配置多个Redis数据源详解
实现原理 需要配置好两个数据源,创建两个RedisTemplate在配置类中注入两个RedisConnectionFactory,分别创建对应的RedisTemplate进行操作 详解 配置数据源 我这里是在之前已有一个配置下面另外加了一个 spring:redis:# 地址host: localh…...

【数据结构】排序算法总结
⭐ 作者:小胡_不糊涂 🌱 作者主页:小胡_不糊涂的个人主页 📀 收录专栏:浅谈数据结构 💖 持续更文,关注博主少走弯路,谢谢大家支持 💖 总结 1. 归并排序2. 计数排序3. 排序…...

作为20年老程序员,我如何使用GPT4来帮我写代码
如果你还在用google寻找解决代码bug的方案,那你真的out了,试试gpt4, save my life. 不是小编危言耸听,最近用gpt4来写代码极大地提高了代码生产力和运行效率,今天特地跟大家分享一下。 https://www.promptspower.comhttps://www.…...

【机器学习合集】模型设计之残差网络 ->(个人学习记录笔记)
文章目录 模型设计之残差网络1. 什么是残差结构1.1 网络加深遇到的优化问题1.2 short connect技术 2. 残差网络及有效性理解2.1 残差网络 3. 残差网络的发展3.1 密集残差网络3.2 更宽的残差网络(wide resnet)3.3 分组残差网络3.4 Dual Path Network3.5 加权残差网络3.6 预激活残…...

GoLong的学习之路(十六)基础工具之Gin框架
Gin框架介绍及使用,这张不用看内容就知道非常重要,重要到什么地步呢?重要到开发java不会Spring全家桶这种概念。 上几篇文章写的是如何构建骨架,经脉。这一章是将血肉注入。 文章目录 Gin框架RESTful API Gin渲染HTML渲染静态文件…...

VMware打开centos黑屏解决方法汇总
VMware打开centos黑屏解决方法汇总 前言:一. VMware打开centos黑屏解决方法汇总一 .情况情况一:情况二情况三 二. 解决方法最简单的方法:一. 以管理员权限在命令行执行1. 管理员身份运行cmd2. 输入“netsh winsock reset”,回车3. 重启电脑即…...

5G物联网关相较有线网关有哪些独特优势
5G为产业物联网应用带来了质的飞跃,5G技术实现更高速率、更低延迟和更大带宽,使得物联网能够接入更多数量的设备,实现更稳定、高效的连接和数据传输,在提高生产效率的同时,也进一步促进了物联网的应用发展和升级。 针对…...

【数据结构】顺序表的学习
前言:在之前我们学习了C语言的各种各样的语法,因此我们今天开始学习数据结构这一个模块,因此我们就从第一个部分来开始学习"顺序表"。 💖 博主CSDN主页:卫卫卫的个人主页 💞 👉 专栏分类:C程序设计谭浩强版本…...

在NISQ小型计算机上执行大型并行量子计算的可能性
简介 Steve White提出了密度矩阵重整化群(DMRG)的基本思想,即纠缠是一种有价值的资源,可以用来精确或近似地描述大量子系统。后来,这一思想被理解为优化矩阵积状态(MPS)的算法,支持…...

考虑时空相关性的风电功率预测误差MATLAB代码
微❤关注“电气仔推送”获得资料(专享优惠) 风电功率预测置信区间误差分析拟合 1.风电功率预测误差--时空相关性 展示第一一个时间段的风电功率预测与实际风电功率值的比较。填充区域表示预测的不确定性,显示了95%置信区间内预测可能的范围…...

ASP.NET WebApi 极简依赖注入
文章目录 环境服务类启动项注入使用依赖注入的优点 环境 .NET Core 7.0ASP.NET CoreVisual Studio 2022 服务类 public class T_TempService {public T_TempService(){}public void Test(){}}启动项注入 #region 依赖注入 builder.Services.AddTransient<T_TempService&g…...

解决proteus仿真stm32,IIC通讯,IIC DEBUG无法显示从机应答信号的问题(问题情况为在8位数据后应答位显示?)
1、错误现象 错误现象如下,在IIC数据传输8位数据后,IIC DEBUG的应答位无法显示应答位 2、错误原因 我们打开信号传输的示波器,直接去查看IIC从机校验位的数据波形,可以看到从机示波器显示的的波形为半高ACK,那错误原…...
PHP判断闰年
闰年的规则 1.能被4整除且不能被100整除 (普通闰年) 2.能被400整除,公历年份是整百数的,必须是400的倍数才是闰年(世纪闰年) 代码 function isLeapYear($year) {if($year%40 && $year%100!0){r…...

证照之星XE专业版下载专业证件照制作工具
值得肯定的是智能背景替换功能,轻松解决背景处理这一世界难题。不得不提及的是新增打印字体设置,包含字体选择、字号大小、字体颜色等。不同领域的应用证明了万能制作,系统支持自定义证照规格,并预设了17种常用的证件照规格。人所…...

VR全景图片如何制作?揭秘VR全景图片制作全流程
引言: VR全景图片是一种以全景视角为基础的图片制作技术,能够呈现出更为真实、立体的视觉体验。通过VR全景图片,观众可以360环顾四周,仿佛身临其境,提供了一种全新的感官体验,那么如何制作出令人满意的全景…...
vue element el-table-column 循环示例代码
如果你想循环生成多个el-table-column,可以使用v-for指令。以下是一个示例: <template><el-table :data"tableData"><el-table-column v-for"column in columns" :key"column.prop" :label"column.l…...
R语言生物群落(生态)数据统计分析与绘图实践技术应用
R 语言作的开源、自由、免费等特点使其广泛应用于生物群落数据统计分析。生物群落数据多样而复杂,涉及众多统计分析方法。以生物群落数据分析中的最常用的统计方法回归和混合效应模型、多元统计分析技术及结构方程等数量分析方法为主线,通过多个来自经典…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...

JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...

MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...

LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
BLEU评分:机器翻译质量评估的黄金标准
BLEU评分:机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域,衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标,自2002年由IBM的Kishore Papineni等人提出以来,…...

yaml读取写入常见错误 (‘cannot represent an object‘, 117)
错误一:yaml.representer.RepresenterError: (‘cannot represent an object’, 117) 出现这个问题一直没找到原因,后面把yaml.safe_dump直接替换成yaml.dump,确实能保存,但出现乱码: 放弃yaml.dump,又切…...