目前,小博无线(rippletek.com)技术团队主要使用下面四种编程语言:
- Ruby
- JavaScript
- Lua
- Go
早期曾大量使用Erlang,后来放弃,具体原因在这篇文章中有详细介绍。
Ruby
Ruby on Rails进行业务数据接口开发
优点在于可以快速开发业务,弱点在于资源占用大,并发能力差。
开发策略为优先采用Ruby快速开发新业务,如发现有接口由于高频调用出现性能问题,先将这部分功能隔离出来并增加节点个数,将性能问题转化为资源问题,再用并发性能更好的Go语言实现替换Ruby来解决资源问题。这篇文章是一个具体案例。
运维机器人TidyMaid
我们在运维自动化中也广泛使用Ruby,TidyMaid就是采用Ruby实现的,详细介绍可参考这篇文章
JavaScript
这是前端开发的唯一选择。云端业务系统主要基于React, 设备配置界面基于Vue。
Lua
设备端的业务开发主要采用Lua,好处是开发和调试难度比C低很多,如果需要调用系统底层功能,也能和C模块非常方便的集成。
云端也有一部分基于openresty开发的与设备对接的业务系统,并发性能很好。
Go
- 由于并发性能优异,用于高并发的数据接口开发
- 结合alpine和chronos, 可以非常方便的开发和部署定时任务
- 由于部署简单,在运维系统中也被大量使用
其他
除了上面四种被大量使用的编程语言,还有一些较少使用的编程语言:
- C用于开发设备上的一些网络内核模块和设备驱动
- Groovy用于实现jenkins pipeline
- 运维系统还使用了少量的python
- Java用于实现ODPS的UDF