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

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

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

全部留言(37)

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

    作者回复: 点赞👍

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

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

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

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

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

    作者回复: 正确👍👍👍

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

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

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

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

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

    作者回复: 总结到位

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

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

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

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

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

    作者回复: 正解

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