0%

云原生边缘技术

云原生边缘技术

云原生的本质其实是云原生技术和边缘技术的结合。

云原生技术

云原生没有确切的定义,云原生一直在发展变化之中,解释权不归某个人或组织所有。云原生(CloudNative)是一个组合词,Cloud+Native。Cloud表示应用程序位于云中,而不是传统的数据中心;Native表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以最佳姿势运行,充分利用和发挥云平台的弹性+分布式优势。Pivotal公司的Matt Stine于2013年首次提出云原生(CloudNative)的概念;2015年,云原生刚推广时,Matt Stine在《迁移到云原生架构》一书中定义了符合云原生架构的几个特征:12因素、微服务、自敏捷架构、基于API协作、扛脆弱性;到了2017年,Matt Stine在接受InfoQ采访时又改了口风,将云原生架构归纳为模块化、可观察、可部署、可测试、可替换、可处理6特质;而Pivotal最新官网对云原生概括为4个要点:DevOps+持续交付+微服务+容器。

云原生

微服务:几乎每个云原生的定义都包含微服务,跟微服务相对的是单体应用。

容器化:Docker是应用最为广泛的容器引擎,在思科谷歌等公司的基础设施中大量使用,是基于LXC技术搞的,容器化为微服务提供实施保障,起到应用隔离作用。

DevOps:这是个组合词,Dev+Ops,就是开发和运维合体,不像开发和产品,经常刀刃相见,实际上DevOps应该还包括测试,DevOps是一个敏捷思维,是一个沟通文化,也是组织形式,为云原生提供持续交付能力。

持续交付:持续交付是不误时开发,不停机更新,小步快跑,反传统瀑布式开发模型,这要求开发版本和稳定版本并存,其实需要很多流程和工具支撑。

总而言之,符合云原生架构的应用程序应该是:采用开源堆栈(K8S+Docker)进行容器化,基于微服务架构提高灵活性和可维护性,借助敏捷方法、DevOps支持持续迭代和运维自动化,利用云平台设施实现弹性伸缩、动态调度、优化资源利用率。

云原生支撑技术

容器技术:

容器的本质是一个进程,通过对该进程进行隔离和资源控制,其在运行时不会相互干扰。同时容器具有良好的移植性,可以在不同的操作系统中良好运行。以前,开发者通常使用虚拟机完成某些功能,但是虚拟机的系统开销较大,并且不利于程序的移植与部署。与虚拟机相比,容器更加轻量化,打包下载都更方便,例如Docker。

Docker 容器中每个应用不需要与其他应用组合,也不依赖于生产环境基础结构,能在研发、测试、生产过程中为应用提供一致的环境。Docker 使用客户端—服务器模式,利用远程应用程序接口(API, application programming interface)来管理和创建 Docker 容器。Docker 容器通过 Docker镜像创建,镜像就像容器的模板,每次创建容器都依赖于已有的镜像。


容器管理器

K8s,是一个可移植、可扩展的开源平台,用于管理基于容器的微服务集群。在 Kubernetes 中,可以创建多个 pod(Kubernetes的基本单元),每个 pod 中可以部署多个容器,每个容器中可以部署一个服务,然后通过内置或自定义的负载均衡策略,实现对一组微服务的管理、注册和访问。


服务网格:

尽管在很多情况下 Kubernetes 能够完成微服务治理功能,但开发者仍然会遇到其他问题。在实际生产环境中,由于微服务的实现方式不同,如果要使微服务之间进行通信,开发者需要预先协调通信接口和方式。此外,流量的管控与调度由于要考虑环境中的各种因素,所以开发过程并不简单。因此,服务网格应运而生。在服务网格中,每个微服务通过边车代理其服务间通信,因而大量的微服务与对应的边车会表现出网格的形式,这就是服务网格名称的由来。服务网格可以在多种环境中部署,最常用的是Kubernetes。