关于反应式宣言的思考

响应式编程是软件开发中的一种新兴趋势,在过去的几年中,这种趋势已经引起了技术专家的广泛关注。 去年学习了该主题之后,我很好奇地参加了Coursera上的“反应式编程原理”课程(由Odersky,Meijer和Kuhn撰写)。 来自Typesafe和其他组织的反应性倡导者创建了“反应性宣言” ,试图为反应性编程及其实际目标制定词汇。 这篇文章收集了对宣言的一些思考。



根据反应性宣言系统

  • 对事件做出反应-事件驱动的特性可实现以下特质
  • 对负载做出反应–通过避免对共享资源的争夺来关注可伸缩性
  • 对故障做出反应–能够在所有级别上恢复的弹性系统
  • 对用户做出反应–无论负载如何,荣誉响应时间保证

事件驱动

事件驱动的应用程序由通过发送和接收事件进行通信的组件组成。 通常使用基于推送的通信模型异步传递事件,而不会阻止事件始发者。 一个关键目标是能够有效利用系统资源,而不是不必要地占用资源并最大化资源共享。

反应性应用程序基于分布式体系结构构建,其中消息传递为组件提供了节点间通信层和位置透明性。 它还使组件和子系统之间的接口基于松耦合设计,从而使系统随着时间的推移更容易开发。

设计为依赖于共享的可变状态的系统要求使用某种并发控制机制来协调数据访问和变异操作,以避免数据完整性问题。 并发控制机制限制了系统中的并行度。 阿姆达尔定律清楚地阐明了如何减少程序代码的可并行化部分对系统可伸缩性施加了上限。 避免共享的可变状态的设计允许更高程度的并行性,从而达到更高程度的可伸缩性和资源共享。

可扩展

为了能够利用增加的节点级并行性(增加的CPU数量以及CPU内的物理和逻辑核数)的硬件趋势,需要仔细设计系统架构以进行横向扩展和向上扩展。和系统级并行性(节点数)。 垂直和水平缩放应同时起作用,因此弹性系统也将能够放大和缩小,从而允许针对较低需求条件优化运营成本结构。

弹性的关键组成部分是通过分布式架构和消息传递提供的节点到节点通信机制实现的,该机制允许子系统配置为在相同节点或不同节点上运行而无需更改代码(位置透明性) )。

弹性的

弹性系统将在系统的一个或多个部分出现故障以及意外情况(例如意外负载)时继续运行。 该系统需要仔细设计,以将故障包含在定义明确且安全的隔离区中,以防止故障意外升级和无法控制地级联。

反应灵敏

反应性宣言表征了响应质量,如下所示:

Merriam-Webster将响应式定义为“快速响应或作出适当反应”。

响应式应用程序使用可观察的模型,事件流和有状态的客户端。 … 可观察的模型使其他系统可以在状态更改时接收事件。 … 事件流构成建立此连接的基本抽象。 … 反应性应用程序通过采用设计模式和测试来确保响应事件在O(1)或至少O(log n)时间内返回,而不考虑负载,从而遵循算法的顺序。

评论

如果您在过去几年中一直在积极地关注软件开发趋势,那么反应式宣言中陈述的想法可能对您来说很熟悉。 这是因为该宣言捕获了软件开发社区在构建Internet规模系统中获得的见解。

其中一组课程源于与在分布式系统中集中存储状态有关的问题。 在CAP定理中已经正式确定了在分布式系统中具有强一致性模型的权衡。 CAP引起的见解促使开发人员考虑使用诸如BASE之类的替代一致性模型,以便在可用性和分区容忍性以及可伸缩性方面做出强有力的一致性保证。 近年来,宽松的一致性模型已得到广泛普及,尤其是通过各种NoSQL数据库得到了普及。 应用程序的一致性模型对应用程序的可伸缩性和可用性有重大影响,因此最好在清单中更明确地解决此问题。 选择的一致性模型是一个跨领域的特征,所有应用程序层都应对此一致地同意。 宣言中提到了这种担忧,但是由于这是一个重要的问题,并且隐含着微妙的含义,因此最好对它进行更多的阐述或通过对该主题的讨论来更多地提及它。

事件驱动是编程中广泛使用的术语,可以具有许多不同的含义并且具有多种变体。 由于这是一个超负荷的术语,因此最好对其进行更清晰的定义,并尝试描述在这种情况下确切构成和非构成事件驱动的事物。 作者显然考虑了事件驱动的体系结构 (EDA),但是EDA也是可以通过不同方法实现的。 “异步通信”也是如此。 在反应式宣言中,“异步通信”似乎意味着使用消息传递,例如在消息传递系统Actor模型中 ,而不是异步函数或方法调用。

反应式宣言采纳并结合了来自CAP定理,NoSQL,事件驱动体系结构的许多想法。 它捕获并融合了软件开发社区在构建Internet规模应用程序时所学到的宝贵经验。

宣言很有意义,我可以赞同其中提出的想法。 但是,在某些情况下,可以对术语进行一些详细说明,使那些对可伸缩性问题没有丰富经验的开发人员更易于使用。 有时候,好主意可能发生的最糟糕的事情是,不幸的误解将它们淡化了!

翻译自: https://www.javacodegeeks.com/2014/04/thoughts-on-the-reactive-manifesto.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值