云原生的概念

云原生其实是一种思想,并不是一种工具,云原生更多的是一种泛化的东西,是一种思想观念,首先要有意识的去想云原生这种东西,其次,他是一种技术、流程和企业管理方法的集合,所谓的技术,k8s是他的一部分,所谓的企业管理方法,比如说基于DevOps,构建CI/CD的流水线

1 应用层面

原来我们作为业务开发只关心业务逻辑开发的场景会越来越弱化,不能再局限于我只写一段业务逻辑,这样会制约我们的视野,所谓的云原生就是,除了要关心我们的业务,还要关心我们的这块业务最终是要上云的,上云和不上云有哪些差异呢?

2 平台层面

平台侧在云原生技术栈有更高的要求,这种更高的要求就是应对了在前一代云平台的那用半自动化平台所演进出来的更进一步的体系,它追求的是一种全自动化的体系,原来各个云平台厂商都在解决业务的部署,版本的发布,灰度控制、故障转移、自动扩缩容,所有的这些问题,其实都是业界面临的共同问题

原来技术不统一,各家都在自己做自己的,现在有了kubernetes,有了云原生这个技术栈,就是世界上这个领域最专精的一批专家,通过开源的方式,把所有这些共同的问题全部在kubernetes以及云原生的技术栈的框架里边统一解决掉了,留给每家企业要做的事情就是落地,落地的话无非就是将kubernetes装到我们的环境里,数据中心或者上到某个云上边,依据公司自身的情况,去做一些配置,去做一些整合,去跟自己的服务做一些整合,或者跟一些云提供商做一些整合,最终的目的是通过这种整合使得我们的云原生平台和我们的周边环境形成一个完备的自动化体系,不用再铺人去开发这一套东西,拿来直接用就可以了

1. 应用的容器化封装

使用轻量级的技术来伪装一个虚拟化操作系统,使得更多的资源来给应用,因为不需要模拟一个操作系统,只是伪装一个操作系统,不需要那么多的计算资源,那么这些资源都可以给到应用,而且是一个轻量级的,性能非常好

基于容器化技术,用了cgroup,那么所有的资源用量,cpu、内存、磁盘、IO,这些信息都可以用cgroup暴露出去,这样,应用的监控就统一了,所以,容器化的意义在于:一个是通过轻量级的技术来封装应用,做了很好的资源隔离和资源管控,还有就是通过统一的技术栈,把资源用量暴露出去,这样的话,就拉通了整个平台的监控,不需要再去构造一套监控系统了

2. 不可变基础架构

使用容器镜像OverlayFS,容器镜像构建出来是什么样的,再建一个新的实例,就跟当时的状态是一样的,这样就满足了我们应用无状态的特性,我们就可以用很少的人去管理成千上万的实例,任意一个实例出现问题,只要去替换就好了,而且底层的os是只读的文件系统,这样保证底层的基础架构师不可变的,不可变的好处是可以随意替换。

这也是之前虚拟化技术的痛点所引发的思考,演变出来的一些需求和能力。以前在虚拟化的世界里,交付的是一个个OS,给出一个ip以及用户名和密码,就可以登录到这个节点,登录到这个节点之后,能干什么云平台这边就不管了,很多人就可以在上边做操作,人为的都是不可靠的,今天做了这个操作,明天做了另一个操作,不说很久,几个月之后谁都不知道这个机器做了什么操作,没有人能说清楚,那么有一个问题,突然这个实例出现了故障,要把它换掉,中间的哪些变更都是不可追溯的,那么替换就几乎是不可能的,如果有了不可变基础架构的话,这些问题就不可能存在了,直接登录到机器上去做变更的这条路已经被堵死了,所以我们就可以做到实例坏了换一个

3. 声明式API

kubernetes的杀手锏,把所有在kubernetes管纳范围的对象,比如说计算节点、作业,负载均衡的配置,DNS的配置,接入的网络,存储卷等所有我们可以用到的都抽象成为一个个声明式API。

我们可以定义很多对象,当然包含很多的组,他归了很多类,比如管理应用的、管理节点的,这些对象就可以定义。比如说这个是一个节点,这个是一个Pod,这个节点是用来声明算力的,比如说需要跑什么样的业务,需要多少资源,它定义了很多很多的一些api,把它所管纳的对象全都定义为了api,它从诞生开始,就把自己定义为下一代云原生的标准,它声明了这些api以后呢,google它并没有闭门造车,它去找了AWS,找了红帽,找了微软,找了中国的腾讯华为阿里等各个大的云提供商,这些api是不是认可,如果你认可的话我们一起共建,所以它相当于订立了一个标准,以一个中立的方式订立了一个标准,有了这个标准,在去找各个大厂背书,每家都背书了,相当于每家都变相的支持kubernetes,那么kubernetes的部署率就越来越高了,他就变成了下一代的标准,变成了一个事实的标准,声明式API使得kubernetes的地位越来越不可撼动

4. 服务网格

以前大家做微服务治理都是用springcloud,这种微服务的框架,它提供了一些能力,比如路由管理、限流、熔断,但是springcloud有个问题是绑死了技术栈,只有java可以用,其他语言就没有了,这样就没有一套微服务框架去用了,那怎么办,能不能把流量的治理,熔断限流这些基础能力,偏平台的能力从业务代码中抽离出来,而不以sdk的方式跟应用紧耦合,而是通过类似sidecar模式,在我们的应用旁边再跑一个进程,这个进程里边去实现一些负载均衡、熔断限流的能力,所有的流量都经过我的sidecar,这样这个sidecar就可以做很多事情,协议升级,统一监控,熔断限流,负载均衡,安全保证这些事情都可以去做。

容器技术使我们的应用统一了,服务网格使我们的网络流量也统一了。

可观察性是非常重要的一环,需要要知道业务跑成什么样子了,基于容器技术和服务网格我们的监测是统一的。

容器的这种便捷性和资源封装的能力,使我们cicd的pipline的构建成本很低,docker的口号 build once run anywhere,一次构建,处处运行,那么这样就天然适配cicd,cicd通了后devops整个流程就通了,这样工程师做频繁变更的可能性就提升了,风险就小了。

基于极客时间孟凡杰老师的年中复盘整理

Original: https://www.cnblogs.com/cnsure/p/16513499.html
Author: 观书喜夜长
Title: 云原生的概念

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/710772/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 我又造了个轮子:GrpcGateway

    我个人对 _GRPC_是比较感兴趣的,最近在玩 _通过前端_调用GRPC。通过前端调用GRPC业界有两种方式: GRPC Web和 GRPC JSON转码。 GRPC Web 通过…

    技术杂谈 2023年7月23日
    073
  • segment fault 段错误 (core dumped)的起因分析(转)

    内核使用内存描述符结构体表示进程的地址空间,该结构体包含了和进程地址空间有关的全部信息。内存描述符由mm_struct结构体表示,定义在文件 mm_users域记录正在使用该地址的…

    技术杂谈 2023年6月1日
    083
  • redis的基本命令学习

    1.简单理解redis 基于内存的key-value数据库基于c语言编写的,可以支持多种语言的api //set每秒11万次,取get 81000次支持数据持久化value可以是s…

    技术杂谈 2023年6月21日
    081
  • DAX:跟关系相关的函数

    在表格数据模型中,用户可以创建关系,并可以沿着关系的方向自动进行交叉过滤。但是在 计算列中,必须通过RELATED 和 RELATEDTABLE函数来检索相关联的表。当使用CALC…

    技术杂谈 2023年5月31日
    083
  • 如何实现 System.out.println(“a”) 显示 b

    今天看到一篇文章不用反射,能否交换两个字符串的值. 心想字符串常量在常量池里面,是在就算用了反射也交换不了吧。转念一想,不对,字符串常量虽然本身在常量池里面,但是它依然是个对象,那…

    技术杂谈 2023年7月25日
    063
  • 可视化工具 grafana 安装

    docker安装 Grafana是开源的、炫酷的可视化监控、分析利器,无论您的数据在哪里,或者它所处的数据库是什么类型,您都可以将它与Grafana精美地结合在一起。它还有丰富的套…

    技术杂谈 2023年5月31日
    098
  • [转帖]How to write YAML file for Kubernetes?

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    技术杂谈 2023年5月30日
    071
  • 技术管理进阶——把控基建与业务的比例和节奏

    原创不易,求分享、求一键三连 前段时间有个粉丝问了一个问题: 小钗你好,我十分喜欢技术,但真的转到工程团队后又十分困惑:工作没人评价也没人push!做得好没人夸奖,做得差没人批评,…

    技术杂谈 2023年6月1日
    085
  • tcpreplay重放报文,tcpdump能抓到包,应用程序收不到包

    现象: 生产环境中有两台服务器A、B,A服务器实时有报文发往B服务器。为了在测试环境测试新功能,故在现网A服务器上tcpdump抓取发往B服务器的报文,然后在测试环境tcprewr…

    技术杂谈 2023年7月11日
    075
  • poi导出word文件(带表格)

    一.背景介绍 现有业务需求根据前端页面上所选的时间和列,来生成word表格,方便打印。 一.POM <dependency>   <g…

    技术杂谈 2023年7月25日
    092
  • QtConcurrent::run不运行问题

    项目场景:使用QtConcurrent::run执行部分耗时数据处理 问题描述执行QtConcurrent::run时,在自己电脑上运行怎么测试线程运行都正常,但是客户电脑就是跑不…

    技术杂谈 2023年5月31日
    077
  • springboot应用中使用CommandLineRunner

    在springboot应用中,存在这样的使用场景,在springboot ioc容器创建好之后根据业务需求先执行一些操作,springboot提供了两个接口可以实现该功能: Com…

    技术杂谈 2023年7月11日
    074
  • Git 11 不同项目设置不同提交人

    前面介绍了可以给 Git 设置全局提交人,这样当前电脑所有项目提交人都会变成设置的值。 但实际开发中有时候需要给 不同项目设置不同提交人。 比如工作的项目是一个提交人,自己维护的开…

    技术杂谈 2023年7月24日
    040
  • R及R Studio下载安装教程(超详细)

    R 语言是为数学研究工作者设计的一种数学编程语言,主要用于统计分析、绘图、数据挖掘。 如果你是一个计算机程序的初学者并且急切地想了解计算机的通用编程,R 语言不是一个很理想的选择,…

    技术杂谈 2023年7月25日
    0153
  • 【cartogarpher_ros】二:官方Demo的介绍与演示

    上一节我们介绍了在linux中快速安装集成ros环境的cartographer。 本节我们会来跑一些官方demo,用于测试cartographer是否正确安装,顺便看看cartog…

    技术杂谈 2023年7月24日
    066
  • 故障排查:是什么 导致了客户端批量心跳超时掉线

    为什么需要心跳机制了?因为针对某些客户端掉线(可能是因为网络断开、或客户端程序退出),服务端不能立即感受到(有的可能需要过很长的时间才能感受到),所以,需要引入心跳机制,让服务端尽…

    技术杂谈 2023年6月1日
    078
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球