[评论]systemd @ Facebook — a year later[All Systems Go! 2017]
今天看了All Systems Go! 2017上,systemd @ Facebook — a year later这个talk。记录下自己的感想。
首先,Facebook软件更新还是比较及时的,CentOS 7 和 systemd 都上了:
可怜我司还在Ubuntu 14.04上 另外,很多基础组件都是和上游有良好的沟通的:
长远来看,紧跟上游对公司的技术实力、技术影响力都有好处。当然,短期来看,我的系统工作的很好,不跟进上游没毛病啊。国内,大部分是后者吧……
当然,大公司都有自己的repo:
Facebook居然都已经接入了Meson,很让我吃惊。
资源管理
资源管理用的是cgroup2:
结合systemd中的slice:
在docker的潮流之下,Facebook还是比较 old school style 的。不过,slice确实很够解决这个问题,后面可以看看。
服务监控
systemd也提供了监控接口,通过dbus暴露出来:
一个daemon收集数据,上报:
使用Cython包装的sd-bus来获取数据,IPython写原型:
案例学习
一般都是直接关闭rpm里面重启的脚本,Facebook还做了一个工具。
journalctl可以看单机日志,不知道分布式日志有没有用journald。
嗯,一个小坑
systemd的这个转义很反人类,但是他们并没有打算改!
Facebook的建议
文档要贴近用户,积极参与上游,技术分享!
评论
在Reddit上,很多人都不喜欢systemd这种经常改API,不考虑兼容性的做法。
当然,也有人比较视频、文字交流的效率问题……
实际上,之前有一个系统需要部署。
我考察过很多daemonize的方式,从最经典的init.d,到中间的supervisord、upstrat,再到激进的systemd。
综合来看,systemd比较灵活,而且支持user-service,非常适合初期服务的部署。
但是,由于我司用的是Ubuntu 14.04,所以只能切回到supervisord。服务的reload,对于supervisord是一个大问题。
个人而言,还是很期待systemd普及的。
另外,关于最后的建议。国内公司倒是经常tech talks,但是很多时候,并不会将自己的东西开放,也不会推向上游,这对长期的技术发展、系统维护都很不利。
[评论]systemd @ Facebook — a year later[All Systems Go! 2017]
https://robberphex.com/review-of-systemd-facebook-a-year-laterall-systems-go-2017/