从 0 开始学架构
李运华
网名“华仔”,前阿里资深技术专家(P9)
152573 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 66 讲
结束语 (1讲)
结课测试 (1讲)
从 0 开始学架构
15
15
1.0x
00:00/00:00
登录|注册

48 | 再谈开源项目:如何选择、使用以及二次开发?

开发符合业务需求的轮子
给开源项目提需求或bug
不改动原系统,开发辅助系统
准备应急手段
备份重要的业务或数据
先在非核心业务上使用
小心谨慎应用到线上
进行故障测试
进行性能测试和压力测试
核对配置项作用和影响
通读设计文档或白皮书
故障检测和恢复能力
维护工具
日志齐全
社区活跃度
使用的公司数量
版本号
开源项目功能
业务需求
发明你要的轮子
保持纯洁,加以包装
做好应急,以防万一
小心应用,灰度发布
深入研究,仔细测试
聚焦运维能力
聚焦是否成熟
聚焦是否满足业务
基于开源项目做二次开发
使用开源项目
选择一个开源项目
总结
开源项目的选择、使用和二次开发

该思维导图由 AI 生成,仅供参考

我在专栏特别放送第 3 期谈了如何高效地学习开源项目,主要聊了我在学习开源项目的一些看法和步骤。今天我们再聊开源项目,谈谈如何选择、使用以及二次开发
软件开发领域有一个流行的原则:DRY,Don’t repeat yourself。翻译过来更通俗易懂:不要重复造轮子。开源项目的主要目的是共享,其实就是为了让大家不要重复造轮子,尤其是在互联网这样一个快速发展的领域,速度就是生命,引入开源项目可以节省大量的人力和时间,大大加快业务的发展速度,何乐而不为呢?
然而现实往往没有那么美好,开源项目虽然节省了大量的人力和时间,但带来的问题也不少,相信绝大部分技术人员都踩过开源软件的坑,小的影响可能是宕机半小时,大的问题可能是丢失几十万条数据,甚至灾难性的事故是全部数据都丢失。
除此以外,虽然 DRY 原则摆在那里,但实际上开源项目反而是最不遵守 DRY 原则的,重复的轮子好多,你有 MySQL,我有 PostgreSQL;你有 MongoDB,我有 Cassandra;你有 Memcached,我有 Redis;你有 Gson,我有 Jackson;你有 Angular,我有 React……总之放眼望去,其实相似的轮子很多!相似轮子太多,如何选择就成了让人头疼的问题了。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文从如何选择、使用和二次开发开源项目三个方面进行了详细讲解。首先,强调了对开源项目进行深入研究和仔细测试的重要性,以避免出现因使用不当而导致的问题。其次,提出了在应用开源项目时需要小心谨慎,进行灰度发布,并做好应急准备以防万一。最后,针对基于开源项目进行二次开发,建议保持纯洁并加以包装,同时提出了发明符合自身需求的轮子的观点。总的来说,本文为读者提供了在选择、使用和二次开发开源项目时需要考虑的关键因素,帮助读者更加聪明地选择和应用开源项目。文章内容丰富,涵盖了开源项目的实际应用场景和二次开发的技术思考,对读者具有一定的指导意义。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《从 0 开始学架构》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(37)

  • 最新
  • 精选
  • 何磊
    如果公司规模小建议可以直接使用云厂商的产品,因为运维方便。但是如果业务大,很多个性化的配置以及有自己的整套监控系统等,不适合用云厂商产品,无法进行系统整合。

    作者回复: 点赞👍

    2018-08-16
    62
  • 文竹
    依据情况做出选择。比如:我们公司有些组件,mysql,redis都是使用阿里云上的。数据平台则是自己搭建的。 使用云上的mysql,redis省去了很多运维成本和一些复杂性问题,不如高可用,高性能。总的来说成本较低。 自己搭建数据平台有如下原因: 1、集团下面有很多子公司,如果每个公司都要自己专门处理大量数据的话,总合计成本很高。 2、技术更容易沉淀,能更有效地为集团产业链提供服务。

    作者回复: 你们的思路挺好,大数据确实要统一维护

    2018-08-26
    30
  • 问题究竟系边度
    业务初期,云平台本身提供的服务性能已经满足需求了,同时提供可视化运维,极大降低运维和部署成本,同时有熟悉的专家团队帮忙特殊问题。 业务发展后,在考虑根据业务特性做定制开发

    作者回复: 正解,参考架构设计的合适原则

    2018-08-20
    16
  • William
    个人认为: 用云产品的好处是,1.方便快捷,既然是产品那肯定经过包装,对很多bug进行了处理,因此上手快和使用方便;2.云产品自带维护功能,专业性比自建强,不用自己投入大量人力到维护的事情上; 缺点也有两个:1.羊毛出在羊身上,自带维护功能,意味着费用也会贵一些;2.维护交给第三方,意味着依赖第三方,出现影响业务的紧急情况可能出现支撑不到位,响应缓慢,解决问题需要时间长等问题; 自己用云服务器搭建的话,自己还是得亲力亲为,坑要自己踩,出现问题自己解决,但是也相应的灵活,有些问题可以结合业务情况来回避。

    作者回复: 正确👍👍👍

    2018-08-16
    12
  • SeeSharp
    我身边很多人有个坏习惯,开源库版本喜欢用最新稳定版–0.1,以为遇到坑可以在网上获得别人的解决方案,真遇到坑的时候自己又没有能力改或者已经被最新稳定版fix了要么手动把这单个bug fix搬过去要么被迫升版本,怎么劝都劝不动

    作者回复: 哈哈,确实如此,其实我建议用最新的稳定版就可以了

    2018-08-16
    8
  • 呵呵
    DRY,不是说的是不要随意复制、粘贴代码么

    作者回复: 代码层面不要拷贝粘贴,设计层面不要重复发明轮子

    2018-08-18
    7
  • pding
    团队、业务从小到大,对于开源项目的应用也是不同的方式,从不用,拿来就用,附加功能开发到最后的自己造轮子。在这个过程,BUG都是无法避免,要做的是备份、容灾,做好运维,管理好风险!

    作者回复: 总结到位

    2020-05-23
    5
  • Jun
    我倾向于直接用服务。第一,运维压力小。云厂商会提供大部分基础架构的运维和调优。客户集中精力在业务运维。第二,上线扩容方便快速。客户可以自己申请新实例。但安装和配置都是问题,也无法利用云厂商已有的经验。这些经验都是其他客户血泪基础上得到的,非常宝贵。第三,软件升级有保障。新版本不一定兼容,也许有bug。自己升级需要大量人力物力确认。第四,出了问题有人背锅。

    作者回复: 云服务是大趋势了

    2019-12-22
    3
    5
  • 小喵喵
    为了存储高可用,比如在 mongdb写一份,然后在MySQL也写一份,具体怎么写呢?是写找到mongdb,然后由mongdb同步到MySQL吗?还是有其他更好的方法?

    作者回复: 1. 代码写两次,简单粗暴,但可能数据不一致 2. 脚本同步,但可能出现同步延迟导致数据丢失一部分

    2018-08-20
    2
    5
  • 波波安
    根据团队的开发实力来决定吧。前期团队小,业务量不大,可以购买成熟方案。

    作者回复: 正解

    2018-09-05
    3
收起评论
显示
设置
留言
37
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部