从0开始理解云原生架构

一、云原生发展历史    

        云原生概念最早起源于2013年,由 Matt Stine 首次提出“Cloud Native”这一术语,这个概念强调了应用需要充分利用云的优势,如弹性、可扩展性和服务化。2015年,Matt Stine出版了《迁移到云原生架构》一书,系统阐述了云原生的设计原则和实践方法,包括微服务、持续交付、DevOps文化等关键要素。

        Docker 的发布标志着容器技术的普及,它是云原生技术栈中的基石之一,为应用的打包、部署和运行提供了标准化、轻量级的解决方案。

        2014年开源了 Kubernetes 项目,极大的促进了容器的编排和管理的自动化,使得大规模部署和运维云原生称为可能。

        随着 Docker 与 Kubernetes 的广泛应用,围绕容器和微服务的周边工具和服务迅速发展,形成了完整的云原生技术栈。2015年成立的CNCF(云原生计算基金会)定义了云原生的三大支柱——容器化、微服务、DevOPS,并开始推广服务网站、不可变基础设施等概念。

        云原生技术逐渐成为企业数字化转型的首选方案,大型科技公司如腾讯、阿里巴巴等纷纷拥抱云原生,不仅在内部大规模采用,还推出了一系列云原生产品和服务。同时,云原生技术的应用场景不断拓展,涵盖了金融、制造、零售等多个行业,推动了技术的持续创新和行业标准的形成。

二、单体架构

        单体架构就是将所有的业务维护在一个巨无霸的系统重,一开始业务比较少时开发效率确实还可以,部署也方便。但是随着业务的发展,其缺点也逐渐显现出来,比如沟通成本高、无法单独上线回滚、开发中相互干扰、维护成本高等缺点。单体架构的访问形式如图:

  

三、微服务架构

         微服务架构是对单体架构服务的拆分,可以采用主链路规划,将一个大的单体服务拆分成若干个小的服务。服务拆分后有很多好处,如:

  1. 每个服务都有自己的团队维护,开发效率高,减少了跨团队沟通,提高系统的可维护性
  2. 每个服务都有自己的数据库等配套设施,降低了耦合,减少了互相影响
  3. 每个微服务可以采用异构语言进行搭建而互不影响,这样更加灵活
  4. 可以快速迭代上线而不影响其他业务,如果出现问题也能做到快速回滚
  5. 资源利用率更高,可以将资源定向划拨给核心的服务,将共享变为独享,提高其可用性和性能

        云原生与微服务架构相辅相成互相促进,主要体现在以下几个方面。

        每个微服务可以独立部署和扩展,在云原生环境中,这使得可以根据实际需求动态调整资源分配,迅速响应流量变化。

        微服务支持快速迭代开发,云原生的 CI/CD 流程和基础设施自动化进一步加速了这一过程,使得软件更新能够频繁且可靠的交付。

        微服务拆分后降低了故障传播风险,不会影响整个系统,结合云原生的自我修复和容错机制,如 K8s 的自我恢复能力,可以进一步提升系统的稳定性和可用性。

        由于微服务能够精细化的管理资源,云原生环境下的自动伸缩、按需付费模式和资源优化组合策略,可以显著降低运营成本,提高资源利用率。

        在云原生和微服务架构中,强大的观测工具是必不可少的,能帮助运维团队快速定位和解决问题,以确保服务质量。

四、云原生架构

        云原生架构主要以容器化技术 Docker 和 容器编排技术 K8s 组成。以前开发完成后,我们的交付物通常是一个 Jar 包,然后部署到服务器中运行,有了容器技术后,我们提交的交付物变成了一个容器镜像,容器镜像是由文件系统和参数组成的轻量级、独立的、可执行的软件包,包含了运行某个软件所需的所有内容,包括代码、运行时环境、库、环境变量和配置文件等,如下图:

        4.1 云原生架构组成

        云原生的核心组成部分包括:

  • 容器化:应用程序及其依赖被打包到轻量级的容器中,如Docker容器,这使得应用可以在任何支持容器的环境中无差异运行,提高了可移植性和隔离性。
  • 微服务架构:应用被分解为一系列小而专的服务,每个服务负责一个特定的功能,可以独立开发、部署和扩展,提高了系统的灵活性和可维护性。
  • 服务网格(Service Mesh):如 Istio、Linkerd等,为服务间通信提供了一层抽象,负责服务发现、负载均衡、加密、监控等,使得微服务之间的交互更加安全和高效。
  • 持续集成/持续部署(CI /CD):通过自动化工具(如 Jenkins、GitLab CI/CD等)实现代码的快速迭代和自动部署,加速软件交付流程。
  • 声明式基础设施:使用如 Kubernetes YAML 文件等声明式配置来定义期望的系统状态,而非详细的步骤指令,让系统自动达到并维持该状态。
  • 可观测性:包括日志、监控和追踪(如ELK Stack、Prometheus、Jaeger),确保能够快速定位和解决问题。
  • DevOps:强调开发(Dev)和运维(Ops)团队的紧密合作,自动化运维认为,促进快速反馈和持续改进。

        4.2 云原生优势

        弹性和可扩展性:云原生应用设计为能在需求增长或下降时自动扩缩容,借助服务编排工具 K8s 可以根据实时流量自动添加或删除实例,确保应用始终保持高性能和高可用性,同时避免资源浪费。

        高可用性和容错性:通过微服务架构和云平台的负载均衡、故障切换功能,云原生应用能够有效应对单点故障。即使部分服务出现故障,也不会影响整个系统的正常运行,提高了系统的稳定性。

        快速迭代与持续交付:云原生倡导DevOps文化,结合CI/CD(持续集成/持续部署)流程,使得软件的构建、测试、部署自动化,加速了应用的迭代速度,缩短了市场响应时间。

        服务解耦与模块化:微服务架构让每个服务独立开发、部署和扩展,减少了服务间的依赖,便于团队专注于各自服务的优化,提高了开发效率和系统的可维护性。

        标准化和可移植性:基于容器化和标准化的云原生技术栈(如Docker、K8s),应用可在不同云环境或数据中心间无缝迁移,提高了灵活性和供应商的选择自由度。

        可观测性:云原生环境强调全面的可观测性,包括日志、监控和追踪,结合自动化运维工具,使得问题快速定位和解决,减少了人工干预,降低了维护负担。

五、总结

        云原生技术栈的采用,使组织能够在公有云、私有云和混合云等环境中快速构建、部署和运行应用,适应快速变化的市场需求,同时也促进了开发和运维团队的紧密协作,推动了业务的持续创新和快速增长。

        

往期经典推荐:

Kubernetes: 从零开始理解K8s架构-CSDN博客

Kafka VS RabbitMQ,架构师教你如何选择_消息中间件选型分析-CSDN博客

高并发架构设计模板-CSDN博客

TiDB高手进阶:揭秘自增ID热点现象与高级调优技巧-CSDN博客

Redis性能大挑战:深入剖析缓存抖动现象及有效应对的战术指南-CSDN博客

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

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

相关文章

ChatGPT官网5月14日凌晨1点发布会推出最新GPT4o大模型,贾维斯时刻要来了?

就在今天北京时间2024年5月14日凌晨1点中,OpenAI进行了发布会,这次发布会的内容炸裂,一起来看下吧! GPT4o多模态大模型发布 首先公开的是GPT4o多模态大模型的发布,相较于GPT-4turbo速度更快,更便宜。我刚开…

水离子雾化壁炉与会所的氛围搭配

水离子雾化壁炉在会所的氛围搭配可以营造出舒适、现代和高雅的氛围,以下是一些搭配建议: 豪华会所装饰: 将水离子雾化壁炉作为会所豪华装饰的一部分,放置在会所的核心区域或休息区域。选择适合会所风格的壁炉款式,如…

echarts的柱状图使用

1. 柱状图&#xff08;柱体顶部使用外部图片 相关代码 <template><div class"out-bg"><div class"container" ref"warnChartRef"></div></div> </template><script> import * as echarts from echar…

短视频矩阵系统/源码----可视化剪辑技术独家开发

现阶段市面上大多矩阵软件都非常程序化且需要使用者具有较强的逻辑思维能力或剪辑经验&#xff0c;这使得一些个人、团队、企业在使用时无形中增加了学习成本&#xff0c;剪辑出来的效果大多不尽如人意&#xff0c;发出来的视频没有流量&#xff0c;根本达不到预期效果。 如何提…

绘制奇迹:Processing中的动态图形与动画

&#x1f680; 欢迎回到Processing的世界&#xff0c;你的艺术编程航程刚刚开始。在我们的入门篇中&#xff0c;你已经学会了如何用Processing绘制基本的静态图形。现在&#xff0c;让我们一起探索Processing强大的动态图形和动画功能&#xff0c;释放你的创造力&#xff0c;走…

59.基于SSM实现的网上花店系统(项目 + 论文)

项目介绍 本站是一个B/S模式系统&#xff0c;网上花店是在MySQL中建立数据表保存信息&#xff0c;运用SSMVue框架和Java语言编写。并按照软件设计开发流程进行设计实现充分保证系统的稳定性。系统具有界面清晰、操作简单&#xff0c;功能齐全的特点&#xff0c;使得基于SSM的网…

微信小程序的Vant Weapp组件库 与 weui组件库 的区别?

微信小程序中的Vant Weapp组件库和WeUI组件库是不一样的。虽然它们都提供了丰富的组件和样式&#xff0c;用于帮助开发者快速构建出具有现代感和一致性的小程序界面&#xff0c;但它们在来源、设计理念和组件构成上有所不同。 一、Vant Weapp组件库 &#xff08;1&#xff09…

GSCoolink GSV6125 替LT6711A HDMI2.0转Type-C/DP1.4

GSCoolink GSV6125 在 Type C/Dp monitor&#xff0c;线材&#xff0c;VR/AR&#xff0c;系统均有大量的应用机会&#xff0c;且目前只有龙迅LT6711A 竞争对手。 Gscoolink GSV6125是一款高性能、低功耗的HDMI 2.0转Type-C/DP1.4转换器。通过集成增强型微控制器&#xff0c;GS…

运营商二次放号查询接口如何对接

运营商二次放号查询接口又叫手机二次放号检测接口&#xff0c;指的是输入手机号和日期&#xff0c;查看在该日期之前是不是二次放号。那么运营商二次放号查询接口如何对接呢&#xff1f; 这边我找到了一家叫数脉API的公司&#xff0c;他们刚好有这个接口&#xff0c;首先注册账…

python判断成绩是否优秀

def evaluate_grade(score): if not isinstance(score, (int, float)): raise ValueError("输入的成绩必须是整数或浮点数") if score < 0 or score > 100: raise ValueError("输入的成绩必须在0到100之间") if score > 90: return "优…

react组件渲染性能优化之函数组件-useMemo使用

useMemo的主要作用就是缓存值的&#xff0c;某些时候&#xff0c;组件中某些值需要根据状态进行一个二次计算&#xff08;类似于 Vue 中的计算属性&#xff09;&#xff0c;由于函数组件一旦重新渲染&#xff0c;就会重新执行整个函数&#xff0c;这就导致之前的二次计算也会重…

CSS的基础语法和常见的语法简单归纳

CSS CSS 是层叠样式表&#xff08;Cascading Style Sheets&#xff09;的缩写。它是一种用来控制网页样式和布局的标记语言。通过 CSS&#xff0c;可以定义网页中的元素&#xff08;如文字、图像、链接等&#xff09;的外观和排版方式&#xff0c;包括字体、颜色、大小、间距、…

通义千问接口

接口文档 请求 import random from http import HTTPStatus from dashscope import Generation # 建议dashscope SDK 的版本 > 1.14.0def call_with_messages():messages [{role: system, content: You are a helpful assistant.},{role: user, content: 如何做西红柿炒…

产品推荐 | 基于 AMD Alveo V80 数据中心的FPGA加速器卡

1、产品概述 Alveo V80 卡采用强大的 AMD Versal™ XCV80 HBM 系列自适应 SoC&#xff0c;将高带宽存储器 (HBM2e) 和 800 Gb/s 高速网络封装到全高、 长外形尺寸的双插槽卡中&#xff0c;专为在本地服务器或云中部署而设计。 V80 加速器经过优化&#xff0c;可通过 AMD Vers…

Milvus基本介绍与相关概念

一、介绍 Milvus是一种开源的特征向量相似度搜索引擎,主要用于处理大规模的向量数据。它是由ZILLIZ团队推出的一款高效、可扩展的相似度搜索引擎。 Milvus的基本概念包括: 向量:Milvus主要用于处理向量数据,向量是由一组数值组成的数据结构,可以表示特征或者数据实例。距…

运维别卷系列 - 云原生监控平台 之 06.prometheus pushgateway 实践

文章目录 [toc]Pushgateway 简介Pushgateway 部署创建 svc创建 deployment Pushgateway 测试删除 Pushgateway 上对应 lable 的数据 Pushgateway 简介 WHEN TO USE THE PUSHGATEWAY Pushgateway 是一种中介服务&#xff0c;允许您从无法抓取的作业中推送指标。 The Pushgateway…

智慧园区数字化平台总体规划与建设方案(49页PPT,软件全套建设方案)

01智慧园区数字化平台总体规划 02智慧园区工业云平台建设方案 03园区智慧办公平台建设方案 04园区智能工厂建设解决方案 05园区智慧能源管理解决方案 06园区智慧政务管理解决方案 软件全套精华资料包清单部分文件列表&#xff1a; 工作安排任务书&#xff0c;可行性分析报告&am…

基于Django实现的校园疫情监控平台

基于Django实现的校园疫情监控平台 开发语言:Python 数据库&#xff1a;MySQL所用到的知识&#xff1a;Django框架工具&#xff1a;pycharm、Navicat、Maven 系统功能实现 登录注册功能 用户在没有登录自己的用户名之前只能浏览本网站的首页&#xff0c;想要使用其他功能都会…

web系统日常运维命令和工具

一、前言 web系统日常运维命令和工具 二查看服务器资源使用情况 1、内存使用情况 free -h 2、cpu 使用情况 3、磁盘使用情况 df -h /home 4、查看文件日志 查看文件尾部持续输出 tail -n 1000 -f xxx.log 查找文件匹配内容 cat xxx.log | grep XXXXX 查看zip文件内…

视觉识别应用的场景有哪些

1.视觉识别应用的场景有哪些 视觉识别应用的场景非常广泛&#xff0c;以下是一些常见的应用场景&#xff1a; 品牌与营销&#xff1a;视觉识别在品牌建设中起着至关重要的作用。它能帮助企业在市场上建立独特的品牌形象&#xff0c;并通过各种印刷品&#xff08;如名片、信纸…