边缘计算团队 :边缘不再「边缘」,计算无处不在|EMQ 2021 全球招聘季
导语
在 EMQ 的各个团队里,有这样一个特殊的存在:不同于其他专攻「软」的团队,他们「软硬兼施」,不仅需要做软件开发,还需要和不同的硬件设备打交道。这个团队作为 EMQ 面向未来边缘计算市场的探索者,不仅负责着边缘计算产品的开发,也是公司的底层技术支撑。
他们就是 EMQ 边缘计算团队。
背景
从早期泛在计算和普适计算,到现在的边缘计算和雾计算,随着物联网应用的普及,边缘计算早已萌芽。然而过去一直停留在概念阶段,缺少实际落地的应用,对「边缘」的定义也一直存在着争论。
如今,依托工业 4.0、智能微电网、智慧交通、车联网和新能源充电桩等等场景的边缘计算需求和落地案例,边缘已不再「边缘」,其价值已经被市场所认可。EMQ 作为物联网边缘计算产业生态中的软件方案和服务提供商,从开源出发,秉持开放、兼容的理念,基于自有产品矩阵联合产业链的上下游的产品与方案,提供从端侧设备、边缘网关到 MEC 和云服务的一整套解决方案。为不同行业客户提供高可靠、低成本的集成方案,解决客户实际业务问题,推动社会效率的进步和发展,最终实现物联网产业的共赢。
秉持着这样的愿景顺天应人,EMQ 已在边缘计算领域推出了 Kuiper 、 NanoMQ 、 Neuron 等多款产品,始终聚焦于边缘侧的设备多协议接入和消息与流处理场景。这些产品的开发和维护都由边缘计算团队负责。
产品
Neuron
Neuron 是一款物联网边缘工业协议网关软件,支持一站式接入数十种工业协议,并转换成 MQTT 协议接入云端工业物联网平台。对于工业物联网应用来说,如何从设备实时的获取所需数据,是一大痛点。而大多数物联网项目都专注在平台讯息处理及储存,其实在边缘端的数据处理不同工业协议转换也同等重要。而 Neuron 它就像产业互联网的末梢神经元,承担着感知数据并传输至边缘大脑的功能。
Neuron 的主要特性包括:
- 支持超过 80 种工业协议接入和标准化工业警报处理。
- 数据遗失保障,可以在网络中断时将数据缓存在网关存储空间上。
- 支持一站式平台网关配置管理,所有配置、规则、标签都统一管理在云端平台,可通过 Web 服务部署在各网关,实现设备远程监控、远程维护、远程配置管理等功能。
- 脚本引擎,可作为初步数据处理,包括公式计算、 数据筛选、 数据拆解。但它跟流式引擎有点不同,脚本只处理同一数据源的即时请求:例如安全操作或报警处理等等。这也是Neuron 和其他网关软件的优胜之处,能预先处理数据,减轻平台工作压力。
- 在 linux 环境下使用 C 语言开发。C 语言执行能力快、效率高,同时对硬件资源要求低,具有较高可操控性,十分适用于网关这类嵌入式低成本硬件的开发。
NanoMQ
NanoMQ 是 EMQ 今年刚刚发布的面向 IoT&5G 边缘计算场景的下一代轻量级高性能 MQTT 消息服务引擎,也是国内第一款开源的边缘轻量级消息引擎。NanoMQ 通过高效的内部 IPC 能力,弥合边缘硬件和云端的架构差异,连接物理世界与数字智能。接棒 EMQX Edge ,赋予边缘消息汇聚再分发能力,进而为边缘计算应用开发提供便利。
其规划功能有:
- 不仅支持 MQTT 5.0/3.1.1 协议,还支持边缘嵌入式设备常用的 ZMQ/Nanomsg 等等不同的消息总线协议接入。
- 强大的云端和分布式消息桥接能力。让物联网消息自由高效流转。
- 嵌入式规则引擎。
- 边缘端消息缓存,断网重传。
根据测试,目前 NanoMQ 最新版本能够在华为云 8 核 8 线程 3Ghz 服务器上支撑超过 50万/s 的消息吞吐,CPU 只占用 70%,内存消耗 200-300 mb。此外,NanoMQ 从项目诞生之初,就确定了与 nanomsg/nng 社区的合作,基于 NNG 的异步 IO 和多线程模型再面向 MQTT 协议深度优化。
目前已具备了以下优势:
- 资源性价比高 & 适用于边缘嵌入式平台。能以非常少的资源消耗达到高吞吐低延时的性能表现。
- 只依赖原生 POSIX & 极高兼容性 。社区用户能够更简单的自定义 NanoMQ 或将其的二次开发用于不同的边缘计算应用。
- 高度可移植性。通过最小化依赖库和使用纯净 C/C++ 开发,NanoMQ 能够简单方便的移植到各类平台。
- 全异步 IO 支持和多线程支持,且对 SMP 有良好支持。NanoMQ 基于 NNG 的异步 IO 和多线程模型再面向 MQTT 协议深度优化,从而具备了强大的多线程性能和 SMP 处理能力。
- 低延时 & 高吞吐。
Kuiper
Kuiper 是 Golang 实现的轻量级物联网边缘分析、流式处理开源软件,可以运行在各类资源受限的边缘设备上。Kuiper 设计的一个主要目标就是将在云端运行的实时流式计算框架(比如 Apache Spark ,Apache Storm 和 Apache Flink 等)迁移到边缘端。Kuiper 参考了上述云端流式处理项目的架构与实现,结合边缘流式数据处理的特点,采用了编写基于源 ( Source )、SQL ( 业务逻辑处理 )、目标 ( Sink ) 的规则引擎来实现边缘端的流式数据处理。
根据测试,Kuiper 可以在树莓派 3B+ 上达到每秒 12K 的消息吞吐,CPU 占用 70% 内存占用 20M。
Kuiper 使得边缘端的流式数据的处理和分析变成可能,让 AI 智能更靠近计算和数据发生的地方,方便用户开发更实时更省流的边缘计算应用。
其目前具有的功能有:
超轻量
- 核心服务安装包约 4.5MB,初始运行时占用内存约 10MB
跨平台
- 流行 CPU 架构:X86 AMD 32, X86 AMD 64; ARM 32, ARM 64位; PPC
常见 Linux 发行版、OpenWrt 嵌入式系统、MacOS、Docker
完整的数据分析
通过 SQL 支持数据抽取、转换和过滤
数据排序、分组、聚合、连接
60+ 各类函数,覆盖数学运算、字符串处理、聚合运算和哈希运算等
4 类时间窗口,以及计数窗口
高可扩展性
提供插件扩展机制,可以支持在源 (Source)、SQL 函数、目标 (Sink) 三个方面的扩展
源 (Source) :内置支持 MQTT 数据的接入,提供了扩展点支持任意的类型的接入
目标(Sink):内置支持 MQTT、HTTP,提供扩展点支持任意数据目标的支持
SQL 函数:内置支持60+常见的函数,提供扩展点可以扩展自定义函数
管理能力
基于 Web 的管理控制台,用于节点,插件,流和规则的管理
通过命令行和 REST API 对流、规则和插件进行管理
与 KubeEdge、K3s、Baetyl 等基于边缘 Kubernetes 框架的集成能力
小结
Neuron+NanoMQ+Kuiper 一同组成了 EMQ 边缘计算的全景图,边缘计算团队将持续完善开发,与 EMQX Broker 结合,形成 IoT & 5G 时代最易用、性能最好的基础软件组合,助力企业将更多的边缘计算应用带给大家。
团队
除了 EMQ 固有的自由、开放、高效、包容的特色外,边缘计算团队还是一个追求完美、格物致知的团队。这里聚集了许多有趣的灵魂,每个人都亲自参与开发,互相帮助。躬行不辍,成己达人。他们对于技术始终抱有纯粹的热情和好奇心,对开源项目持有强大自驱力和成就感;他们会因为解决一个困扰许久的 Bug 而激动得击掌相庆,会在聚餐时讨论技术趋势和业界新闻而忘了抢菜吃。
成员寄语
Wangha
我是北京邮电大学研一的学生,目前在 EMQ 边缘计算团队实习已经有半年多了,逐渐融入这个团队后,我发现我的收获远超出我的预期。团队的伙伴都非常优秀,浓烈的学习氛围给了我积极向上的动力。在这期间,我提升的不仅仅是技术和代码能力,更是一种视野。每天,我们聊的最多的是各种前沿技术、底层原理以及国内外开源技术圈发生了什么大事儿,和同事们一起和国外的一些大佬参加 Meetup。另外对于我个人来说还有一点意想不到的收获是,读研后我主要在学 Rtos 的工作原理,有了在 EMQ 的 OS 和协议栈方面的经验,由于很多底层的原理都是相通的,学起来会更加得心应手。
Garrett - nanomsg & nng 项目维护者
I’m very excited about the synergy between the NanoMQ and NNG projects, and grateful for sponsorship that NNG has received from the NanoMQ team. The NanoMQ team has been able to push NNG's envelope, and the collaboration has already yielded substantial improvements for both projects. Further, the cooperation between these two project will make MQTT and SP (nanomsg) protocols easy to use within a single project as well as other capabilities (such as websockets, HTTPS clients and servers), greatly expanding the toolset within easy reach of the IoT developer. Further this comes without the usual licensing or portability/embeddability challenges that face other projects. Additional planned collaborative work will further expand on these capabilities to the benefit of our shared communities.
Jaylin
IoT 边缘计算这一行业包含了很长的产业链条和不同领域碎片化的知识,其实是硬件电路、单片机嵌入式、通信和网络编程、无线传感网络、操作系统、数据存储分析和分布式系统等等知识的集大成者。从我自身的经历来说,画过电路,玩过开发板写过单片机,移植和裁减过多种嵌入式 Linux 系统。也做过企业物联网平台私有云的从 0 到 1 和网络运维,做过 IoT 设备部署和无线芯片的开发与调优,还在联合国做过 GIS 数据分析,然后最终选择了边缘计算作为最适合自己的行业。边缘计算就像一片宝藏,很适合拥有强大自驱力和想要拓宽知识面的你。我们不针对某个特定的行业或领域,不对任何一个同学设限。在这里你会接触到林林总总的需求和场景,不断地突破自我,重铸自我,成就自我。
Joey
若你自信是一名编程高手,EMQ 绝对是一家理想公司。在团队里有各行业、各种编程语言的顶级工程师,他们都是聪明、积极、反应快的码神。只要目标一致,大家都会十分投入。我们崇尚自由,鼓励追求更新知识技术,不会随意定性成员的工作方向。只要出成绩便会获得奖金和期权的激励。和高技术人一起工作,才能做出世界级产品,若你希望在工作中发挥所长,欢迎来 EMQ 一展你的抱负。
Alvin
优秀的文化氛围自不必说,更令人惊喜的是工作福利和后勤保障。我们杜绝无效加班,崇尚高效工作。公司不仅给我们每个人都发了高配置多系统的电脑做开发,还为我们的健康着想,贴心地配备了站立式工作升降台。诸如此类都让我感到了公司的人性化和对人才的珍视。
热招职位
C/C++工程师
职位描述:
- 负责 EMQX 嵌入式 SDK 开发与维护。
- 负责开发 MQTT-SDK 和相关技术说明文档。
- 对客户进行技术支持。
- 独立完成产品需求,对突发性出现的问题及时追踪、定位和解决。
任职要求:
- 计算机、物理、数学 相关专业,本科及以上学历。
- 较强的 C/C++ 开发能力优先。
- 掌握至少一门脚本语言(如 Python)。
- 熟悉嵌入式开发,熟练使用 make/cmake 等编译工具,熟悉交叉编译环境搭建优先。
- 熟悉 MQTT Broker , 熟悉消息队列 Pulsar ,Kafka ,RabbitMQ 中的一种优先。
- 熟悉 TCP/IP 、MQTT 、HTTP、CoAP 等协议优先。
- 熟悉 Linux 环境及常用命令优先。
- 有企业级 SDK 或依赖库开发经验者优先。
Rust开发工程师
职位描述:
- 负责边缘计算的云边协同项⽬的设计和研发。
- 负责项⽬相关的稳定性测试程序的设计和研发。
- 项⽬相关的⽂档的编写。
任职要求:
- 有扎实的计算机系统基础,熟悉 Linux 操作系统和计算机⽹络的编程等,有 C/C++ 的底层库的开发经验优先。
- 有很好的多线程并发的编程能⼒。能快速的定位和查找多线程并发环境下的程序错误,内存泄露等问题优先。
- 有很好的 C/C++ 编程能⼒,有 Rust 的编程经验优先(如有函数式编程经验的可以不需要Rust的编程经验)。
- 良好的逻辑思维能⼒,能够独立思考和解决问题。
- 良好的团队沟通和协作能⼒。
- 本科及以上学历。
加分项:
- 对函数式编程有热情,对 Rust 之外的函数式编程语⾔有使⽤过。
- 熟悉嵌入式系统,有相关的开发经验。
- 有对相关的开源项⽬做过贡献。
Linux系统工程师
职位描述:
- 负责开发给基于 C 的 MQTT Broker 和相关平台级软件。并负责在不同平台的实现和调优。
- 在开源项目的基础上,将定制服务和项目移植到各种主流常见硬件架构上并调优。
- 开发自研开源项目并与开源社区紧密协同,为用户提供技术支持和参考资料。
- 与团队紧密协作,设计开源项目架构和未来规划。
- 与硬件生态合作伙伴协同开发,为行业交付最稳定和先进的边缘计算产品。
任职要求:
- 熟练使用 C/C++ 。本科学位为计算机科学或电子信息技术及相关专业。5 年以上嵌入式 Linux 系统的开发和测试经验 。
- 熟练编写 MakeFile ,能够独立进行在不同嵌入式操作系统环境下的交叉编译。
- 对 POSIX 网络 API 和协议栈有深入理解,有 LINUX 内核和驱动知识,有白板编程能力是优势。
- 对常用 IoT 无线协议例如 BLE/WiFi/LoRa/Zigbee 有丰富经验优先。
- 能够独立编写 shell/Bash 脚本作为测试工具验证服务和产品的功能和可行性。
- 能够阅读原理图,元器件规格书并与嵌入式软件开发相联系应用是优势。
C语言软件开发工程师
职位描述:
- 参与公司工业协议采集软件 Neuron 的开发。
- 在不同硬件平台实现各种主流行业/工业协议 Modbus, OPC, IEC61850, Ethernet/IP 等协议,并在北向转换成标准MQTT 协议。
- 在各大主流工业 PLC, Siemens, AB, Mitsubishi 等实现通讯对接。
- 设计,编码调试和集成各种来自团队和合作方的新功能到自有项目和定制固件中。
- 为自研的物联网产品给项目和客户提供易学的上手指导和现场技术支持。
任职要求:
- 计算机科学,电子信息科学或者工业自动化及相关领域专业本科及以上学历。
- 熟练使用 C 语言,能够独立进行基于 x86, ARM 等系统开发优先。
- 熟悉网络协议栈(TCP/IP , UDP , MQTT),并做过优化者优先。
- 开发过多线程 + 实时编程项目者优先。
- 良好分析,交流和沟通能力。
Golang 中间件研发工程师
职位描述
根据需求实现详细设计,并独立完成功能开发。
与开源社区用户积极互动,定位、解决客户反馈的问题。
根据用户反馈,优化产品设计、架构,以及丰富单元测试用例。
任职要求
计算机类专业本科以上,有良好的计算机基础知识。
二年以上开发经验,精通 Golang。
熟练的英语读写能力。
有 Golang CI/CD 经验者优先考虑。
熟悉高并发、高性能软件编程,对流式处理软件开发有经验者优先。
很强的技术敏感性和学习能力。
较强的团队沟通和协作能力,较强的自我驱动能力。
边缘计算软件工程师
职位描述:
- 开发优秀的开源边缘计算软件,与全世界开源社区紧密合作。
- 在开源项目的基础上,将定制服务和项目移植到各种主流常见硬件架构上并调优。
- 与社区大牛交流学习,并解决用户提交的 issue。
任职要求:
- 热爱开源事业,喜欢与社区分享知识和学习开源。
- 熟练使用 C/C++ 。本科学位为计算机科学或电子信息技术及相关专业。1-3年嵌入式 Linux 系统的开发和测试经验。
- 熟练编写 MakeFile 和 CMake ,能够独立进行在不同嵌入式操作系统环境下的交叉编译。
- 扎实的计算机网络基础知识,有 LINUX 内核和驱动知识。有白板编程能力是优势。
- 熟悉 shell/Bash/Python 等脚本语言,可用其编写测试工具验证服务和产品的功能和可行性。
嵌入式开发工程师
职位描述:
- 参与开源项目研发,并基于自研开源项目开发自制固件。
- 在不同硬件平台实现各种主流行业/工业协议,并在北向转换成标准 MQTT 协议。
- 设计,编码调试和集成各种来自团队和合作方的新功能到自有项目和定制固件中。
- 为自研的物联网产品给项目和客户提供易学的上手指导和现场技术支持。
- 维护和支持边缘计算产品线在不同硬件平台的适配和移植。
- 提供准确的嵌入式开发任务的评估,交付和实现。
- 能够与合作团队协同完成全开发周期并满足项目需求。
任职要求:
- 本科为计算机科学和电子信息科学及相关领域专业。有3年以上基于 ARM/MIPS 平台的嵌入式开发经验。
- 熟练使用 C,能够独立进行嵌入式系统和固件开发。
- 有相关项目经验,能够独立解决实时操作系统任务调度,网络竞争,多线程优化,内存管理,中断处理等问题。
- 对不同硬件架构平台的排查故障,性能调优有丰富经验优先。能够使用各种调试工具例如 EJTAG,探针和逻辑分析仪等。
- 对网络协议栈(TCP/IP , UDP , IPsec, SSL, etc.)底层有深刻理解,并做过优化者优先。
- 开发过多线程+实时编程项目者优先。
- 良好分析,交流和沟通能力。
投递简历请访问 EMQ 招聘岗位列表