五分钟技术趣谈 | “云原生”新白话
Labs 导读
云原生应用也就是面向“云”而设计的应用,在使用云原生技术后,开发者无需考虑底层的技术实现,可以充分发挥云平台的弹性和分布式优势,实现快速部署、按需伸缩、不停机交付等。作者:贾景润
单位:中国移动智慧家庭运营中心
伴随云计算的滚滚浪潮,
云原生的概念应运而生,
云原生很火,
火得一塌糊涂,
都2022年了,
如果你还不懂云原生,
那真的out了❗
云原生之所以难解释,
是因为云原生没有确切的定义,
云原生一直在发展变化之中,
解释权不归某个人或组织所有。
下面看小编如何简单介绍云原生👇
Part 01● 什么是云原生(Cloud Native)? ●
- 服务监控的对象是什么?
“基础系统监控的对象有磁盘/网络IO、CPU/内存等,JAVA项目中还包括JVM各项指标参数;应用层监控的对象有服务存活状态、健康状态、服务性能等;网络层面的监控对象有域名状态、流量状态、QPS等。在微服务架构中监控系统还可以分为日志类、调用链类、度量类三个方面。“云原生”是一种工程师和软件人员利用云计算来构建更快、更有弹性的技术,得以快速满足客户的需求。”
—— Priyanka Sharma,云原生计算基金会
看到这个解释,你可能仍一头雾水,似懂非懂。而要想理解云原生,首先我们要清楚什么是云计算。
一般来说,服务器提供计算能力和存储能力用于存储和共享数字信息。很长一段时间以来,大多数公司都购买了自己的物理服务器,通过增加或减少服务器的数量来调整自己的计算能力,但这需要内部IT技术部门及人力的支撑。
随着虚拟机的普及,事情变得简单了一些。有了虚拟机,公司可以用更少的物理服务器获得同样的计算能力。技术人员通过安装名为hypervisors的软件,将物理机变成了虚拟机。通过给多台机器安装hypervisors,可以让虚拟机像一个大系统一样共享资源。这时出现了“云”的朦胧概念,即共享计算资源。那么,进一步通过网络“云”将巨大的数据计算处理程序分解成无数个小程序,然后通过多部服务器组成的系统进行处理和分析这些小程序得到结果并返回给用户,就是云计算。
- 那到底什么是云原生呢?
云原生是一种构建和运行应用程序的方法,是一套技术体系和方法论。云原生从字面意思上来看可以分成“云”和“原生”两个部分。“云”放在科技环境下,最初是指代网络、互联网的一种符号,到现在可以说“云”默认指代云计算。“原生”就是土生土长的意思,那么同样的放到现今的科技大环境下就是指"应用所处的环境"。应用在设计之初就考虑到其将来运行在云环境下,充分利用云资源的优点,实现应用在云服务中的弹性和分布式等优势,这就是广义上的云原生。
微服务:将应用的颗粒度做到最小,使之承担对外服务的职责,实现软件开发中一直追求的低耦合+高内聚。微服务架构的好处就是按功能拆分后,服务解耦,内聚更强,变更更易。
容器化:容器化的好处在于运维时无需再关注每个服务所使用的技术栈,因为每个服务都被无差别地封装在容器里,可以被无差别地管理和维护。现在比较常用的工具是docker和k8s。Docker 是应用最为广泛的容器引擎,基于 LXC 技术而设计,容器化为微服务提供保障,起到应用隔离作用。K8s 是容器编排系统,用于容器管理以及容器间的负载均衡。
DevOps:全称为“Development+Operations”,即开发和运维合体,同样包含测试。DevOps是一种w敏捷开发思维和IT组织的沟通方法,可以促进开发、技术运营和质量保障部门之间的沟通、协作和整合,从而提高软件和服务的交付效率。
持续交付:是在不影响用户使用服务的前提下频繁把新功能发布给用户使用。持续交付是不误时开发,不停机更新,小步快跑,反传统瀑布式开发模型,这要求开发版本和稳定版本并存,实际上需要很多流程和工具支撑。
Part 03
● 云原生与云计算的区别 ●
Part 04
● 云原生应用与传统本地应用的区别 ●
Part 05
● 云原生技术在中国移动智慧家庭开放平台应用情况 ●
中国移动智慧家庭运营中心自主设计实现的家庭开放平台,基于云原生等相关技术,自研消息引擎EMQ中间件,实现海量设备的稳定连接、差异化处理的技术水平;自研支持自动伸缩滚动升级的平台服务容器化技术;基于大连接、大数据实现行为预判无感控制、提升平台智能化程度。实现多连接协议的设备统一接入、设备全生命周期管理、联动场景等功能,具备跨厂商设备控制、不同品类设备联动、单APP控制的功能。保障千万级连接能力,实现了最小连接数负载均衡算法和高并发的数据传输方案,保证数千万设备快速接入,设备控制毫秒级响应。
➤ 实现平台服务容器化,支持自动伸缩、滚动升级;自研消息引擎EMQ中间件,提升连接稳定性;通过ceph技术架构实现海量过程数据的分布式存储,为后续数据价值分析提供基础。将传统系统架构中与业务关系低的底层代码或功能模块进行封装,研发专注业务本身提升效率,版本迭代时间从21天缩短至15天;将传统多个监控服务如内存、CPU、服务存活等统一放在一个管理平台进行处理,打造一站式多元化管理平台,可以精确定位问题,降低系统管理成本,平台架构如下图所示。
平台架构
➤ 本系统对容量进行弹性伸缩,可根据业务需要自动调整,解决容量规划与实际负载的矛盾,避免传统系统架构根据实际负载进行容量规划导致变更困难的问题。同时通过将应用打包成容器镜像的方式,通过容器屏蔽底层差异,运维无需考虑业务与系统关系,从而实现系统的快速部署,实现应用与操作系统的解耦。部署时间由30分钟降到5分钟内,自动化部署操作比率可达90%,资源利用率均可达到85%以上。同时支持自动部署、自动重启、自动复制、自动伸缩/扩展,实现部分故障自动处理。通过强大的自动化机制,对于一些故障自动处理,降低线上故障率,提升平台稳定性。
➤ 通过云端可配置的协议解析/转换插件,支持多协议、多链路设备接入云端;提供云平台对接Restful API,通过协议适配层,支持小米、京东、海尔的协议兼容,第三方协议设备得以快速接入平台,实现跨平台的设备接入与管控。平台通过抽象不同设备类型的数据与控制指令,对外形成一套标准的设备管控API,使得第三方业务应用、APP可仅通过一套标准接口即可实现对不同厂商、不同品牌、不同接入类型的设备的管控,并基于规则引擎,实现设备之间的场景联动控制。
Part 06
● 综述 ●
云原生是目前软件行业的趋势之一,正逐步改变行业开发、部署和运维的思维方式。虽然云原生处于初期阶段,但是随着云计算、大数据、人工智能、AIoT、5G等技术的发展,云原生将在新技术的加持下,充分发挥云计算平台的优势,同时最大限度的减少对开发效率的影响,实现稳定而高效的系统,进一步提升用户体验,助力智能家居及智慧城市领域的飞速发展。