从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;根本达不到预期效果。 如何提…

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

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

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

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

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

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

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

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

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

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

基于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文件内…

Java数据类型:基本数据类型

Java是一种强类型语言&#xff0c;定义变量时&#xff0c;必须指定数据类型。 // 变量必须指定数据类型 private String username;初学者不免有个疑问&#xff1a;在实际编写代码的过程中&#xff0c;该如何选择数据类型呢&#xff1f; 回答这个问题之前&#xff0c;先来解决…

线性/非线性最小二乘 与 牛顿/高斯牛顿/LM 原理及算法

最小二乘分为线性最小二乘和非线性最小二乘 最小二乘目标函数都是min ||f(x)||2 若f(x) ax b&#xff0c;就是线性最小二乘&#xff1b;若f(x) ax2 b / ax2 bx 之类的&#xff0c;就是非线性最小二乘&#xff1b; 1. 求解线性最小二乘 【参考】 2. 求解非线性最小二乘…

[数据结构]红黑树的原理及其实现

文章目录 红黑树的特性红黑树的时间复杂度推导&#xff1a;结论红黑树与AVL树比较 红黑树的插入红黑树的节点定义调整策略思考情况2&#xff1a;思考情况3&#xff1a; 代码实现myBTRee.htest.cpp 红黑树的特性 红黑树最常用的平衡二叉搜索树。跟AVL树不同的是&#xff0c;红黑…

阻抗控制理解之逆动态控制律

具有六个自由度的二阶机械系统&#xff0c;其特征是给定的质量、阻尼和刚度&#xff0c;称为机械阻抗。 用于运动控制的加速度解决方法&#xff0c;它旨在通过逆动力学控制律在加速度水平上解耦和线性化非线性机器人动力学。在与环境存在交互作用的情况下&#xff0c;控制律 考…

代码托管(二)git(4)冲突解决

一、pull更新代码冲突 二、cherry-pick冲突 1、冲突演示 本地check out到当前分支&#xff0c;双击目标分支&#xff0c;选择需要cherry-pick的commit&#xff0c;右键选择cherry-pick。 &#xff08;1&#xff09;如果没有冲突&#xff0c;会自动add--》并自动commit&#…

Sam Blackshear谈Move语言的创新

Sui上的Move编程语言融合了三项基本创新&#xff1a;面向对象的数据模型、可编程交易区块和动态字段。Mysten Labs的联合创始人兼首席技术官Sam Blackshear在五年前创建了Move&#xff0c;这是一种专门为在区块链上编写智能合约而设计的语言。这三项在Sui上的创新提升了Move的潜…

【nfs服务部署服务端和客户端搭建】

原理 NFS&#xff08;Network File System&#xff09;是文件服务器之一。它的功能是可以通过网络&#xff0c;让不同的机器、不同的操作系统可以彼此共享数据文件。 NFS服务器可以让服务端的共享目录挂载到本地端的文件系统中&#xff0c;其他服务器如果想访问共享目录&#…

单链表经典算法 面试题--力扣02.04

链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09;【点击即可跳转】 思路&#xff1a;创建新链表&#xff1a;大链表和小链表 将pcur节点小于x的值&#xff0c;尾插在小链表中 将pcur节点大于或等于x的值&#xff0c;尾插在大链表中 最终---- return lessHead->…