摘要:Serverless、微服务,这些新技术和IoT有什么关系?纵观IoT行业的发展,云服务又扮演了什么角色?

IoT并不是一个新名词、新技术,很长一段时间,它甚至给人一种“下工地”的印象:由于IoT设备的落地场景经常与工程环境强相关,又不容易远程配置,所以难免“形象不佳”。

近几年,当IoT与创新、科技、互联网等挂钩时,成为一个相当“新锐”的行业,尤其云计算时代的IoT,有了许多让老树开新花的功能,也让这个行业有了许多新的想象空间。

比如,Serverless、微服务,这些新技术和IoT有什么关系?纵观IoT行业的发展,云服务又扮演了什么角色?

华为云云享专家董昕以业内人的视角给出了他的理解。

董昕是个喜欢折腾的人,既在Intel、中国银联、Trident这样的大公司待过,负责芯片、IoT、安全、云计算等多个领域的技术开发;同时,他也是一个连续创业者,肩挑背扛整个公司的技术架构,所以对中小企业在信息安全和云计算上的紧迫感有着深刻的认知。

如今,董昕担任国内某大型第三方支付公司的高级架构师,一直处在技术一线的他,对当前IoT行业的发展有着理性的洞察,以下是他对IoT技术发展趋势的一些预判。

物联网比互联网更适合Serverless

Serverless即开发人员无需再关注服务器的运维工作,直接将代码部署在云端,对外提供RESTful API 即可,云计算会自动根据请求编排资源。这种模式非常适合前端实现许多功能、后台记录状态的场景,可以说是大前端发展的必然趋势。

在董昕看来,目前各大云服务商针对IoT设备提供的物模型,本质上就是一种Serverless,甚至更进一步,已经是Codeless了。

沿着这个思路去考量互联网和物联网在Serverless上的差异,会发现 IoT 仅仅只是将联网的主体从人改成了物,而消息的请求与响应并无差别。甚至在大多数情况下,联网的物比联网的人,要更容易数据化,所需提供的服务也更单一,几个属性和服务就足以清晰的定义某类IoT设备。

所以从这个角度看,物联网比互联网更适合Serverless这种模式,而物模型就是这种模式在IoT上的落地形式。

Serverless 的发展趋势、优势与目标都可以匹配IoT,比如海量接入、快速扩缩容、可移植性等等。对于物模型,我们可以做与当下的Serverless几乎一致的畅想,把Serverless上的经验全盘复制到IoT的场景中,比如Serverless中最迫切的代码可移植性问题。

站在云服务商的角度,用户建立了物模型,就是与云服务商进行了强绑定。可对于普通用户而言,物模型的可移植性,甚至是物模型的编排工作,都是要解决的难题。如同 Serverless已涌现出了数家跨云服务商的中间件提供方一样,伴随着IoT的发展,物模型的编排将很可能将会成为开发者值得去探索的方向。

另外,在Serverless上暴露的物模型组件的继承与复用,传统代码与物模型之间的转译等问题,在IoT的将来都会是无边无际的蓝海,同时还有互联网软件的前辈们留下的宝贵经验,广阔天地,大有可为。

硬件正在不断的软件化,这个观点早已不再新鲜,但仍未过时。软件中的许多设计思想,都值得在硬件设计中去复制与实践。

每个IoT设备都是一个独立的微服务

“微服务”是软件行业里很热门的一个词,即把一个大的功能模块拆解成数个小的,然后在整个系统中,小模块可以合并、复用。微服务各司其职,大系统化整为零。

这样做的好处很多,但维护管理众多的微服务成了一个麻烦事,于是就有了Docker和 Google发布的微服务治理框架Kubernetes。

延续前文提过的“硬件正在不断的软件化”思路,每个IoT设备,从功能目标上看,都可以看作一个独立的微服务,所以软件微服务治理的那套规范一样可以运用到IoT设备上。

比如华为开源的KubeEdge项目——这个项目可以将容器化应用程序编排至边缘主机上,让每个边缘主机化身为微服务节点。准确的说,KubeEdge并不是部署在IoT设备上,而是针对边缘计算端的,毕竟目前绝大多数IoT设备的算力还不足以支持。

边缘计算节点作为IoT网关,联合各种终端IoT设备,已经完全足够成为一个微服务节点,也让算力能够提供更契合场景的定制化输出,而非单纯的依靠软件提供标准化产品。

类似的,在边缘节点成为硬件的微服务节点之后,软件微服务治理的设计思想也可以移植到了边缘计算当中,包括但不限于:CI/CD、DevOps、ServiceMesh、服务监控与追踪,甚至AIOps等等。我们时常说的“端边管云”也只有在这样的基础上,才能真正实现无缝连接、自由组合、实时配置等。

至彼时,IoT的工作模式就仿佛人类社会分工的某种终极形态:各个终端设备都具有能独自解决某类问题的能力,又可以随时与周边的其他设备组建团队解决棘手的问题,还能够从云端实时得到更多重量级的支援——这哪里还是以前“不受待见”的IoT开发啊,完全是一支海军陆战队嘛!我来,我见,我征服。

鸿蒙之我见:江湖路远,吾道不孤

鸿蒙虽时常被拿来与安卓对比,但它实际上是为IoT设备设计的,尤其是其模块化耦合的特性,完全是为IoT设备量身定做的。

相对于电脑和手机,IoT设备缺乏统一的标准协议,每种设备都可能只具备某种特性实现为此,鸿蒙提供了对不属性的设备做定制化裁剪的功能,而对于硬件资源的多寡,鸿蒙又设计了多层架构,各种设备可以根据自身资源的情况选择不同的层数。

简而言之,鸿蒙试图以一站式服务的方式,为各式各样的IoT设备提供从底层到应用层软件的全方位支持,让硬件制造商摆脱了软硬件双线作战的困扰,同时也为所有的 IoT 设备统一了标准与接口。

实际上,意图统一IoT接口标准这一野望,安卓和苹果都曾以Android@Home和HomeKit的方式奢望过。但应者寥寥,归根结底,具备了软件开发能力的硬件制造商,即便是面对 Google和苹果这样能为其提供海量流量的巨头,也不愿惟其马首是瞻,从而最终彻底丧失独立性。

而在软件上乏善可陈的制造商又难入巨头的视野,也难堪海量流量的冲击。于是,这种只定义接口让厂商自行实现的方式最终沦为一场双输的博弈,看似风光无限,实则互相提防。

不只是系统设计,鸿蒙在功能特性上也为IoT设备提供了丰富的想象空间,比如分布式软总线。

以往我们在讨论总线,都是在一个固定且封闭的硬件组合当中,比如电脑的南北桥总线, SoC芯片内部的AMBA总线——都是在一个封闭的硬件环境中,各功能模块固定不变的情况下,以硬件的方式实现的总线。

而在鸿蒙的场景下,多个IoT之间是通过网络连接,各组件也随时都可能下线或属性变更。打个简单粗暴的比方,分布式软总线是要在把电脑拆散了,各个模块通过有线/无线的方式进行通信,且都支持热插拔的情况下,用软件协议的方式将各个模块串接起来,同时还需确保数据安全与读写效率。

事实上,不止是华为,Google正在研发的新一代操作系统Fuchsia,本着一样的目标,也在积极推进中。星辰大海,百舸争流。

结语

曾经,单独一个IoT设备既不起眼,还需要不少的人力维护,甚至必须到现场蹲点,实在是一个费力不讨好的行当。现在,云计算的浪潮正改变这个行业,星星之火,必将燎原。当老树发新芽,在新技术的加权下,如何把握IoT大势中新一轮浪潮,让我们拭目以待。

点击关注,第一时间了解华为云新鲜技术~

【智简联接,万物互联】华为云·云享专家董昕:Serverless和微服务下, IoT的变革蓄势待发的更多相关文章

  1. 云享专家倪升武:微服务架构盛行的时代,你需要了解点 Spring Boot

    [摘要] 微服务架构的本质在于分布式.去中心化. 随着互联网的高速发展,庞大的用户群体和快速的需求变化已经成为了传统架构的痛点. 在这种情况下,如何从系统架构的角度出发,构建出灵活.易扩展的系统来快速 ...

  2. 华为云MVP:来自工业制造领域的微服务与云平台实践

    [摘要] 首先,和大家先聊聊的是为什么微服务.DevOps和云计算会在各个产业大行其道;其次,再谈谈微服务架构设计有那些自己独特的设计思想,和传统的SOA有什么区别;最后,我们再一起看一看在工业领域云 ...

  3. protobuf / Consul / 边缘计算 / MEC / CDN / Serverless / GraphQL / 微服务 / 网关 / 云原生 / Serverless (真能造概念啊!!!)

    技术概念层出不穷,学吧!记录下自己多这些概念的理解 protobuf: 数据结构而已,类比XML, JSON consul 解决的只是微服务里的服务注册与发现,健康检查等. 边缘计算:可以理解为是指利 ...

  4. 用友iuap云运维平台支持基于K8s的微服务架构

    什么是微服务架构? 微服务(MicroServices)架构是当前互联网业界的一个技术热点,业内各公司也都纷纷开展微服务化体系建设.微服务架构的本质,是用一些功能比较明确.业务比较精练的服务去解决更大 ...

  5. 基于容器微服务的PaaS云平台设计(一) 实现容器微服务和持续集成

    版权声明:本文为博主原创文章,欢迎转载,转载请注明作者.原文超链接 ,博主地址:http://www.cnblogs.com/SuperXJ/ 前言:关于什么是容器微服务PaaS和容器微服务PaaS的 ...

  6. 2019年微服务实践第一课,网易&谐云&蘑菇街&奥思技术大咖深度分享

    微服务的概念最早由Martin Fowler与James Lewis于2014年共同提出,核心思想是围绕业务能力组织服务,各个微服务可被独立部署,服务间是松耦合的关系,以及数据和治理的去中心化管理.微 ...

  7. 【新书推荐】《ASP.NET Core微服务实战:在云环境中开发、测试和部署跨平台服务》 带你走近微服务开发

    <ASP.NET Core 微服务实战>译者序:https://blog.jijiechen.com/post/aspnetcore-microservices-preface-by-tr ...

  8. TOP100summit:【分享实录-华为】微服务场景下的性能提升最佳实践

    本篇文章内容来自2016年TOP100summit华为架构部资深架构师王启军的案例分享.编辑:Cynthia 王启军:华为架构部资深架构师.负责华为的云化.微服务架构推进落地,前后参与了华为手机祥云4 ...

  9. 巨杉Tech | 微服务趋势下的数据库设计与应用简析

    周五(7月12日)巨杉数据库参与了由得到App主办八里庄技术沙龙活动,分享主题是关于分布式数据库架构与实战. 以下就是根据巨杉数据库现场分享的内容进行的分享实录整理. 巨杉数据库简介 巨杉,专注新一代 ...

随机推荐

  1. JWT(JSON Web Token)入门

    简介 JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案 一.跨域认证的问题 互联网服务离不开用户认证.一般流程是下面这样. 1.用户向服务器发送用户名和密码. 2.服务器验证 ...

  2. centos8 连接wifi

    从官网下载的6G多的iso安装后 #ifconfig -a 如下 enp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500l ...

  3. 小程序ui自动化(一),用uiAutormatorViewer定位元素失败,如何解决

    1.定位元素 用android ADT自带工具:uiAutormatorViewer,会报如下错误 可能是环境与手机不兼容 可以用以下方法解决:(参考:https://blog.csdn.net/qq ...

  4. Codeforces Round #674 (Div. 3) F. Number of Subsequences 题解(dp)

    题目链接 题目大意 给你一个长为d只包含字符'a','b','c','?' 的字符串,?可以变成a,b,c字符,假如有x个?字符,那么有\(3^x\)个字符串,求所有字符串种子序列包含多少个abc子序 ...

  5. Java基础教程——Socket编程

    Socket通常也称作"套接字",用于描述IP地址和端口,可以用来实现不同虚拟机或不同计算机之间的通信. --百度百科 套接字允许应用程序插入到网络中,并与插入到网络中的其他应用程 ...

  6. synchronized底层揭秘

    前言 上篇文章我们从硬件级别探索,对可见性和有序性的认识上升了一个高度,却迟迟没有介绍原子性的解决方案. 今天我们就来聊一聊原子性的解决方案,锁. 引入锁机制,除了可以保证原子性,同时也可以保证可见性 ...

  7. 【服务总线 Azure Service Bus】Service Bus在使用预提取(prefetching)后出现Microsoft.Azure.ServiceBus.MessageLockLostException异常问题

    问题描述 Service Bus接收端的日志中出现大量的MessageLockLostException异常.完整的错误消息为: Microsoft.Azure.ServiceBus.MessageL ...

  8. python 二维数组赋值问题

    [[]]是一个含有一个空列表元素的列表,所以[[]]*3表示3个指向这个空列表元素的引用, 修改任何一个元素都会改变整个列表 所以需要用另外一种方式进行创建多维数组,以免浅拷贝 >>> ...

  9. Alpha冲刺——总结

    这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 团队作业第五次--Alpha冲刺 这个作业的目标 团队进行Alpha冲刺 作业正文 正文 其他参考文献 无 ...

  10. 基于CefSharp开发(三)浏览器头部优化

    一.上文回顾 上编实现了简单的网页加载功能包括URL输入.打开空标签页.网页链接中新页面处理等 本编将对网页的Title绑定.前进.后退.刷新等事件处理 二.Title绑定处理 当打开网页时Title ...