BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

事件应该成为开发者的一等工具

| 作者 Jan Stenberg 关注 28 他的粉丝 ,译者 奚甜甜 关注 1 他的粉丝 发布于 2018年2月5日. 估计阅读时间: 3 分钟 | GMTC大前端的下一站,PWA、Web框架、Node等最新最热的大前端话题邀你一起共同探讨。

亲爱的读者:我们最近添加了一些个人消息定制功能,您只需选择感兴趣的技术主题,即可获取重要资讯的邮件和网页通知

看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料!

Randy Shoup在最近的一篇博客中声称:“我们应该把事件看作是系统中的一等公民,并且应该更多地使用事件。”他认为我们常常低估了事件的价值,忽略了它们给我们带来的好处。例如,事件可以帮助我们实现系统解耦,这样我们就能独立的处理系统的各个部分。

Shoup是Stitch Fix公司技术部门的副总裁,该公司拥有70多个独立的应用程序和服务,能够处理各种不同类型的业务。以该公司的一个相对复杂的工作流程为例,该流程从客户下订单购买服装开始(造型师会负责挑选服装)。这其中包含了下单,造型师挑选产品,发货,甚至还有可能包括退货流程。这些流程建立了一个状态机,通过各种事件来实现状态的转换。虽然实际流程很简单,但是它能够记录下每一个步骤的状态。这个工作流程的好处就是能够很方便的查看历史纪录,例如能够知道已经完成了哪些步骤,每个步骤各花费了多少时间。对于该公司的数据科学团队来说,这些数据非常重要。

在Shoup描述的这种微服务架构中,某个特定的应用程序或服务可能是事件的生产者、事件的消费者或两者兼而有之。他认为一个接口必须明确包含如下事件:

  • 同步的请求和响应操作(例如使用REST和JSON,或gRPC)
  • 生成的事件
  • 被消费的事件
  • 批量读取和写入(例如提取数据以供某些分析工具使用)

当转换状态的时候,这些事件就会被列入历史纪录。通过播放事件可以重建当前的状态,所以当前的状态可以不用存储到数据库中,这种技术被成为事件溯源。Shoup引用了Greg Young及该领域其他权威人士的说法,他还提到了像Kafka和Akka这类用于分布式系统和基于事件系统的工具。

根据Shoup的经验,通常大多数开发者都认为事件是复杂的。特别是对于那些构建3层应用的开发者来说,他们很难从事件的角度来思考问题。而事件中像“最终一致性”、“异步”等这类术语的使用,让他们觉得更加复杂了。Shoup认为,其实事件这个概念对于所有的开发者来说都很普遍。例如软件开发过程中所使用的版本控制工具,我们通过它们上传、测试和部署代码,所有的这些流程都是可以看成是事件。而这些事情,我们每天都要做。

在2017年纽约的QCon大会上,Shoup谈到了微服务中的数据管理,其中便包括仅通过事件来进行通信的内容。

查看英文原文Events Should Be a First-Class Tool for Developers


感谢薛命灯对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT