开源选型中的基因论

随着开源组件的日益增多,整个开源社区就像一个超级大的沃尔玛,琳琅满目的开源组件让人挑花了眼。这里,我们就谈谈如何进行选型的问题。

传统的选型方式

一般而言,我们会按如下的方式进行选型验证:

  1. 功能上是否契合。也就是我的需求能通过该组件来完成
  2. 性能如何(会做一些压测)
  3. 稳定性如何
  4. 社区活跃度如何
  5. 是否能方便和其他的组件配合

如果能通过上面的几条,我么可能就会采用该套技术了。然而这往往会导致很多误用。比如很多人就把zookeeper当存储用了,因为倒也满足上面的一些需求。

基因论

这里的基因指的是,某个开源组件是因为什么而诞生到这个世界的。仍然以zookeeper为例,我们可以说zookeeper 是为分布式协调而诞生的,他的基因使得它适合做这一块的工作。但是zookeeper的很多特性又可以利用在很多领域:

  1. 配置变更通知
  2. 集中化的存储

于是有大量的应用围绕这两个功能点开发。这其实就是一种误用。比如Storm 拿 zookeeper存储偏移量,这样就会涉及到频繁的更新,这其实就是不合适的。或许这种场景HBase/Redis之类的存储会更合适些?

我们在选型的过程中过度的考虑了 功能是否匹配,而忽略了开源项目本身的基因,这必然会导致能够实现功能,但是却带来一些不可控的问题。

这里还有一个典型就是Docker,各种滥用导致各种问题,镜像存储问题,虚拟隔离的安全性问题等。如果知道Docker的基因其实是无侵入性的为应用加上资源限制,以及附带运行时环境,就不会各种折腾了。

所以在做选型的时候不妨问问: 我选用的开源组件是为了解决我这个问题而设计和诞生的么?我用的场景是不是吻合他的基因?

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏企鹅号快讯

前后端分离实践

前后端分离并不是什么新鲜事,到处都是前后端分离的实践。然而一些历史项目在从一体化 Web 设计转向前后端分离的架构时,仍然不可避免的会遇到各种各样的问题。由于层...

4078
来自专栏IT大咖说

测试人员必看:传统测试向工程效能转型的最佳实践

内容来源:2018 年 5 月 20 日,eBay中国研发中心技术主管茹炳晟在“2018全球技术周暨第四届南京(全球)软件大会”进行《Quality Engin...

4470
来自专栏企鹅号快讯

代码学习与实践:开篇-测试深入了解代码的好处及实践

1 缘起 最近在负责测试的项目,相对来说比较复杂。从业务上来看,涉及商品添加、审核、交易、支付、退款、换号、管理等多个流程,从代码逻辑上来看,划分了9个模块,还...

2058
来自专栏大数据和云计算技术

Apache Eagle:实时安全监控方案

Eagle是eBay开源的一个分布式实时安全监控方案。通过离线训练模型集合实时流引擎监控,能立即监测出对敏感数据的访问或恶意的操作,并立即采取应对的措施。下图是...

4449
来自专栏L宝宝聊IT

虚拟化的优势vclient安装

1464
来自专栏IT派

2018年Python web五大主流框架

我们都知道风靡一时的Python语言作为人工智能战场上主要使用的枪外,还被广泛应用在Web开发、游戏开发、人工智能、云计算开发、大数据开发、数据分析、科学运算、...

1633
来自专栏lgp20151222

SSH(struts2+hibernate+spring)总结

942
来自专栏python开发者

规范化的软件项目演进管理--从 Github 使用说起

规范化的软件项目演进管理 从 Github 使用说起 1   前言 首先,本文的层次定位是:很基本很基础的 Github 工具的入门级应用,写给入门级的用户看的...

2468
来自专栏云之翼

如何利用腾讯云BGP网络提升客户外网出口的冗余

最近几年,互联网公司发展迅速,有很多互联网公司本身的基础架构都构建在一些公有云厂商之上,除了节省初期投资之外,另外也是借助于一些大的云厂商本身的网络能力,实现业...

2411
来自专栏PPV课数据科学社区

【学习】百万级别数据,数据库Mysql,Mongodb,Hbase如何选择?

情况说明: 现在需要做一个数据存储,500w左右的数据,日后每天大约产生5w条左右的数据。想把这些数据存储起来,供日后的数据分析用?使用上面说的三种数据库中的哪...

4858

扫码关注云+社区

领取腾讯云代金券