使用开源软件的正确姿势
一、选择开源软件的考量点:
- 是否满足业务
- 是否成熟
- 可以从以下几个方面考察是否成熟:
- 版本号:一般建议除非特殊情况,否则不要选0.X版本的,至少选1.X版本的,版本号越高越好。
- 使用的公司数量:一般开源项目都会把采用了自己项目的公司列在主页上,公司越大越好,数量越多越好。
- 社区活跃度:看看社区是否活跃,发帖数、回复数、问题处理速度等。
- 运维能力
- 可以从以下几个方案去考察运维能力:
- 开源方案日志是否齐全:有的开源方案日志只有寥寥启动停止几行,出了问题根本无法排查。
- 开源方案是否有命令行、管理控制台等维护工具,能够看到系统运行时的情况。
- 开源方案是否有故障检测和恢复的能力,例如告警、倒换等。
二、使用开源软件的考量点:
深入研究,仔细测试
可以从如下几方面进行研究和测试:
- 通读开源项目的设计文档或者白皮书,了解其设计原理;
- 核对每个配置项的作用和影响,识别出关键配置项;
- 进行多种场景的性能测试;
- 进行压力测试,连续跑几天,观察cpu、内存、磁盘io等指标波动;
- 进行故障测试:kill,断电、拔网线、重启100次以上、倒换等。
小心应用,灰度发布
- 再怎么深入的研究,再怎么仔细的测试,都只能降低风险,但不可能完全覆盖所有线上场景。
- 先在非核心的业务上用,然后有经验后慢慢扩展。
做好应急,以防万一
- 对于重要的业务或者数据,使用开源项目时,最好有另外一个比较成熟的方案做备份,尤其是数据存储。例如:如果要用MongoDB或者Redis,可以用MySQL做备份存储。这样做虽然复杂度和成本高一些,但关键时刻能够救命!
三、基于开源项目做开发的考量点:
保持纯洁,加以包装
不要改动原系统,而是要开发辅助系统: 监控,报警,负载均衡,管理等。
给开源项目提需求或者bug