【cfeng work】什么是云原生 Cloud Native

WorkProj

内容管理

    • 云原生
    • 云原生应用
      • 十二要素应用
      • cfeng的work理解


本文introduce 云原生 Cloud Native相关内容


随着技术的迭代,从最初的物理机—> 虚拟机,从单机 —> 分布式微服务, 现在的热门概念就是云☁(cloud), 云原生,云计算,云服务,云主机,云…, cfeng在work接触的全部就是云☁,所以借此分享一下个人对于云原生的理解

Cloud Native,服务围绕Cloud, 而程序设计之初就Native是考虑云, 充分发挥云平台的弹性和分布式优势

以前企业的服务基本都是直接部署在公司的物理机上面,单机架构,所以性能不好,一个应用可能就一台服务器, 随着云计算的普及, 应用一般都会上云,慢慢就出现了云原生

在这里插入图片描述

云原生

云原生最早由Pivotal的Matt Stine提出,值得一提的是,云原生与微服务类似,不是特指某种技术,而是一种思想

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

生于云,长于云

云原生应用 通常采用了DevOps、CICD、微服务和容器技术

img

云原生应用

采用云原生思想构建的应用,云原生应用能够部署在不同的环境中(环境无关),具有一定的可扩展性、容错性和可观察性(云操作)、应为松耦合的分布式系统(微服务)、大量技术支撑云原生应用。(常见docker、k8s、jenkins + git仓库…)

云原生应用运行的云环境可以构建在主流的PaaS和IaaS, 与k8s等容器技术结合【并不是发明新技术】

主流观点认为,云原生的四要素为

  • 微服务: 云原生定义包括微服务,组织架构决定产品形态【服务编写语言可不同】 比如一个用python、另外一个用go、java都可以
  • 容器化: 主要就是为了让应用部署在不同的环境,常见docker (容器)+ k8s(容器编排系统)
  • DevOps: Dev & Ops 开发运维一体化,这个dev应为开发 + 测试(maybe), 尽可能降低应用开发完成 ----> 部署成功之间的流程, 所以应当使用相关的流水线技术实现【一键部署】
  • 持续交付 : 一种开发思想,区别于传统的瀑布开发模型,不误时开发,小步快跑,【开发版本和稳定版本并存】 — 这个只要长期维护一般都是,支持频繁更新

云原生不只是简单的服务上云,而是Native就考虑云,更好利用云

云原生对基础设施要求较高,不只是云平台,周边生态亦是,java中Spring Cloud可以让基于Spring 开发的应用快速满足弹性、可伸缩、高可用等多项要求

对于非spring cloud、java应用,对应的概念就是将应用SDK剥离到独立的side Car(系统独立运行进程)中, 比如Envoy, 最流程的服务网格的试下Istio就依赖Envoy

ODCA发表的云上应用成熟度模型:

  • 虚拟化: 应用可以运行在不同的环境 【通过镜像实现】
  • 松耦合: 应用和底层设施分离,比如【应用程序和数据库分离,应用程序和文件存储分离】
  • 抽象化: 运行环境抽象、相关流程也需要抽象 【部署、弹性扩容】 — 服务无状态且容灾
  • 适应性: 自动适应各种环境变化、自动弹性伸缩…

十二要素应用

十二要素应用指的是云上运行应用遵守的12条最佳实践

  • 基准代码: 一份基准代码,多份部署 【就是代码的版本管理做好】, 因为实际开发对应多中环境,像dev、sit、uat、灰度、生产,可能应用的版本号不同的
  • 依赖 : 显式声明依赖关系, 比如java中使用maven, 环境依赖放在dokcerFile
  • 配置 : 在环境中存储配置; 对于java来说,项目yaml中配置项做成变量的形式,之后在环境中配置这些变量,不在代码中控制【当然可以利用Spring Cloud的Nacos云配置】, 比如可以配置在Potainer或者k8s中
  • 后端服务: 后端服务当作附加资源,这个后端服务指的是服务依赖的服务,比如数据库、消息队列等,最好能够做到松耦合,比如改一个配置,就启用了不同的组件, work中出现的信创生态的国产化组件替换就体现了该思想
  • 构建、发布、运行: 严格分离构建和运行, 就是说流程应当严格遵守,不能说打包之后在包里面修改
  • 进程: 以一个或者多个无状态进程运行应用 【主要就是无状态,不同进程内存由不同内容不符合要求,最好就是分布式的缓存】
  • 端口绑定: 通过端口绑定提供服务 ; 比如docker构建,通过端口就能访问服务
  • 并发: 通过进程模型进行扩展; 比如部署集群多节点方式进行水平扩展【无论是同一台机器启动更多进程,还是Kubernetes集群启动更多Pod】— 依赖于无状态
  • 易处理: 快速启动、终止的最大化健壮性 【物理宕机等通过各种手段降低故障】
  • 开发环境与线上环境等价: 尽可能保持开发环境与线上环境等价 【==cfeng咋work时就有由于不等价造成的问题】, 最常见的就是线上集群部署,而开发是单节点的
  • 日志: 把日志当作事件流 ; 不建议通过应用管理日志,而是输出到STDOUT,比如统一的日志管理,cfeng在work时就利用ELK进行日志收集管理
  • 管理进程: 后台管理任务当作一次性进程运行

cfeng的work理解

cfeng做的就是云原生应用【基于云原生架构】, 满足了容器化、微服务、Devops和持续交付

在work中的体现:

  • 不需要停机更新,由于部署在☁上,直接更新版本号即可,同时更新较为频繁,uat/di环境的部署可能半天就从160版本迭代到170版本,每次都是直接换一个镜像版本号即可

  • 不依赖网络资源,比如ip和端口都是无限制的

  • 应用自动化部署和运维,运维全自动,流水线部署

  • 使用docker+ k8s镜像技术, 有很好的移植性

  • 应用微服务,松耦合,各种微服务 + 底层基础设施分开部署

云原生架构也就好理解了,就是Native Cloud的架构设计,整个应用设计之时就考虑到Cloud,整体架构上满足云原生思想,最终构建出云原生应用,分布式微服务、容器化加容器编排、自动化流水线

cfeng目前了解的云原生的相关技术: docker + k8s(容器化 + 容器管理), jekins + github(流水线构建 + 代码托管)【potainer和k8s的环境变量配置】其它的常见的分布式微服务的概念技术就不赘述了…

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python 使用 openpyxl 处理 Excel 教程

目录 前言一、安装openpyxl库二、新建excel及写入单元格1.创建一个xlsx格式的excel文件并保存2.保存成流(stream)3.写入单元格 三、创建sheet工作表及操作四、读取excel和单元格1.读取 excel 文件2.读取单元格3.获取某一行某一列的数据4.遍历所有单元格5.遍历指定行列范围的单元…

数据结构之堆——算法与数据结构入门笔记(六)

本文是算法与数据结构的学习笔记第六篇,将持续更新,欢迎小伙伴们阅读学习。有不懂的或错误的地方,欢迎交流 引言 当涉及到高效的数据存储和检索时,堆(Heap)是一种常用的数据结构。上一篇文章中介绍了树和完…

iOS自动化环境搭建(超详细)

1.macOS相关库安装 libimobiledevice > brew install libimobiledevice 使用本机与苹果iOS设备的服务进行通信的库。 ideviceinstaller brew install ideviceinstaller 获取设备udid、安装app、卸载app、获取bundleid carthage > brew install carthage 第三方库…

机器视觉初步5:图像预处理相关技术与原理简介

在机器视觉领域中,图像预处理是一项非常重要的技术。它是指在对图像进行进一步处理之前,对原始图像进行一系列的操作,以提高图像质量、减少噪声、增强图像特征等目的。本文将介绍一些常用的图像预处理技术,并通过配图说明&#xf…

Android CMake

首先了解几个名词 NDK The Android Native Development Kit The Android NDK is a toolset that lets you implement parts of your app in native code, using languages such as C and C. For certain types of apps, this can help you reuse code libraries written in t…

Centos7安装Python3.10

Centos7用yum安装的Python3版本比较旧,想要安装最新版本的Python3需要自己动手编译安装。下面就来讲讲安装步骤,主要分为这么几个步骤,依赖→下载→编译→配置。另外所有操作都是在root用户下进行。 依赖 编译Python源码需要依赖许多库&…

springboot-内置Tomcat

一、springboot的特性之一 基于springboot的特性 自动装配Configuretion 注解 二、springboot内置Tomcat步骤 直接看SpringApplication方法的代码块 总纲: 1、在SpringApplication.run 初始化了一个上下文ConfigurableApplicationContext configurableApplica…

《C++ Primer》--学习4

函数 函数基础 局部静态对象 局部静态对象 在程序的执行路径第一次经过对象定义语句时初始化,并且直到程序终止才被销毁,在此期间即使对象所在函数结束执行也不会对它有影响 指针或引用形参与 const main: 处理命令行选项 列表初始化返回…

机器人参数化建模与仿真,软体机器人

专题一:机器人参数化建模与仿真分析、优化设计专题课程大纲 机器人建模基础 机器人运动学基础几何运动学闭环解解析法建模运动学MATLAB脚本文件编写(封闭解、构型绘制)、工具箱机器人工作空间(离散法、几何法)建模工作…

Debian12中Grub2识别Windows

背景介绍:windows10 debian11,2023年6月,Debian 12正式版发布了。抵不住Debian12新特性的诱惑,我将Debian11升级至Debian12。升级成功,但Debian12的Grub2无法识别Window10。于是执行如下命令: debian:~# update-grub G…

MySQL如何在Centos7环境安装:简易指南

目录 前言 一、卸载不要的环境 1.检查本地MySQL是否正在运行 2.停止正在运行的MySQL 二、检查系统安装包 三、卸载这些默认安装包 1.手动一个一个卸载 2.自动卸载全部 四、获取mysql官方yum源 五、安装mysql yum源,对比前后yum源 1.安装前 2.安装中 3.…

认识服务器

1、查看操作系统的信息 CentOS 输入:cat /etc/os-release 字段含义解释NAME操作系统名称CentOS LinuxVERSION操作系统版本7 (Core)ID操作系统标识centosID_LIKE相关操作系统标识rhel fedoraVERSION_ID操作系统版本号7PRETTY_NAME可读性较好的操作系统名称CentOS L…

0004Java程序设计-SSM+JSP医院挂号系统

摘 要 医院挂号,一直以来就是困扰医院提高服务水平的重要环节,特别是医疗水平高、门诊访问量高的综合型医院,门诊拥挤就成了普遍现象。因此,本文提出了医院挂号系统。预约挂号,是借助信息化的技术,面向全社…

PB9如何实现datawindow打印导出PDF,PB导出PDF

PB9如何实现datawindow打印导出PDF,PB导出PDF? 之前的saveas导出pdf,设置非常麻烦。需要 1. 安装gs705w32.exe 2. 设置系统path: C:\gs\gs7.05\bin (以实际安装目录为准) 3. 安装虚拟打印机 PowerBuilder9.0自带的: Sybase\Shared\Power…

【雕爷学编程】Arduino动手做(120)---游戏摇杆扩展板

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

变化太快的Roop项目(版本1.0.1)

文章目录 (一)版本1.0.1的变化(1.1)项目依赖(1.2)模型位置(1.3)命令行(1.4)界面UI(1.5)处理与结果 最早的🔗接触和介绍&am…

2023亚马逊云科技中国峰会引领无服务器架构新潮流:Serverlesspresso Workshop

序言 在今年3月,我有幸接触了一个项目,也因此结识了 亚马逊云科技无服务器架构 Serverless。在陆续了解 Amazon 产品的过程中,我逐渐发现它所带给我的惊喜远远超出了最初的预期。 今天,想向大家介绍一个名为 Serverlesspresso Wor…

树莓派+Docker+cpolar(内网穿透)+Nignx

首先安装Raspberry Pi Imager,用于给SD卡安装系统镜像。 使用Raspberry Pi Imager(树莓派镜像烧录器)烧录镜像文件到SD中,操作步骤如下图所示: docker安装nginx提供web服务 获取最新版本的docker安装包: su…

Kafka系列之:一次性传送和事务消息传递

Kafka系列之:一次性传送和事务消息传递 一、目标二、关于事务和流的一些知识三、公共接口四、示例应用程序五、新配置六、计划变更1.幂等生产者保证2.事务保证 七、关键概念八、数据流九、授权十、RPC 协议总结1.获取请求/响应2.生产请求/响应3.ListOffset请求/响应…

web前端框架JS学习之JavaScript类型转换

vascript有多种数据类型,如字符串、数字、布尔等,可以通过typeof语句来查看变量的数据类型。数据类型转换就是数据类型之间相互转换,比如把数字转成字符串、把布尔值转成字符串、把字符串转成数字等,这在工作也是经常碰到的。 本…