前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >代码中的减法

代码中的减法

作者头像
jiewuyou
发布2022-09-29 17:32:29
8400
发布2022-09-29 17:32:29
举报
文章被收录于专栏:数据人生数据人生

  ”简单就是美”,这句谚语在软件领域也是非常适用的。比如MapReduce框架,采用分而治之的思想,最原始的数据由各个map处理,reduce将map的结果汇合,这么简单的框架就解决了很多大数据的问题,待Apache将其开源后,引领了大数据开源社区的发展。还有些经验丰富的程序员告诉我们“负责任的工程师在离职前会删代码”也佐证了这一点,他们利用最后一段空闲时间,梳理程序的脉络,删除冗余的逻辑,让代码更加的清晰,方便接手的人维护。   接手小米流量最大的一块业务后,随着公司对数据的需求越来越大,流量也在不断的增长,后端的性能也受到了极大地挑战,经常出现实时计算以及例行任务不能按时完成的情况。在对后端代码梳理和优化后,发现了大量的冗余代码,以及不需要的过程,删除这些逻辑后,让storm程序能消耗qps高达3W的数据,并且例行任务也能按时完成了。主要有以下几点:

  1. storm程序优化:干掉一些无用的spout,同时减少了一些shuffle过程,让程序的性能提升了一大截,每条消息处理的延迟被大大地降低了
  2. 例行任务:发现一个MR有好多冗余的逻辑判断和处理。blame发现,是由好几拨人提交的。估计业务也是换了几个团队,同时团队人员也有流动。删除这些逻辑后,代码精神了不少

  业务快速发展的时候,为了快速的完成任务,会有很多代码写的不是很友好,一段时间后,就很难维护了。这个时候就要采取措施,以免大规模风险爆发。在代码构建或者维护过程中,都可以参考以下几点。

抽象公共库

  将常用的方法和变量,抽象到公用库中,不仅可以减少代码量,也降低了维护成本。公共库中的类,还更容易发现潜在的错误,因为该方法会被不同的人在不同场合review,增加了bug的曝光量

采用开源的库

  和抽象公共库类似,只不过这些库不是自己写的,而是由公司的其他团队或者开源社区提供,如果选择合适的库,可以减少重复制造轮子,从而更加专注业务。

技术选型

  针对不同的场景,会有很多技术能满足需求,但是不同的选型有着不同的开发维护成本。Spark兴起后,很多公司开始废弃MapReduce,不仅因为Spark的性能,更因为其开发效率很高,数行代码就能完成MapReduce数十行的工作。公司的科学家有时候教育我们“现在的软件都能用汇编实现,为什么不用他们编写呢”,这句话在很多时候都指导着我们。

综合本文,在编写一套软件时,在易于维护的情况下,尽量少写一些代码。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-10-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 抽象公共库
  • 采用开源的库
  • 技术选型
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档