使用 golang 可以开发一套监控系统吗
最近接了个活,主要是给 FSU 动环监控单元白盒(芯片:NUC980,内存:128MB),开发一套监控软件,可以采集接在白盒上面的各种 DI,AI 设备的数据,并且上报到监控中心
查询了下,FSU 系统,好像都是通过 C/C++ 写的,可是我不太会,但是我会一点 golang 写,查询了下,golang 好像可以用于嵌入式开发
就想问下有没有使用过 golang 开发过类似的软件的,以及使用 golang 会不会有什么坑
不懂这块业务,但 go 可以读取 dll 或 so ,通过 cgo 调用 c 函数
如果连 link 都不明白的是大概率没戏的。
行肯定是行的,但入 2 楼大佬所讲, 怎么也得知道点嵌入式的东西吧。 不然肯定有困难啊。。实际 python ,php 都行啊。。。go 自然也行。
FsuOS 不行吧,它支持的是各种驱动,有 Python 支持但限设备
prometheus 的 metrics ,你的白盒上运行 node_exporter 或者自己开发个
128MB 内存用 Golang 太容易 OOM 了,不推荐,Golang runtime 对内存分配比较宽松
我说嵌入式可能不准确,这个盒子厂家提供编译好的 Linux 系统, 我只要写软件跑在上面就行, 我的想法是, 解决我的软件与串口之间的通讯,以及如何将数据上报到数据中心(就是中国铁塔的 B 接口)就行了, 担心的点也就是会不会最后我写完了, 跑起来发现系统资源不够,毕竟才 128M 内存
我的逻辑比较简单,就是采集数据,上报数据, 没有其他更复杂的逻辑, 想着应该够用吧
128M 内存居然说是才。。。我看了一眼我手上的 stm32 的板子就 512K 。你别引一堆第三方包,尽量自己维护数据结构,内存都是能算出来的。虚拟机不是个大 sb ,只知道吃完内存才吐。所以要你自己控制和维护。尤其是调用 so 开的口子的时候千万别忘了回收内存之类的。因为大部分的接口都是只是申请了内存,但是释放一定会再给你另一个接口。这是最容易踩的坑。如果你直接是串口+http 。。。。。哪就没 so 啥事了。标准库标准操作。。内存多少都是看得到的。。
甚至更简单粗暴一点就是内存直接都是纯静态的。比如全局 1k 大的数组。多少内存都是能算出来的。就没 gc 啥事
嵌入式这内存够了。。。你这盒子本身功能就不多 要那么大内存干嘛至于 Go 能有啥坑 都那么多用的了最后,真决定用 Go ,请用 TinyGo
#8 少引用第三方 SDK 的话够用的,大不了 OOM 了之后再拉起或者计划性重启。看了下串口通信在 linux 下只需要 syscall 就行了,如果知道协议纯自己写的话,挺方便的,不用引用 so 库。如果要引用的话 cgo 是有点麻烦的,可以看下 SWIG
注意一下处理器架构, 如果引用库的话可能不兼容
行肯定是行的,更多是省不省心,例如 golang 并不是一个对 interprop 友好的语言,要引非 golang 的库会比较麻烦。如果你熟悉 golang ,需求又不存在调三方库全部自己写的那就无太大所谓。
大概看了下 FsuOS 的文档……好口语化啊……不建议你在上面开发了,毕竟 Go 已经开始升级最低要求的 Linux 版本(貌似大于 3.0?),硬要开发的话,可以通过“联通白盒化标准”那里的东西进行采集和上报
TinyGo
嗯 不基于他们, 他们也是 C 写的打包成了系统, 我的软件是在 Linux4.9 上面跑, 就是使用 go 语言实现他们类似的功能,采集数据+告警+上报 就行了
翻了一眼,同感:> "当作为仪表控制器软件时,由于 SMDDevice 只是负载采集告警和控制,具体仪表的业务逻辑还需要一个控制器实现,就是这个。"
TinyGo 有内存管理缺陷
要不直接买个能采集动环数据的盒子呢?也不贵来着,肯定比开发便宜
用 C 实现呗,如果只是读数据、通讯,多简单啊。。。
team 数据备份,加上测试环境提供存储 不需要什么花里胡哨的功能,支持 raid1 ,smb ,iscsi 和 nfs 就行了。 估计是个 nas 都支持,所以双盘位最便宜的…
公司打算把 OSS 上的 40 多 TB 的照片迁移到本地,但是嫌流量费太贵了,大家有好的方案吗 可以申请 闪电立方 寄硬盘 嗯嗯,感谢,我先这样尝试一下 …
这是一篇非技术向的分享与讨论 我觉得国行小米手机对谷歌的出场支持还不错的,至少这台 K50 拿到手只需要在自带的应用商店里安装 Play Store ,之后再通过 Play S…
合速度