云原生概念
云计算和云原生
云计算和云原生其实都是表达一个意思,只是站的角度不一样。
- 云计算,更多是站在产品或者运营的角度来解释如何充分利用物理机的计算资源;
- 云原生,更多是站在技术实现的角度来解释如何充分利用物理机的计算资源;
1、云计算
云计算是什么
通过互联网向用户提供计算资源,其中最为基础的计算资源就是服务器、存储和网络资源等,甚至是直接开放一个系统\函数,这些资源是互联网世界的基础设施。
供应商将大量的基础设施进行统一管理,通过虚拟化等技术手段,形成巨大的可动态分配资源池,大大促进了物理资源的利用率,因此也使得租用成本降低。企业只需要按照使用量进行付费,再不用付出昂贵的设施购买、维护成本。除此之外,云服务还有可随时按需伸缩容量、备份恢复简单、快速部署易于集成等优点。
云计算典型企业:阿里云、谷歌云、IBM 云、腾讯云、华为云等。
云计算特点
- 弹性和可扩展性:用户可以根据需要随时增加或减少计算资源,以满足应用程序的需求;
- 资源共享和多租户: 云计算可以为多个用户提供服务,同时确保他们的计算资源不会相互干扰;
- 自助服务和按需付费: 用户可以自己选择和配置计算资源,并只需为他们使用的资源付费,而不必承担硬件和软件的维护成本;
- 高可用性和灾备恢复:云计算通常采用分布式系统和多个数据中心来提高可用性,并提供备份和恢复功能,以应对各种故障和灾难;
云计算的发展已经极大地改变了人们使用和管理计算资源的方式,成为企业和组织日常业务的关键基础设施之一。
云计算如何在产品上体现
-
On-Premises
:本地部署,即把所有内容和数据都存储在本地的模式。比如自己去拼装电脑搞定网络并自己开发程序;- 优点:数据存储可控,安全;高度支持定制化;
- 缺点:成本相当高;系统稳定性可能会很差;
-
IaaS
:基础设施即服务,即计算基础资源(硬件),如CPU
、内存和网络等由供应商提供,上层操作系统、应用、数据等由用户自己研发。比如自己去直接买一台电脑,然后开发程序;- 优点:成本相对较低;更稳定的存储和网络;
- 缺点:基础设施出现问题时很难找到连接人来解决;
-
PaaS
:平台即服务,即提供一套包括硬件、操作系统和运行环境的工作平台,用户只需要开发应用和存储数据即可。比如腾讯云和阿里云服务器就是PaaS
平台;- 优点:仍然能实现大部分的自定义且开发更敏捷;
- 缺点:仍然需要开发人员参与;
-
SaaS
:软件即服务,即运行在云基础设施上的应用(包括数据存储),提供某个业务线完整的解决方案,用户不需要开发程序,开箱即用。比如淘宝、京东等购物平台,或者腾讯视频、爱奇艺等视频平台;- 优点:上手难度低,几乎任何人都可以使用;
- 缺点:可定制化的自由度最低;
-
FaaS
:函数即服务,即把某个小功能作为基础服务开放给用户,开箱即用;
云计算在部署上的多样性
公有云
公有云是为广大用户、个人或企业提供的云基础设施。公有云就是第三方的公有云供应商为用户提供可通过互联网访问的虚拟环境中的服务器空间。然后,用户可以通过购买云服务器、数据存储和其他与云相关的服务等公有云服务来访问这些服务器。
公有云举例:阿里云、腾讯云…
私有云
私有云是云计算的另一种形式。它为一个企业或组织提供专用的云环境。私有云可以由企业或组织内部的 IT
团队(或者公有云供应商为企业量身定做并专用的)在该组织的防火墙后面进行内部操作,因此组织可以更好地控制其计算资源。私有云主要由企业使用,因此它也被视为一种企业云。
私有云存在于企业的局域网或云计算供应商的数据中心,其中所有数据都在防火墙后面受到保护。因此专有云是具有极高安全级别的云计算解决方案,但是私有云的使用成本也许不是所有企业都可以承担的。
混合云
混合云是一种云计算模型,它通过网络连接组合一个或多个公有云和私有云环境,允许在不同的云环境之间共享数据和应用程序。
混合云环境允许企业根据业务需求在不同的云环境中分配工作负载。例如,企业可以在私有云环境中运行核心服务,以便更好地控制和定制环境以满足其需求。当工作负载超出可用资源的限制时,可以将其他工作自动传输到公有云环境。这种方法为按需服务提供了额外的容量,这种方法通常称为"云爆发",由于额外需求将在公有云上运行,因此存储、计算和所有其他容量几乎没有限制。
2、云原生
云原生是什么
云原生 (Cloud Native
),云指的是云计算,原生指的是生来就支持,即从它设计的时候就天然支持云计算。
它是一种设计和构建应用程序的方法,旨在最大化云计算技术和基础设施的优势,以实现高效、可靠和可扩展的应用程序运行。
云原生应用程序通常使用容器化部署、微服务架构、持续集成和交付等现代技术和工具,以便更好地利用云计算的弹性、可扩展性和自动化管理等特性。
云原生应用的特点
-
现代化应用设计 (
12
要素) -
容器化部署:将应用程序打包到独立的容器中,以便在不同的环境中运行和部署;
- 如
Docker
;
- 如
-
微服务架构:将应用程序拆分为多个小型服务,以便更灵活和高效地开发和部署应用程序;
-
自动化管理:使用自动化工具和流程,以简化应用程序部署、扩展、监控和修复等管理任务;
- 如
K8S
;
- 如
-
持续集成和交付(
ci/cd
):采用自动化流程和工具,以便更快地集成和发布应用程序;- 如
DevOps
;
- 如
-
可观察性和可维护性:使用监控、日志和跟踪工具,以便更好地理解和管理应用程席的行为和性能;
现代化应用设计 (
12
要素)
为云原生应用设计的,在设计和开发阶段去迎合云平台以及整个生态的能力,从一开始就要做一个适合在云上跑的服务,需要达到的 12
步骤要求。
-
Codebase
:基线代码,即对项目代码的git
管理准则;- 一个项目一个仓库;
-
Git分支
也不要分岔之后合不回来了; - 不要在多个仓库出现重复的代码,把通用的代码抽成独立维护的仓库;
-
Dependencies
:显式和隔离的依赖,即对依赖的管理要求;- 完善的依赖管理机制、显式的依赖声明文件和版本锁机制,能够减少因为错误的依赖版本导致的
Bug
;
- 完善的依赖管理机制、显式的依赖声明文件和版本锁机制,能够减少因为错误的依赖版本导致的
-
Configuration
:配置分离存储到环境中,即配置与代码产物分离;- 配置与代码产物分离,配置只与环境有关;
-
Build, release, run
:严格分离构建、发布、运行,即用好CI/CD
平台、自动化管理和项目管理系统,解耦这三个步骤;- 职责和关注点的分离。构建是开发测试人员更关注的、发布是产品经理更关注的、运行是运维更关注的;
-
Dev/prod parity
:环境对等,即不同环境(开发、测试、预发、生产)的配置尽可能相同,减少"我本地正常,测试/预发环境运行出错"的问题;- 反例:开发环境使用
TiDB
、测试环境使用MySQL
或预发环境没有开启MySQL
主从,生产环境开启MySQL
主从;
- 反例:开发环境使用
-
Backing services
:分离基础的后端组件,即把后端基础组件(数据库、缓存、消息队列等)分离,分开部署,提高容错性;- 所有依赖的基础组件或者其他应用服务,都视为独立于自身之外的资源,独立部署,通过网络访问;
- 用面向对象的术语类比,就是把服务间的关系看作"关联"的而非"组合","关联"意味着更弱的耦合,仅通过网络端口与这些依赖的服务交互,而不是进程间通信;
-
Processes
:无状态的服务进程,即要求服务高度自治,水平拓展能力强; -
Port binding
:自带端口绑定,即每个服务都要自定义端口,不要使用框架默认的端口; -
Concurrency
:通过进程的水平扩展增大并发能力,即由于无状态的应用服务,很容易实现水平扩展,具有很强的伸缩性; -
Disposability
:易处置 - 快速启动和优雅退出,即要求具有快速扩缩容的能力,且缩容时应该尽可能减小带来的影响,比如如何应对下线时来临的流量; -
Log
:日志作为事件流,即应用不应该管理日志,而是将日志管理工作交给日志收集工具,由他去统一处理和收集并以时间顺序进行存储;文章来源:https://www.toymoban.com/news/detail-753938.html -
Admin Processes
:分离管理类任务,即将管理任务作为一次性进程运行;文章来源地址https://www.toymoban.com/news/detail-753938.html
到了这里,关于一文带你了解云原生和云计算的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!