云原生入门系列(背景和驱动力)

        做任何一件事,或者学习、应用一个领域的技术,莫过于先要想好阶段的目标和理解、学习它的意义是什么?解决了什么问题? 

        这部分,就尝试来探讨下这个阶段需要理解并达成的目标以及践行云原生的意义在哪里。

1.历程

        任何阶段技术的出现,都会有一个基本背景作为起源,最初是从解决一些关键点的问题出发,逐渐的变成阶段的主流。技术领域沿着这条脉络,去尝试理解会更容易入门一些。

        这里尝试梳理一个非官方权威的演变阶段,来整理下云原生的基本脉络。

应用架构演变

1)商用IOE体系阶段

        这个不用说,在IT领域做的比较久的工程师们能理解,早期的电信、银行等领域的大型系统基本上都是老外企业提供的商用的产品搭建的,我们主要还是以开发业务级别的框架和代码为主。

        这里的IOE是一类昂贵的商用解决方案的代名词,商用的小型机、商用磁盘阵列存储、商用的Unix、商用的中间件、商用的数据库一系列的内容构建的系统。

        在这个阶段构建的系统,成本确实不低,所以这时候的构建的大型系统都是一些较大的行业去践行的事情。基本结构如下:

  • 基础资源构筑,靠的是小型机、商用高端的存储、能力强劲的数据库(这个阶段主要几家美国的企业处于半垄断地位,相互竞争)
  • 系统的分布式能力建设,依靠商用的中间级,那个时期商用的中间件研发投入也相对较大,所以基本上架设系统的核心体系都还是封闭的体系。

关注的问题:

  • 成本高昂,一般中小型企业尤其是类似移动互联网前期的业务企业,都比较难以构建丰富的业务场景的系统,仅限于大企业应用。硬件的成本受限于商用小型机高昂的价格,软件成本受限于商用软件的授权费用,软件方面人员门槛等成本(成本)
  • 基于这套体系构建的软件系统,稳定性相对高些,出问题的概率低,但是这些重要的基础设施其自身的维护相对昂贵、需要高成本的环境要求。稳定性相对高,但是成本也相对高昂,尤其应对更大规模的业务,所以基本聚焦在通信、金融等领域(稳定性)
  • 基于这套体系,在构建的基础设施上,体系搭建的效率相对较低,每次容量的扩充,都对系统有较高要求的迁移或者割接升级,业务开发方面也难以快速的迭代,每次系统的升级都是规模性操作。(效率)

2)服务化单体(去IOE后的X86阶段)

        X86服务器很早也就诞生了,但是出于稳定、安全性等方面考虑没有大规模推广应用起来。根本原因还是网络化的分布式系统会因为网络等因素,导致在“差不多化”的体系中不够健壮、成熟、普及。(商用的产品搭建的分布式大型的系统成本还很高,这个后面也会说到上云考虑的成本、效率等问题)

        在后续的去除IOE的条件慢慢成熟后,最先去的就是小型机这个计算体系。在去小型机的路上,需要实现一套成本和稳定性都可控的分布式软件系统,这个阶段基本上都是要有相当投入,才可以做到,这个阶段自研和部分开源并存。 

  • 这个阶段主要实现的是去除I,大规模启用X86服务器,随之而来的开源的Linux取代了商用Unix操作系统;
  • X86化后,服务器数量增大,随着三层架构前后端解耦,引入负载均衡代理层(商用F5或者Nginx,Haproxy等)替换原先分布式中间件,实现分布式应用能力;
  • 在原先重度依赖数据库的基础上增强了实时性,增加了缓存层,缓存领域也有很多自研和开源的实现出现,分层架构实现更清晰。

关注的问题:

  • X86服务器算力不如小型机,迁移后的服务器数量成倍增加,增加运维的维护成本;另外自研相关分布式软件,拉高了投入门槛,增加了成本(这里机器本身的成本从小型机转变过来的同等的计算量会节省一部分,但是需要结合损耗比来看)。(成本)   
  • X86服务器损坏率较高,因为相对廉价,因此具备冷备、热备等高可用能力要求增加,这部分也是非常考验投入保障稳定性要求的地方。(规模和稳定性)
  • 机器分化成更小的计算单元,机器的规模就会增加很多,就开始需要开始管理这些机器,组合成共享的资源让应用在上面能够很快速的做部署和运行,提升效率。(效率)

3)服务化拆分(开源阶段)

        开源在整个应用架构的演变中让开发分布式应用变得普惠,在计算机语言不断高度抽象的进程中,开源盛行直接拉低了进入和应用分布式架构的门槛,承担着非常重要的角色。

  • 原本存量的商用的中间件,技术框架等因为开源的盛行,尤其在国内的盛行,开始出现规模替代;
  • 随着分布式技术栈从自研到开源的迁移,基本上奠定了大规模开发分布式应用的基础;
  • 分布式应用开发变得简单,开源的生态繁荣,开源组合的系统变得更容易。

关注的问题:

  • 尽管在资源层面从小型机到成本低下的x86架构,甚至虚拟化到容器进一步微化资源单元,但是成本随着应用规模、数据的规模随之提升,如何提升大规模资源共享情况下的利用率是逐渐需要解决的问题。(成本)
  • 随着在线实时服务的不断增长,规模和稳定性的要求越来越高,双活、两地三中心、甚至多活成为线上业务必备能力,这些能力要求的同时都带来了应用和资源的规模增加,稳定性的要求越来越高。另外随着开源分布式技术栈规模运用,各种分布式集群化的要求也不断增长(规模和稳定性)
  • 业务从需求到开发,部署上线的效率一直是企业的IT研发团队追求的主题,这个阶段如何构建一套从开发,应用构建到部署,发布,灰度等业务研发体系变得重要(效率)。

4)云计算的阶段

        从上面的演变过程,过去业务系统的开发和IT技术能力结合紧密,经常按照领域实现垂直建设(业务系统+专有IT技术能力)。随着企业关注的成本、效率、规模和稳定性支撑的深入,越来越需要把基础技术能力沉淀下来,让业务需求的开发和推出聚焦业务领域的软件开发工作。

        尤其在开源被普及化之后,搭建的每个IT能力部分都是服务化、分布式集群化的,更加需要相对统一的管理支撑体系。公有云和私有云就是在这样的背景下面,开始扩张的建设之路(云的概念很早提出,但是在最终被普及化的今天是需要一个漫长的过程)。

        催生了今天很多的云厂商商业模式,不管是企业自建的私有云还是提供专业服务的公有云,对于业务支撑体系来讲,“业务上云“成为核心的趋势和强烈的诉求。

2.意义

        那为什么要云原生呢?相信从上面企业级的业务支撑体系来看,基本上可以总结如下:

  • 对于企业来讲,使用IT技术为业务支撑,赋能是数字化阶段的必然过程;企业在使用IT技术方面的考虑通常是上面尝试总结的那几个点:“成本、规模和稳定性、效率、安全等”
  • 云是IT支撑演变到一定阶段的产物,是把上面演进过程中的通用、可复用的各种能力下沉下来,构筑可复用、按需的基础设施。(”业务上云“的架构其实就是云原生化的本质所在,就是业务应用建设,怎么有一套标准化的云上架构,更好的利用云上的核心能力,服务好业务,让业务开发不需要关注如下的特性,聚焦业务本身。)
    • 所有资源共享,追求极致的成本
    • 所有软件分布式化,追求更大规模,更稳定的环境
    • 所有软件部署、运维等自动化(追求高效率)
  • 云原生是业界对这一切的思考,最终通过类似CNCF等这些组织沉淀和推广应用(代表集体的智慧)
  • 在这个过程中,通过云原生技术使组织能够在“现代动态环境”中构建和运行可扩展的应用程序(这个现代运行环境当下指的是云或者其他不可变基础设施)
  • 那么具体到当下的阶段,就是比如在公共、私有和混合云的环境下,构建容器、服务网格、微服务、不可变基础设施和声明性API就是实现云原生这种方法的例子。

        所以我们当下所谈的云原生的实践和应用,都是结合当前技术演变的基础之上,沉淀的一些最佳实践思路和技术构筑的一套支撑体系。这套技术体系中最核心的部分,就是围绕:容器化基础设施环境、微服务、服务网格等具体的标准化的开源技术栈。

3.目标

        理解了云原生的意义,​就能理解当下云原生架构的思路是建立在当前标准组织或者有影响力的组织(如CNCF)推行的标准化技术栈的体系基础之上的方法论实践。

        在当下的业务支撑体系,按照如下的技术演进思路进行组合。

  • 结合容器和容器编排技术(Docker+k8s)构筑声明式架构的不可变基础设施,基础设施的标准化和灵活、稳定性对架设在异构的云环境中尤为重要;
  • 结合云原生的相关服务网格、微服务相关的技术服务构筑标准化的业务架构,标准统一意味着成本、效率和稳定性的可控;
  • 云原生的体系,随着标准组织在不断的扩充蓝图,覆盖到云上业务支撑的方方面面,同时结合敏捷化的Devops向开发者赋能。

        最终结合云原生的建设评估模型,来检验整个构筑的云原生支撑体系的成熟度。当然,我们IT支撑体系支撑的好不好,最终还是业务发展的情况来决定的,业务是最终企业运营聚焦的关键点。

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

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

相关文章

【开源】基于Vue.js的衣物搭配系统的设计和实现

项目编号: S 016 ,文末获取源码。 \color{red}{项目编号:S016,文末获取源码。} 项目编号:S016,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 衣物档案模块2.2 衣物搭配模块2.3 衣…

解锁潜力:创建支持Actions接口调用的高级GPTs

如何创建带有Actions接口调用的GPTs 在本篇博客中,我们将介绍如何创建一个带有Actions接口调用的GPTs ,以及如何进行配置和使用。我们将以 https://chat.openai.com/g/g-GMrQhe7ka-gptssearch 为例,演示整个过程。 Ps: 数据来源&#xff1a…

全网最全c++中的system详解

这篇文章是二发,做了些微调,感兴趣的朋友可以看原文:C中的system_一只32汪的博客-CSDN博客 1,简介 system()函数是在C制作中十分常用,有用的一个函数。 其效果类似于系统中"cmd"控制台和"bat"文件…

【nlp】2.8 注意力机制拓展

注意力机制拓展 1 注意力机制原理1.1 注意力机制示意图1.2 Attention计算过程1.3 Attention计算逻辑1.4 有无attention模型对比1.4.1 无attention机制的模型1.4.2 有attention机制的模型1 注意力机制原理 1.1 注意力机制示意图 Attention机制的工作原理并不复杂,我们可以用下…

使用持久卷部署 WordPress 和 MySQL

🗓️实验环境 OS名称Microsoft Windows 11 家庭中文版系统类型x64-based PCDocker版本Docker version 24.0.6, build ed223bcminikube版本v1.32.0 🖇️创建 kustomization.yaml 你可以通过 kustomization.yaml 中的生成器创建一个 Secret存储密码或密…

DBeaver安装与使用教程(超详细安装与使用教程),好用免费的数据库管理工具

🏆好的学习、工作从选对一个对于自己好用的软件开始。 点击目录跳转至相应目录的内容,更方便观看 🏆目录 🏆一、DBeaver介绍1.它支持任何具有一个JDBC驱动程序数据库,也可以处理任何的外部数据源。2.跨平台使用、支持…

python-opencv划痕检测-续

python-opencv划痕检测-续 这次划痕检测,是上一次划痕检测的续集。 处理的图像如下: 这次划痕检测,我们经过如下几步: 第一步:读取灰度图像 第二步:进行均值滤波 第三步:进行图像差分 第四步&#xff1…

java的包装类

目录 1. 包装类 1.1 基本数据类型和对应的包装类 1.2 装箱和拆箱 1.3 自动装箱和自动拆箱 1. 包装类 在Java中,由于基本类型不是继承自Object,为了在泛型代码中可以支持基本类型,Java给每个基本类型都对应了 一个包装类型。 若想了解…

抽象工厂设计模式是什么?什么是 Abstract Factory 抽象工厂设计模式?Python 抽象工厂设计模式示例代码

什么是 Abstract Factory 抽象工厂设计模式? 抽象工厂设计模式是一种创建型设计模式,旨在提供一个创建一系列相关或相互依赖对象的接口,而无需指定其具体类。它允许客户端使用抽象的接口创建一组相关对象,而无需关注实际的对象实…

[超详细]基于YOLO&OpenCV的人流量统计监测系统(源码&部署教程)

1.图片识别 2.视频识别 [YOLOv7]基于YOLO&Deepsort的人流量统计系统(源码&部署教程)_哔哩哔哩_bilibili 3.Deepsort目标追踪 (1)获取原始视频帧 (2)利用目标检测器对视频帧中的目标进行检测 &#xff08…

学习量化交易如何入门?

Python 量化入门很简单,只需 3 步就能快速上手! 题主在程序方向没有相关经验,今天就从量化行业的通用语言-Python 着手,教大家如何快速入门。 一、准备工作 在开始 Python 编程之前,首先需要确保你的计算机上安装了合适的 Pytho…

ros2机器人上位机与下位机连接方式(转载)

从硬件连接、通信协议和软件设计开发,上位机如何控制下位机? 由你创科技2023-09-07 10:38广东 随着科技的不断发展,自动化控制系统已经广泛应用于各个行业。在自动化控制系统中,上位机和下位机是两个重要的组成部分。上位机主要…

C语言中的函数(超详细)

C语言中的函数(超详细) 一、函数概述二、C语言中函数的分类1.库函数2.自定义函数三、函数的参数1.实际参数(实参)2.形式参数(形参)四、函数的调用1.传值调用2.传址调用五、函数的嵌套调用和链式访问1.嵌套调…

X2Keyarch迁移工具实战 | 将CentOS高效迁移至浪潮云峦操作系统KeyarchOS

X2Keyarch迁移工具实战 | 将CentOS高效迁移至浪潮云峦操作系统KeyarchOS 1. 搭建仿真线上业务环境2. 安装KeyarchOS操作系统和X2Keyarch迁移工具3. 将CentOS系统业务迁移至KeyarchOS系统 浪潮信息云峦操作系统KeyarchOS基于Linux Kernel、OpenAnolis等开源技术自主研发的一款服…

Django 入门学习总结8-管理页面的生成

修改polls/admin.py文件为: from django.contrib import admin from .models import Choice, Question class ChoiceInline(admin.StackedInline): model Choice extra 3 class QuestionAdmin(admin.ModelAdmin): fieldsets [ (None, {&q…

【Linux】权限的理解和使用

👦个人主页:Weraphael ✍🏻作者简介:目前正在学习c和算法 ✈️专栏:Linux 🐋 希望大家多多支持,咱一起进步!😁 如果文章有啥瑕疵,希望大佬指点一二 如果文章对…

智能座舱架构与芯片- (15) 测试篇 下

三、持续集成与交付 3.1 自动化编译框架 在智能座舱软件中,分为上层应用软件和底层软件。有些上层应用软件是与指令集平台无关的,例如Java应用程序等,它们对所运行的CPU平台没有依赖性,可以很好的适配当前平台进行执行。而在底层…

微服务学习|初识Docker、使用Docker、自定义镜像、DockerCompose、Docker镜像仓库

初识Docker 项目部署的问题 大型项目组件较多,运行环境也较为复杂,部署时会碰到一些问题 依赖关系复杂,容易出现兼容性问题 开发、测试、生产环境有差异 Docker如何解决依赖的兼容问题的? 将应用的Libs (函数库)、Deps (依赖)配置与应用…

缓存雪崩、击穿、穿透及解决方案_保证缓存和数据库一致性

文章目录 缓存雪崩、击穿、穿透1.缓存雪崩造成缓存雪崩解决缓存雪崩 2. 缓存击穿造成缓存击穿解决缓存击穿 3.缓存穿透造成缓存穿透解决缓存穿透 更新数据时,如何保证数据库和缓存的一致性?1. 先更新数据库?先更新缓存?解决方案 2…

虚拟机里为什么桥接模式可以广播,NAT模式不能广播?

虚拟机里为什么桥接模式可以广播,NAT模式不能广播? 我们在虚拟机里做调试的时候,进场会遇到NAT广播包发不出,而桥接模式可以。下面是找到的资料。 在虚拟机网络配置中,桥接模式(Bridged mode)允…