浅谈云原生--微服务、CICD、Serverless、服务网格

news2024/11/26 0:40:52

往期推荐 

浅学React和JSX-CSDN博客

一文搞懂大数据流式计算引擎Flink【万字详解,史上最全】-CSDN博客

一文入门大数据准流式计算引擎Spark【万字详解,全网最新】_大数据 spark-CSDN博客

目录

1. 云原生概念和特点

2. 常见云模式

3. 云对外提供服务的架构模式

3.1 IaaS(Infrastructure-as-a-Service)

3.2 PaaS(Platform-as-a-Service)

3.3 SaaS(SoftWare-as-a-Service)

3.4 FaaS(Function-as-a-Service)

4. 云原生核心技术栈

4.1 微服务

4.2 容器技术-Docker、K8s

4.3 DevOps&CICD

4.4 Serverless

4.5 不可变基础设施

4.6 声明式API

4.7 Service Mesh(服务网格)

4.7.1 服务网格如何工作

4.7.2 服务网格优点 

4.7.3 服务网格架构

数据面板

控制面板

4.7.4 服务网格和k8s

4.7.5 服务网格面临的挑战

4.7.6 Istio


 

介绍云原生之前,我们先介绍一下CNCF,全称为Cloud Native Computing Foundation,中文译为“云原生计算基金会”。CNCF致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。所以说,CNCF是云原生领域影响力最大最有话语权的组织。以下是CNCF对云原生的定义:

        云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API

1. 云原生概念和特点

  • 概念
    • 云原生是一种构建和运行应用程序的方法,程序生于云端,长于云端从有构建应用的想法开始,到需求、设计、开发、测试、构建、打包、部署所有的软件生命周期全部都在云平台上面进行,从应用设计之初(技术选型、架构设计、编译机制)就充分考虑并符合了云的特征,在云平台以最佳姿态原型、为企业降本增效。
  • 特点
    • 弹性扩缩容:本地部署的传统应用无法动态扩展,往往需要冗余资源以抵抗流量高峰,而云原生应用利用云的弹性自动伸缩,应用程序快速复制扩展、部署。
    • 快速启停:应用程序可以快速启停以应对流量变化
    • 隔离性强:进程级别的故障隔离
    • CICD:持续集成、持续交付、持续部署

2. 常见云模式

  • 公有云
    阿里云、华为云、腾讯云、百度云等等,只需购买就能使用
  • 私有云
    自己搭建或购买的私有平台,使用对象通常是政府、金融机构和企业
  • 混合云:混合云的优缺点 | IBM
  • 行业云

3. 云对外提供服务的架构模式

3.1 IaaS(Infrastructure-as-a-Service)

基础设施即服务

向外提供硬件资源等基础设施,包括计算、存储、网络等等,用户可以基于基础设施进行上层应用开发部署。

3.2 PaaS(Platform-as-a-Service)

平台即服务

向外提供平台组件服务,如操作系统、数据库

3.3 SaaS(SoftWare-as-a-Service)

软件即服务

直接向外提供一款成品应用型服务,屏蔽了用户对软件底层的基础设施,用户只需要拿来使用即可。如钉钉、企业微信

3.4 FaaS(Function-as-a-Service)

功能即服务

https://www.ibm.com/cn-zh/topics/faas

FaaS是一种云计算服务,专注于事件驱动,在有请求时自动启动服务,没有时自动关闭服务。

Serverless和FaaS经常被混为一谈,我认为 FaaS算是无服务器的子集

无服务器专注于所有服务类别,无论是计算、存储、数据库、消息传递还是 API 网关等。其中服务器的配置、管理和计费对最终用户不可见,用户只需要对服务按需付费即可

4. 云原生核心技术栈

4.1 微服务

  • 单体架构:把业务所有功能集中在一个项目中开发,以整个系统为单位进行部署,这种架构简单,如果某一业务的请求量非常大,那么是无法单独扩展该业务的,只能拷贝整个单体应用,再部署一套环境,来实现集群。
  • 微服务架构:根据业务把整个项目划分成多个功能模块,比如订单模块、购物车模块、支付模块、商品详情模块等等,模块之间通过http或者RPC进行通信。这种架构降低了服务耦合,有利于服务扩展,同时每个服务模块实现了故障隔离,提高了可用性

SpringCloud就是微服务中具有代表性的一个技术栈。

4.2 容器技术-Docker、K8s

所谓容器,对操作系统(通常为 Linux)进行虚拟化,具有比虚拟机更高的可移植性和资源效率,可以解决环境差异带来的部署等问题。

我们把单体项目拆成了微服务,各个微服务模块所需的部署环境可能大不相同,那么不妨把每个微服务模块放到容器中,这个容器包含了服务模块运行所需的除操作系统内容以外所需的函数、配置、依赖等,类似exe安装包,这就不仅解决了环境差异带来的应用部署问题,而且各个容器之间实现进程隔离,容器启动速度也更快

以Docker容器为资源分割和调度的基本单位,封装整个软件运行时的环境,然后发布到Linux机器上。 

按照Docker的设计方案,应用软件的交付过程如同海上运输,操作系统如同一个货轮,操作系统上的软件都如同一个集装箱。用户可以通过标准化手段自由组装运行环境,同时集装箱的内容可以由用户自定义,然后使用k8s编排管理容器的生命周期。如此一来,交付一个应用软件产品,就相当于交付一系列标准化组件的集合。

4.3 DevOps&CICD

Development和Operations,即开发运维一体化,涉及软件在整个开发生命周期中的持续开发,持续测试,持续集成,持续部署和持续监控。简单来说是开发和运维之间地高度协同,实现全生命周期的工具全链路打通与自动化、跨团队的线上协作能力。完成高频率部署的同时,提高生产环境的可靠性、稳定性、弹性和安全性。

CI:持续集成

  • 持续集成:开发团队通过将代码的不同部分通过版本控制系统集成到共享存储库中,系统可以自动频繁地进行构建和测试,以确保代码的一致性和稳定性。,一定程度上避免代码冲突和重复劳动。

CD:持续交付、持续部署

  • 建立在持续集成的基础上,持续交付后的代码处于待发布状态,系统随时可以自动快速地部署到生产环境中,确保应用始终是最新的,支持频繁变更和金丝雀发布。代表产品有阿里云的Serverless应用引擎SAE。Serverless 应用引擎SAE_应用托管服务_零代码改造上云_容器与中间件-阿里云

4.4 Serverless

Serverless 是什么?无服务器架构简介-红帽

一文读懂 Serverless 的起源、发展和落地实践-阿里云开发者社区

  • Serverless并不是不需要服务器,而是将服务器全权托管给了云厂商,用户聚焦业务代码,无需关心管理服务器,只用把业务部署到平台的容器上,服务器能自动进行弹性伸缩,这些容器在被调用时会自动按需启动

4.5 不可变基础设施

在传统的可变服务器基础架构中,开发人员操作服务器,手动升级或降级软件包,逐个服务器地调整配置文件,服务器会不断更新和修改。

可变基础设施通常会导致以下问题:

持续的修改服务器,缺乏标准,易引入不稳定因素,会导致灾难发生后很难重新构建起等效的新服务。

而不可变基础设施,最基本的指运行服务的服务器在完成部署后,就不在进行更改,如果配置发生了改变就会生成新的容器,旧容器直接销毁。这就保证了基础架构中更高的一致性和可靠性,以及更简单,更可预测的部署过程。这样云原生就有了稳定的基石!

4.6 声明式API

  • 在命令式 API 中,我们可以直接发出服务器要执行的命令,例如: “运行容器”、“停止容器”等。通俗的说,命令式编程是第一人称,我要做什么,我要怎么做。操作系统最喜欢这种编程范式了,操作系统几乎不用“思考”, 只要一对一的将代码翻译成指令就可以了。
  • 在声明式API中,我们声明系统要执行的操作,系统将不断向该状态驱动。声明式编程类似于“第二人称”, 也就是你要做什么,这有点“”产品经理”和“开发”之间的关系,“产品经理”只负责提需求,而“开发”怎么实现的,他并不关心

4.7 Service Mesh(服务网格)

为什么使用服务网格

  • 应用程序性一定程度上能取决于服务之间通信的速度和弹性。开发人员必须跨服务监控和优化应用程序,但由于系统的分布性质,他们很难获得可见性,在没有服务网格层时,开发人员把服务间的通信逻辑编码到每个服务中,当应用程序越来越大并且在同一个服务上同时运行多个实例时,微服务之间通信将会变得愈发复杂,业务代码和非业务代码糅合在一起。
  • Service mesh可以处理应用程序中服务之间的所有通信,同时提供了监控、记录、跟踪和流量控制等新功能。

4.7.1 服务网格如何工作

服务网格从单个服务中提取控制服务间通信的逻辑,并抽象到自己的基础设施层(如Istio)。它使用多个网络代理来路由和跟踪服务之间的通信。

代理充当组织网络和微服务之间的中间网关。所有进出该服务的流量都通过代理服务器路由。代理有时被称为 sidecar(直译为边车),sidercar和微服务块并行运行,这些代理一起构成了服务网格层。
 

下面的网格中,绿色是一个个微服务,代表不同的功能模块,蓝色就是每个微服务的代理他们从绿色的微服务中提取出来下沉到Istio等设施,负责服务间的通信、监控等。

4.7.2 服务网格优点 

  • 服务发现
    服务网格使用服务注册表来动态发现和跟踪网格中的所有服务,减少管理服务端点的运维负担。
  • 负载均衡
    服务网格使用各种算法(例如循环算法、最少连接或加权负载均衡)在多个服务实例之间智能地分配请求。负载均衡可提高资源利用率并确保高可用性和可扩展性。
  • 流量管理
    服务网格提供高级流量管理功能,可对请求路由和流量行为进行精细控制。
  • 流量分割
    将传入流量划分到不同的服务版本或配置中。网格将一些流量引导到更新后的版本,从而以受控方式逐步推出变更。这样可以实现平稳过渡,并最大限度地降低变更的影响。
  • 安全性
    服务网格提供安全通信功能,例如双向 TLS加密、身份验证和授权。
  • 监控
    服务网格提供全面的监控和可观测性功能,可深入了解服务的运行状况、性能和行为。监控还支持故障排除和性能优化。

4.7.3 服务网格架构

服务网格架构中有两个主要组成部分:控制面板和数据面板。

数据面板

数据面板是服务网格的数据处理组件。它包括所有 sidecar 代理及其功能。当一个服务想要与其他服务通信时,sidecar 代理会采取以下操作:

  1. sidecar 拦截请求
  2. 它将请求封装在单独的网络连接中
  3. 它在源代理和目标代理之间建立安全的加密通道

sidecar 代理处理服务之间的低级消息传递。它们还会实施断路和请求重试等功能,以增强弹性并防止服务降级。服务网格功能(例如负载均衡、服务发现和流量路由)在数据面板中实现。

控制面板
  • 控制面板是服务网格的中央管理和配置层。
  • 管理员可以通过控制面板在网格内定义和配置服务。例如,指定服务端点、路由规则、负载均衡策略和安全设置等参数。定义配置后,控制面板将必要信息分发到服务网格的数据面板。
  • 代理使用配置信息来决定如何处理传入的请求。它们还可以接收配置更改并动态调整其行为而无需重新启动或中断服务。
  • 控制面板通常包括以下功能:
    1. 跟踪网格内所有服务的服务注册表
    2. 自动发现新服务并删除非活动服务
    3. 收集和聚合遥测数据,例如指标、日志和分布式跟踪信息

4.7.4 服务网格和k8s

k8s“服务”资源是简化的service mesh,它提供服务发现和请求的轮询调度均衡。完整的service mesh则提供更丰富的功能,如管理安全策略和加密、“断路”以暂停对缓慢响应的实例的请求以及如上所述的负载均衡等。 服务网格本质上是微服务治理,把服务治理,服务通讯,服务安全,服务监控等逻辑从业务逻辑代码中提取出来形成代理并下沉到istio等基础设施中,如下图:

4.7.5 服务网格面临的挑战

  • 复杂性
    服务网格引入了其他基础设施组件、配置要求和部署注意事项,有一定的学习难度。
  • 运维管理费用
    服务网格会带来部署、管理和监控数据面板代理和控制面板组件的额外开销。例如:
    • 确保服务网格基础设施的高可用性和可扩展性
    • 监控代理的运行状况和性能
    • 处理升级和兼容性问题
    • 必须仔细设计和配置服务网格,以最大限度地减少对整个系统的性能影响。
  • 集成挑战
    • 服务网格必须与现有基础设施无缝集成,才能执行其所需的功能。这包括容器编排平台、网络解决方案和技术堆栈中的其他工具。

4.7.6 Istio

Istio / 文档

Istio 是一个开源服务治理框架。Istio 的控制面板组件本身作为k8s 工作负载运行。它使用k8s 容器组(一组共享一个 IP 地址的紧密耦合的容器)作为 sidecar 代理设计的基础。提供了服务发现、负载均衡、路由、限流、链路监控、通信加密。

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

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

相关文章

【linux】麒麟v10安装prometheus监控(ARM架构)

Prometheus介绍 Prometheus 是一个开源的系统监控和警报工具包,最初由 SoundCloud 开发,现在是一个独立的开源项目,并且是云原生计算基金会(CNCF)的一部分。Prometheus 以其强大的数据模型和灵活的查询语言&#xff0…

线下餐厅自主点餐或外卖配送小程序源码系统 带完整的安装代码包以及搭建部署教程

系统概述 线下餐厅自主点餐或外卖配送小程序源码系统是一款专为餐饮行业打造的智能化解决方案。它融合了自主点餐、外卖配送、订单管理、数据分析等多种功能,为餐厅提供了一站式的服务平台。通过该系统,餐厅可以实现线上线下一体化运营,提高工…

猿人学 — 第1届第3题(解题思路附源码)

猿人学 — 第1届第3题 翻页发现一共有两个请求 第一个请求:返回状态码为202(服务器已经接收请求,但尚未处理),响应头中还有一个Set-Cookie 第二个请求:返回了我们想要的数据,携带的Payload中…

基于M芯片MAC系统的hadoop、zookeeper、hbase安装

hadoop、zookeeper、hbase安装 1. vmware配置 搜索:“vmware for mac”,购买正版并下载,或通过其他渠道下载均可 随机掉落的奇怪链接 2. 下载镜像并安装虚拟机 bug记录1 此处选用ubuntu的20以及24,分别出现无法加载安装程序、…

会话管理:深入理解SQLAlchemy会话及其事务处理

引言 SQLAlchemy是一个流行的Python SQL工具包和对象关系映射(ORM)系统,它提供了一个高层的ORM以及底层的SQL表达式语言。在SQLAlchemy中,会话(Session)是与数据库交互的核心概念,它不仅负责对…

外卖配送小程序源码系统 带源代码包以及搭建部署教程

系统概述 外卖配送小程序源码系统是一套完整的解决方案,旨在帮助用户快速搭建自己的外卖配送平台。它融合了先进的技术和创新的设计理念,为用户提供了一个稳定、高效、易用的系统环境。 该系统基于移动端开发,能够与各种操作系统兼容&#…

2.stm32 GPIO输出

GPIO简介 GPIO(General Purpose Input Output)通用输入输出口 可配置为8种输入输出模式 引脚电平:0V~3.3V,部分引脚可容忍5V 输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等 …

网络变压器的作用是什么

在网络通讯主板上,在PHY芯片与RJ45连接器之间,会有一个黑属的小方块,这个东西就叫网络变压器,书名"数据录”人们常把它称为网络隔真变压务,LAN变压客,局域网变压器,滤波器等。 它在一块网络设备接口上所起的作用主要有两个; 一、传输数据,它把PHY送出来的差分信号用差模合…

电子元器件是电子电路中的基本组成部分

电子元器件是电子电路中的基本组成部分,主要包括以下几类: 一、电阻器 作用 限流:限制电路中的电流大小。分压:将电压按照一定比例分配。负载:作为电路中的负载元件。 分类 固定电阻:阻值固定不变。可变电阻…

ros1编译wpr_simulation库

目录 安装项目依赖包编译将环境参数加载到终端程序中运行编译好的ros程序 首先你下载好这个库以后。 安装项目依赖包 scripts库中,存放的是一些依赖项安装脚本以及python脚本。 进入到这个路径的终端。 输入 ./install_for_noetic.sh编译 输入下面命令&#xf…

小猿口算自动PK脚本

大家好,我是小黄。 近期,众多大学生炸鱼小猿口算APP,把一众小学生都快虐哭了,小黄听闻后,也跃跃欲试。对此小黄也参考网上的资料写了一个自动Pk的脚步。 首先大家需要安装一个pytorch环境过程中,如果小伙伴对此不熟悉的…

【YOLOv11】ultralytics最新作品yolov11 AND 模型的训练、推理、验证、导出 以及 使用

​目录 一 ultralytics公司的最新作品YOLOV11 1 yolov11的创新 2 安装YOLOv11 3 PYTHON Guide 二 训练 三 验证 四 推理 五 导出模型 六 使用 文档:https://docs.ultralytics.com/models/yolo11/ 代码链接:https://github.com/ultralytics/ult…

MyBatis 用法详解

文章目录 一、普通 SQL1.1 注解实现:1.1.1 参数传递:1.1.2 增(Insert):1.1.3 删(Delete):1.1.4 改(Update):1.1.5 查(Select&#xff…

大疆M2006+C610 pid参数调优

官方给的示例代码里给的是1.5, 0.1, 0 但试了下空转时显然不太行. 自己摸索出0.8, 0.03, 0 表现如图中的蓝色线 期望速度先两秒的1000,然后一秒的2000,一秒的3000, 0 2000 表现还不错,可以看到0.5秒后与期望值的差距控制在大概10%之内,但还是感觉有些过调 对了先说一下基础知识…

UnityComputeShader Challenge2

UnityComputeShader Challenge2 大部分内容与Challenge1中的一致,重复的地方不做说明 using UnityEngine; using System.Collections;public class Challenge2 : MonoBehaviour {public ComputeShader shader;//纹理的分辨率,正方形public int texReso…

PHP拼团接龙商城系统小程序源码

拼团接龙商城系统,解锁购物新乐趣! 🎉 拼团接龙,购物也能玩出新花样 你是否厌倦了单调的购物方式?想要尝试一种既有趣又实惠的购物新体验?那么,“拼团接龙商城系统”绝对是你的不二之选&#…

fluke双绞线测试-外部串扰AxTALK-测试DEMO样本

外部串扰是电缆束或跳线中相邻电缆之间传输的噪音或串扰。外部串扰是 10GBASE-T 通信应用中主要的噪音源。 电缆线对(NEXT 和 FEXT)之间的串扰信号与传输信号有关,所以网络设备可以利用数字信号处理 (DSP) 技术除去数据信号中的串扰信号。但…

力扣题11~20

题11(中等): 思路: 这种题目第一眼就是双循环,但是肯定不行滴,o(n^2)这种肯定超时,很难接受。 所以要另辟蹊径,我们先用俩指针(标志位)在最左端和最右端&am…