2019 年 3 月 23 日,OpenResty 社区联合又拍云,举办 OpenResty × Open Talk 全国巡回沙龙·北京站,Polaristech 技术专家刘洋在活动上做了《基于 OpenResty / Kong 构建边缘计算平台》的分享。

OpenResty x Open Talk 全国巡回沙龙是由 OpenResty 社区、又拍云发起,邀请业内资深的 OpenResty 技术专家,分享 OpenResty 实战经验,增进 OpenResty 使用者的交流与学习,推动 OpenResty 开源项目的发展。活动将陆续在深圳、北京、上海、杭州、成都、武汉等城市巡回举办。

刘洋,Polaristech 技术专家,曾就职于 Redhat、阿里云,10 余年研发经验,近期加入 Polaristech 投入边缘计算领域。作为 RHCA,不仅在 Linux 领域拥有丰富的技术积累,同时在工作中也积累了大量的市场经验。

以下是分享全文:

大家好,我是刘洋,首先介绍一下我们 Polaristech 团队做的几件事情,第一是 Nginx as a Service,因为很多传统的厂商大量使用 Nginx 作为网关,但是流量上来之后管理非常困难;第二是 API 网关,一方面是大家常理解的网关,另外部分是微服务的治理,比如 Service Mesh,我们用提供了一个优雅的方式解决微服务的网关问题;第三个部分就是边缘计算。

边缘计算与边缘节点

什么是边缘节点

边缘计算是一种将主要处理和数据存储放在网络的边缘节点的分布式计算形式。跟云计算侧重的点是不同的,“边缘”是一个相对的概念,比如数据源、数据中心、云等等,从最边上的节点开始,都可以叫做边缘。相对于传统“中心计算“,数据上传到数据中心,通过中心的资源完成存储和计算。

但随着万物互联时代的到来,智慧城市、智能制造、智能交通、智能家居,5G 时代、宽带提速、IPv6 的不断普及,导致数百亿的设备接入网络,在网络边缘产生 ZB 级数据,传统计算难以满足物联网时代大带宽、低时延、大连接的诉求,在这种情况下,今天的技术架构还能不能支撑那时大家的想象当中的计算机的世界?所以,我们想做一些架构上的创新,或者是尝试。

上图可以看到从 2015-2019 年,边缘计算的趋势一直往上走。关于边缘计算,有很多定义的方式,首先定义边缘节点:非数据中心的计算资源, 都是边缘节点。需要注意的是作为边缘计算平台,不仅仅由边缘计算节点组成,也包含数据中心的节点,在实际中,我们遇到了许多的边缘节点场景,比如说楼宇、园区、基站、监控设备、车辆等,把这些的非中心的计算资源、网络资源、存储资源都叫做边缘节点。

边缘节点的环境和特点

我认为环境是边缘计算的最大前提,数据中心通常是可靠计算环境,包括电力、网络、温度、专业运维等。如果把计算放到边缘,比如在一个居民楼中有边缘节点,我们总结了几点:

  • 电力不可靠,可能停电或者是插线板坏了。
  • 网络不稳定,带宽没有保障,延迟没有保障。
  • 物理环境缺乏统一的条件,包括温度、湿度、气压等。
  • 算力不统一,今天两核的,明天可能弄一个四核的。
  • 连接方式以 TCP/IP 为主,包括基于移动通信的 4G 和 WIFI,或通过 IoT 的协议 LoRa、NB-IoT 等。

总结起来,边缘节点处于不可靠计算环境中,而且没有专业的运维,在中关村还方便找运维,万一如果在攀枝花、牡丹江呢?不好说。

为什么基于 OpenResty / Kong

基于数据中心的“云计算”是以“计算资源”为中心的,而边缘计算本质是以“网络资源”为中心的,是面向网络的计算。那么为什么我们选择 OpenResty 和 Kong 为核心来构建边缘计算平台?

第一,因为 OpenResty 是面向应用的网络架构,现在有一个流行词叫做应用交付网络简称 ADN。OpenResty 具有小巧、灵活、可靠、高效稳定的网络处理能力,因为 OpenResty 下面都是 Nginx 非常高效一个包不到 20 兆,基本上可以稳定运行在一切能够支持 Linux 的平台上。

第二,OpenResty 是可扩展的,数据到达边缘节点后,OpenResty 可以把各种数据和常见的计算框架结合起来。

第三,Kong 可以看成是 OpenResty 领域里的 Struts(类比 Java)或者 Rails(类比 Ruby),提供了很多配置能力和开发框架,对于数据的处理非常方便。

第四,OpenResty / Kong 除了适应边缘节点环境,同样适用各种级别数据中心环境。在数据被最终存储之前,OpenResty / Kong 可以构建整个应用数据的传输链路,并完成各个环节的计算任务。

最后,OpenResty / Kong 很“皮实”,基于 OpenResty / Kong 组成的计算节点,可以做到“RESET即恢复功能” 我们希望做到什么?就是若干年前大家去网吧,网管只会一招"重启"。因为在边缘,没有专业的人员,所以希望当这个东西坏了,重启一下就可以恢复了。基于这几点,我们最后选择了 Kong 加 OpenResty。

除了 OpenResty / Kong 还用了什么

首先是使用 CentOS 作为操作系统。PostgreSQL 是 Kong 原生支持的一个数据库,Kong 原生支持两种数据库,一种是 PostgreSQL,一种是 Cassandra。

还有我们自己加了一个MySQL,因为国内 MySQL 的用户群体非常大。PostgreSQL 是我们最常用和主推的数据库,虽然在国内不是特别火,但是 PostgreSQL 会有非常多的支持,效率也很高。

第三个是 RocksDB,主要部署在边缘节点,用于以 k/v 形式缓存数据,包括上行和下行数据。还有是基于 Nodejs 的调度程序,调度程序是边缘计算的核心能力。

最后是 Kubernetes,用于数据中心里计算资源管理,提供多租户的数据中心计算能力。

核心架构采用三层或者是 1+N+1,最上层是数据中心,无论是在自己的本地数据中心里面还是在云上都可以。这一层使用 K8S 做数据的核心应用包括 ESS 和 OSS,做多租户的计量计费、数据的调度、节点管理等,然后是标准的 X86 服务器。

中间是中继节点,它的应用是多种多样的,比如一个小地方的数据中心,或者像一些云厂商,会提供边缘节点,在边缘节点和数据中心之间,上行和下行数据通过一层或者多层的中继节点中转和处理,从中继节点到数据中心很像 CDN,虽然不是专线,但是它的网络质量会比纯公网传输好一些。

最下面是边缘节点,做终端的流量下发以及上行流汇聚,在这一层首先是做静态或者是动态内容的缓存,静态缓存很简单,像 CDN 一样有图片、视频等的缓存,动态缓存是上行请求的数据,它可以把 HTTP body 、head 等缓存在边缘节点,这样就不用再走一遍 CDN 或者到数据中心进行请求了,大大加速用户的访问,同时我们也会用 RocksDB 把数据缓存下来。

总体来讲,首先我们做了集成管理系统,做边缘计算应用的交付与下发并把应用部署到边缘节点上,并对远程边缘的设备的进行管理、监控、调度、计量计费等,核心都是在这个中心系统来完成的。设备管理,主要是对设备状态的管理、应用的下发、配置的下发等。我们基于 HTTP 的框架,去实现边缘节点数据的上下行,特别是上行采取了类似 MQTT 的方式,简称叫 HTTPQ,在本地上传数据的时候先把数据存在 Q 里面。因为网络有可能会断掉,所以会通过 Q 的方式,先把数据放在边缘节点,然后通过 Q 的方式传回数据中心。在边缘用 FASTCGI 的方式,提供一个标准的应用方式,主要还是考虑到了边缘的不可靠环境。最后就是调度、监控和流量分发,也是最主要的核心点。

总结

我们的边缘计算平台是云计算加边缘计算,既有中心节点又有边缘节点;不同点就在于云或者是数据中心面对的是数据的计算和存储,边缘计算是面向数据流动;另外,常用的数据中心软件,不适合在边缘的环境里应用,它对环境和运维的要求比较高;在面对不确定、不可靠的计算环境,异步很重要,所以我们用 MQ 的方式去做数据的上行; “Reset-To-Work” 这个核心的设计观念,因为管理配置和下发都是通过中心节点做的,边缘节点出现了任何问题,只需重启就可以直接恢复了,因为在中心有对它的监控和配置的集中管理;边缘计算和云计算一样最重要的就是监控加调度,所以我们以网络监控为主去监控边缘节点的可用性,以及缘节点的适用应用、设备、环境、使用率等;系统中云计算是面向 SLA 的,边缘计算是面向流量的:把流量交付出去,和把流量收集上来,是边缘计算的核心述求。如果云计算是一个航母集群的话,那边缘计算就是一把 AK,适应于各种环境,能够用最小的代价去解决最核心的问题。

观看演讲视频和 PPT 可前往:


基于 OpenResty /Kong 构建边缘计算平台​

Polaristech 刘洋:基于 OpenResty/Kong 构建边缘计算平台的更多相关文章

  1. KubeEdge v0.2发布,全球首个K8S原生的边缘计算平台开放云端代码

    KubeEdge开源背景 KubeEdge在18年11月24日的上海KubeCon上宣布开源,技术圈曾掀起一阵讨论边缘计算的风潮,从此翻开了边缘计算和云计算联动的新篇章. KubeEdge即Kube+ ...

  2. 利用Azure Functions和k8s构建Serverless计算平台

    题记:昨晚在一个技术社区直播分享了"利用Azure Functions和k8s构建Serverless计算平台"这一话题.整个分享分为4个部分:Serverless概念的介绍.Az ...

  3. AWS的边缘计算平台GreenGrass和IoT

    AWS的边缘计算平台GreenGrass和IoT 为什么需要有边缘计算? 如今公有云和私有云平台提供的服务已经连接上了绝大多数的桌面设备和移动设备.但是更多的设备比如,车辆,工程机械,医疗设备,无人机 ...

  4. 阿里云如何基于标准 K8s 打造边缘计算云原生基础设施

    作者 | 黄玉奇(徙远)  阿里巴巴高级技术专家 关注"阿里巴巴云原生"公众号,回复关键词 1219 即可下载本文 PPT 及实操演示视频. 导读:伴随 5G.IoT 的发展,边缘 ...

  5. 《基于Apache Kylin构建大数据分析平台》

    Kyligence联合创始人兼CEO,Apache Kylin项目管理委员会主席(PMC Chair)韩卿 武汉市云升科技发展有限公司董事长,<智慧城市-大数据.物联网和云计算之应用>作者 ...

  6. 腾讯基于 Flink 的实时流计算平台演进之路

    https://mp.weixin.qq.com/s/MGnG_Mpf6CUQWLJHvmWqLA

  7. 北美KubeCon新风,正把K8S魔力带向边缘计算

    作者:DJ 审校:Kevin·Wang 1. 容器生态圈新的创新方向 2018年容器技术圈的年终盛典北美KubeCon终于在西雅图落下了帷幕.这次北美KubeCon总共吸引了8000多观众参会,创下历 ...

  8. KubeEdge,一个Kubernetes原生边缘计算框架

    ​KubeEdge成为第一个Kubernetes原生边缘计算平台,Edge和云组件现已开源! 开源边缘计算正在经历其业界最具活力的发展阶段.如此多的开源平台,如此多的整合以及如此多的标准化举措!这显示 ...

  9. 5G 与 MEC 边缘计算

    目录 文章目录 目录 前言 参考文献 通信网络 核心网演进之路 早古时期 2G 网络架构 3G 网络架构 4G 网络架构 5G 5G 网络的需求 5G 网络架构的设计原则 5G 网络的逻辑架构 5G ...

随机推荐

  1. Spark---架构原理

    Spark核心组件 1.Driver 我们编写的Spark程序就在Driver上 Spark集群节点之一,就是你提交的Spark程序的机器 2.Master Master是个进程 Master其实主要 ...

  2. Java虚拟机-类文件

    代码编译的结果从本地机器码转换为字节码,是存储格式发展的一小步,却是编程语言发展的一大步.计算机只认识0和1,所以我们的程序需要经过编译器翻译成由0和1组成的二进制格式才能由计算机执行.经过技术的发展 ...

  3. 在高分屏正确显示CHM文件

    今天下了白色相簿2推,发现里面的chm格式的帮助文档显示不正确,又没法在应用程序直接设置系统分辨率托管,google了一下找到了这个方法: 新建 HKEY_LOCAL_MACHINE\ SOFTWAR ...

  4. udp客户端收发数据流程

    1.创建客户端socket开始进行通讯.2.这时服务端应该先启动,并在知道服务端的ip以及端口号的时候才能进行通讯.3.本地不需要绑定ip以及端口号,在用此套接字对象发送消息的时候会自动分配活动端口( ...

  5. CSS命名规则常用的css命名规则

    CSS命名规则常用的css命名规则 头:header 内容:content/container 尾:footer 导航:nav 侧栏:sidebar 栏目:column 页面外围控制整体布局宽度:wr ...

  6. 设计模式的征途—17.模板方法(Template Method)模式

    在现实生活中,很多事情都需要经过几个步骤才能完成,例如请客吃饭,无论吃什么,一般都包含:点单.吃东西.买单等几个步骤,通常情况下这几个步骤的次序是:点单=>吃东西=>买单.在这3个步骤中, ...

  7. arcEngine开发之IMapControl接口

    简介 IMapControl接口最重要的是包含IMap属性,还提供另外的属性用于:管理一般的外观显示,管理图层,加载地图文档以及跟踪在界面上显示的图形. 小知识点:一般一个接口的最新实现是 Defau ...

  8. vsts + XX云服务器构建netcore+docker持续集成交付部署

    持续集成交付部署是什么意思,它给我们带来什么好处? 先贴一张图 持续集成(Continuous Integration) 持续集成强调开发人员提交了新代码之后,立刻进行构建.(单元)测试(这个要看情况 ...

  9. SSM-Spring-22:Spring+Mybatis+JavaWeb的整合

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 众所周知,框架Spring来整合别的框架,但是Mybatis出现的晚,Spring就没有给他提供支持,那怎么办 ...

  10. 附录C--拉格朗日对偶性

    1.原始问题 假设$f(x)$,$c_i(x)$,$h_j(x)$是定义在$R^n$上的连续可微函数,$x \in R^n$.考虑以下三类优化问题. 1.无约束的优化问题: \begin{align* ...