ITPub博客

首页 > 数据库 > 数据库开发技术 > 如何学习和应用开源系统?

如何学习和应用开源系统?

原创 数据库开发技术 作者:greencoatman 时间:2024-01-23 13:33:47 0 删除 编辑

常见误区

只有开发这些开源项目的人才能真正理解,我没法参与这个项目开发,因此我很难深入理解。

我的项目现在没有用 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 的原理,自己做了一套缓存框架支持存储、备份、集群的功能,后来又在这个框架的基础上增加了跨机房同步的功能。 保持纯洁,加以包装

原文作者:二进制跳动;如有侵权,请联系管理员删除。

下一篇: 架构师成长指南
请登录后发表评论 登录
全部评论

注册时间:2022-07-08

  • 博文量
    312
  • 访问量
    141161