#云原生征文#云原生六大关键技术【上】 原创
云原生六大关键技术【上】
1.容器
容器被认为是云原生应用的基石,微服务容器化被作为云原生应用的第一步。
容器是一种相对于虚拟机来说,更轻量化的虚拟化技术。能为我们提供一种可移植,可重用的方式来打包,分发和运行应用程序,容器比虚拟机(VM)提供了更高的效率和更快的速度。云原生代码、依赖项等在运行时被打包到容器镜像文件中。镜像存储在镜像仓库。需要时,则将镜像转换为可运行的容器实例。该实例可在装有容器引擎的任何计算机上运行,并可以按需部署任意数量的容器实例。每个容器虽然可以共享基础主机操作系统,内存和处理器的一部分,但彼此隔离。容器的移植性保证了跨云应用的一致性。由此,微服务隔离并打包自己的依赖项、更改项,从而不影响整个系统,开发与发布可以随时进行。
因为共享底层操作系统和主机资源,容器所占用空间大大小于虚拟机,在一台主机上可以同时运行多个微服务。
有了容器之后,还需要对容器进行管理,这就是容器编排。目前,通行的容器编排调度器是Kubernetes,简称K8s。
容器带来的好处,不用多说,用过的都知道。使用操作系统(OS)级别的虚拟化,单个操作系统实例被动态划分为多个相互独立的容器,每个容器具有唯一可写的文件系统和资源配额。创建和销毁容器的低开销,以及单个instance可高密度运行多个容器的特性使得容器成为部署微服务各个模块的完美工具。容器使得应用服务能从底层架构中分离出来,实现了完全的可移植性(在任何操作系统或环境上运行应用的能力),当应用程序有很多独立组件构成,也可以为每个组件分配一个容器。
2.微服务
微服务是将大型应用程序转变为小型服务的集合的架构方法;每个服务实现单独的业务功能,运行在自己独立的进程中并通过HTTP API进行通信。每个微服务器都可以独立于应用程序中的其他服务进行部署,升级,扩展和重新启动,通常作为自动化系统的一部分,可以在不影响终端客户使用的情况下频繁独立更新。
微服务是为了解决传统单体应用的缺点而诞生的,它是一种分布式架构设计理念。它把应用程序中的具体功能独立出来,抽象为『服务』。一个微服务就是一个独立的实体,可以独立的部署在 PAAS 平台上,也可以作为一个独立的进程在主机中运行。为了推动细粒度服务的使用,这些服务要能协同工作,每个服务都有自己的生命周期。服务之间可以通过网关 API、RPC(远程服务调用)、SideCar(后续文章会介绍) 等多种方式访问,修改一个服务不会影响其它服务。关于微服务,我之前的文章比较详细地介绍过:从单体到微服务,论软件系统如何逐步地进行解耦
3.服务网格
服务网格(英文名:Service Mesh)是一个基础设施层,用于处理服务间的通信,云原生应用有着复杂的服务拓扑,服务网格负责在这些拓扑中实现请求的可靠传递,在实践中,服务网格通常实现为一组轻量级的网络代理,它们与应用程序部署在一起,但对应用程序透明。
下一篇一起和大家来了解另外三个关键技术
【本文正在参加云原生有奖征文活动】,活动链接:https://ost.51cto.com/posts/12598