当前,在构建可扩展的新闻推送功能方面,业内有一种向外部托管组件迁移的趋势。 Stream.io 公司首席执行官 Thierry Schellenbach 发表了一篇博文,从搜索、新闻推送和实时功能三个方面对比了开源解决方案和托管解决方案,并探讨了这种趋势产生的原因。
在搜索服务器方面,他对比了 ElasticSearch 和 Algolia 。其中,前者是一个开源解决方案,后者通过托管模型提供专利搜索技术。ElasticSearch 的安装配置非常简单,只需几天就可以完成,不过用户技术栈中会多一种组件,而且后续需要处理升级、实例停机等问题。Algolia 只是简单地提供托管 API,并负责监控和运维,用户可以立即享受服务升级带来的好处,而且只需花几个小时就可以为自己的应用添加可扩展的高性能搜索组件。此外,Algolia 还提供分布式搜索网络,它可以在世界范围内复制搜索索引,降低搜索请求的响应延迟。除了方便用户外,这种托管模型也有益于Algolia 本身。他们可以快速迭代,并立即将更新推送给客户,并且无需维护一个客户端与服务器端的版本兼容矩阵。
在新闻推送和活动流方面,他对比了 Stream Framework 和 GetStream.io。其中,前者是一个由他编写的开源框架,后者是其公司提供的托管服务。使用 Stream Framework,开发人员用几天或几周的时间就可以为应用添加一个可扩展的新闻推送功能。不过,安装、设置和维护像 Cassandra、Redis、Celery 和 RabbitMQ 这样的服务也非常耗时,而且增加了技术栈的复杂度。而借助 GetStream.io,开发人员仅用几个小时就可以完成同样的功能。
在实时功能方面,他对比了开源库 Faye 和托管服务 PubNub 。不管使用哪一种,开发人员都可以在几分钟内实现实时功能。但 Faye 需要做很多调整才能处理有许多并发的实时连接。
诚然,托管组件有诸多优点。但从根本上讲,Thierry 认为,有两个原因推动了这种趋势:一是开发人员和企业越来越善于使用微服务架构;二是云提供商使多区域支持的设置更简单。
即便如此,也有一些企业仍在观望。Thierry 总结了以下四个方面的原因:
- 托管解决方案无法定制;
- 安全因素;
- 担心外部组件问题可能会导致应用故障;
- 担心被供应商锁定。
最后,Thierry 总结道,这种趋势催生了诸如 Algolia、Stream.io 和 PubNub 等提供可扩展托管组件的初创公司。而从开发人员的角度来讲,这种趋势产生了两个结果:一是开发人员向应用添加可扩展组件的时间成本大大降低;二是可以及时获得高级功能。
感谢郭蕾对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。
评论