YANGDAHUAN 2019-06-30
作者:Chaitanya Munukutla
记得是在2015年初,我第一次听到消息经纪人这个词。我正在攻读硕士学位,关于P2P网络,需要模拟稳定吞吐量的传入消息。那时我不是一个极客,所以解决方法是做一个无限的Thread.sleep()循环。不要不满,那时我才21岁。
RabbitMQ是我与消息传递系统的第一次约会。我对这类关系很陌生,并没有太多可比性,所以RabbitMQ似乎很好。但是,自己托管它有点痛苦,而且我也厌倦了Java。那是我找到PubNub的时候,上帝是美丽的。我不需要处理任何事情,几乎所有你使用的环境都有驱动。并且,他们有一个免费等级可用,这是我透露我来自印度的时候,我们比任何人都更好地使用免费资源。
免责声明:我没有试图去找NATS,这是一个意外。
我看到了这个新的基金会,云原生计算基金会,它似乎是街头新的嘻哈孩子,所以我前往cncf.io,看看他们是否有他们吹嘘的东西。然后,我遇到这个名为NATS的新孵化项目。他们称之为“为微服务而设的消息传递”。它有类似于RabbitMQ、ActiveMQ、Pubnub等的消息代理抽象。那么我为什么要切换?
惯用法。我一直在寻找令人兴奋的新语言,这些语言似乎无处不在。我试过Golang、Swift、Kotlin、Python、C#和Erlang(是的,我说过是真的)。新语言似乎带来了他们各自对编程的惯用方式。NATS似乎通过简单直接的驱动程序,带来了原生方式。NATS帮助我学习Golang频道、RxJava和Erlang主管模型。
强大功能。NATS功能强大。它优雅地处理pub-sub、请求-响应、排队和流媒体,甚至可以同时处理!
简单部署。我不能夸大这一点,NATS很容易部署和管理。只需在我的终端上运行./gnatsd即可!
极其省资源。我已经对NATS进行了基准测试,它从未占用超过150MB的RAM来为单个主机上的100万有效负载流入提供服务。仅供参考,单个谷歌Chrome浏览器所需更高。
惊人的表现。如果你到目前为止还没有使用NATS,请停止阅读并下载最新的二进制文件并尝试一下。试用PC可承受的最大负载,NATS让你满意。对于NATS的用户,你知道我在说什么。
tl;dr - 必要是发明的母亲。
实际原因也简单。我正在编写一个带有无服务器触发器的Flutter应用程序,NATS似乎没有Dart驱动程序。所以我写了!!
过程直截了当吗?是,是的。NATS有非常直观的基于文本的协议。所以,我所要做的是打开TCP套接字,并开始发送字节流:)
棘手的部分?好吧,集群。虽然我没有浏览其他驱动程序,当一个群集的主机出现故障时,将订阅从一个主机移植到另一个主机有点棘手。但Dart拥有Future和Stream类的最佳流式抽象,所以,一旦掌握了它,就变得轻松。
为什么选择Dart?我个人认为Dart将在未来3-5年内成为编程语言的超人。谷歌正在大力投注Flutter;Dart现在可用共享代码库开发服务器、iOS、Android、MacOS、Linux和Windows应用程序;Flutter团队现在通过Hummingbird项目将Flutter带到网上。我猜谷歌不会让我失望。
在短时间内,你将无法在消息传递领域中找到像NATS这样棒的东西。它强调云原生操作、群集和闪电般快速的消息传递,这简直令人兴奋。因此,我建议大家使用你选择的语言来尝试一下。
任何Dart/Flutter的开发者,请在Github上查看nats-dart,并告诉我是否合适。