首页 > 数据库 > 数据库开发技术 > 如何学习和应用开源系统?
常见误区
只有开发这些开源项目的人才能真正理解,我没法参与这个项目开发,因此我很难深入理解。
我的项目现在没有用 Redis,不用的话很难深入理解,先不学了吧。
因为数据结构和算法很重要,所以我只要研究其数据结构和算法就够了,例如 Nginx 用的是红黑树。
“Talk is cheap, show me the code”,一头扎进源码逐行阅读。
正确的做法
业务和团队“可能”有用的。
1. 避免追逐热点,避免广撒网;
2. 自己团队可能用到的;
3. 你的上级管理范围内的团队已经用到的。
迭代学习,循序渐进。
1. 不要期望一次就学精;
2. 隔一段时间再学记忆会更深。
掌握高效的学习方法。
应用“链式学习法”、“比较学习法”、“Play 学习法”、“Teach 学习法” 等高效的方法。
学习步骤

第一步:概要学习
目的:初步掌握基本信息、技术本质、应用场景。
方法:看文档、看文章。
技巧:官方文档的 Introduction(简介) 和Get started(开始学习)。
第二步:安装运行
目的:熟悉基本使用,包括安装配置、架构模式。
方法:对照官方文档搭建简单的环境。
技巧:研究命令行和配置项。
第三步:模拟场景
目的:通过模拟案例掌握如何应用。
方法:模拟不同的业务场景,设计对应的方案,能写Demo的就写Demo尝试。
技巧:1. 结合自己的业务;2. 微信、微博、秒杀、红包等。
第四步:深入研究
目的:从技术深度和技术宽度两个维度来全方位的学习。
方法:看文档、看源码、看文章等。
技巧:1. 链式学习法;2. 比较学习法。
第四步:深入研究 – Redis 样例

第四步:深入研究 - 源码怎么看
1.跨语言的看不懂的就别看
2.带着目的去看
3.看核心实现
第五步:分享知识
目的:通过分享帮助自己体系化和加深理解,增强记忆。
方法:写文章、培训、演讲。
技巧:1. 梳理补充、提炼总结官方文档;2. 对比类似系统。
选 - 如何选择合适的开源系统
适应性:聚焦是否满足业务。
按照“合适原则”和“简单原则”挑选,基于业务量级和团队水平进行选择。
成熟度:聚焦是否成熟。
从“版本号”、“哪些公司在用”、“社区活跃度”等维度判断是否成熟。
可运维:聚焦运维能力
1. 开源项目日志是否齐全;
2. 是否有命令行、管理控制台等维护工具;
3.是否有故障检测和恢复的能力,例如告警、切换等。
用 - 如何使用开源系统
1.深入研究,仔细测试
1. 研究合理的配置项,避免默认配置踩坑;
2. 性能测试:计算机器数量;
3. 压力测试:应急处理。
【案例】
Elasticsearch 默认配置导致经常挂掉。
2.小心应用,灰度发布
小心驶得万年船,先用非核心业务试点再推广。
【案例】
Tokyo Tyrant 的教训。
3.做好应急,以防万一
存储系统做好应急,例如双写。
【案例】
1. MongoDB 丢数据。
2. Tokyo Tyrant 数据损坏。
改 - 如何基于开源项目做二次开发
1.保持纯洁,加以包装
不要改动原系统,而是要开发辅助系统:监控、报警、负载均衡、管理等。
【案例】
Twitter 的 Twemproxy 就是这样做的,而 Redis 到了 3.0 版本后本身提供了
集群功能,原有的方案简单切换到Redis 3.0 即可。
2.发明你要的轮子
没有完全适合你的轮子,等开源系统又太慢了。
【案例】
投入2~4个人花了大约2个月时间基于LevelDB 的原理,自己做了一套缓存框架支持存储、备份、集群的功能,后来又在这个框架的基础上增加了跨机房同步的功能。 保持纯洁,加以包装
原文作者:二进制跳动;如有侵权,请联系管理员删除。