当前位置: 首页 > 软件库 > 程序开发 > 微服务框架 >

RockScript

微服务编配的脚本语言和引擎
授权协议 Apache
开发语言 Java
所属分类 程序开发、 微服务框架
软件类型 开源软件
地区 不详
投 递 者 梅逸清
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

RockScript

RockScript 脚本语言基于 JavaScript 的语法进行设计,提供不同的执行引擎,可以实现无阻塞的等待,这些功能是弹性的、可恢复的。特别适合在基于事件驱动的架构里实现对微服务集成和编排。

示例代码:

var http = system.import('rockscript.io/http');
var approvalService = system.import('localhost:3000');

var chuckResponse = http.get({url:'http://api.icndb.com/jokes/random'});

approvalService.approve(chuckResponse.body.value.joke);

以下内容来自 InfoQ

在分布式系统中协调服务之间的交互一直以来都是一个巨大的挑战,传统的SOA(面向服务架构)社区已经针对“编配(orchestration)还是编排(choreography)”展开了广泛的争论。服务编配是指按照由集中的引擎(如BPEL)预定义的业务流程来自动执行服务。而服务编排一般不包含集中式的服务监管流程,服务之间的交互是由服务自身建立起来的,微服务大师James Lewis和Martin Fowler将其称为“聪明的端点和笨拙的管道”。

关于编配和编排的争论在微服务社区愈演愈烈,不过服务编排还是成为人们可接受的最佳实践。不过,随着采用微服务架构企业数量的增长(以及在编配流程方面的巨大投入)和使用无服务器架构或FaaS(Function-as-a-Service)框架的服务逐渐流行,编配框架再度引起人们的关注。RockScript就是这样的一个专门用于编配微服务的框架。

RockScript的wiki页上写道,“大部分微服务之间的交互都是通过JSON和HTTP来完成的”,所以这些交互很难具备事务性。在发生交互的任意时刻,被调用的服务都有可能发生崩溃,或者底层的基础设施组件出现故障。如果一个业务流程中涉及多个服务间交互,为了保持一致性,需要把服务间的调用图以及调用成功和失败的结果记录下来。在微服务架构里,一般使用Saga模式来处理多阶段事务协议。

RockScript被设计用于捕捉对事件的响应。一般会使用一个外部事件作为输入触发器,然后发送命令到其他微服务API,在这一过程中可能还会伴随数据转换。RockScript可以用于连接HTTP API和消息交换服务,不过目前仅实现了HTTP API连接。Activiti和jBPM平台的作者Baeyens表示,RockScript旨在“让编写连接企业系统事件的脚本变得更简单,并更容易建立起到脚本的触发器连接”。这与工作流框架IFTTT或Zapier的触发器概念十分相似。

RockScript的执行过程具备弹性,而且运行时引擎可以确保脚本的执行在应用程序或基础设施发生崩溃时自动恢复。每个脚本执行的状态通过事件溯源的方式保存在一个集群上,所以,当脚本在等待异步活动时就不会占用线程或内存。因为使用了事件溯源,在发生故障时(如服务器崩溃)可以追查问题的细节,而且可以从最后一次保存的执行状态中恢复过来。

  • 源代码和测试程序在这里: http://code.google.com/p/javascript4me/ 已在Nokia低端S40手机中测试过。 测试程序是一个标准J2ME应用,打开程序后即可从javascript例程列表中选择一个来显示源文件或直接执行。 如需测试自己编写的javascript源码,只要将编写好的js文件加入scripts.zip并重新打JAR包即可。 优点 体积超级小巧,引擎核

 相关资料
  • Qore 是一个模块化、支持多线程的、集成SQL、弱类型的面向过程和对象的脚本语言,语法简单易懂。 Qore supports safe signal handling, exception handling and exception-safe programming, XML and JSON integration as well as TLS/SSL socket support, HTT

  • 所有能编译出java .class文件的JVM脚本语言,都能在hi-nginx-java体系中工作。 例如groovy : package groovy import hi.request import hi.response import hi.route import java.util.regex.Matcher class test implements hi.route.run

  • 编排微服务的标准模式是什么? 如果一个微服务只知道它自己的领域,但是有一个数据流需要多个服务以某种方式交互,那该怎么做呢? 假设我们有这样的东西: null 在某个地方,有人按下中的一个按钮,“我完成了,让我们这么做吧!”在一个典型的整体服务体系结构中,我认为有一个来处理这个问题,或者装运服务了解发票服务并直接调用发票服务。 但在这个美丽的微服务新世界里,人们是如何处理这件事的呢? 我确实知道这可

  • 脚本语言是介于 HTML 和 Java、C++ 和 Visual Basic 之类的编程语言之间的语言。HTML 通常用于格式化文本和链接网页。编程语言通常用于向计算机发送一系列复杂指令。脚本语言也可用来向计算机发送指令,但它们的语法和规则没有可编译的编程语言那样严格和复杂。脚本语言主要用于格式化文本和使用以编程语言编写的已编译好的组件。 Active Server Pages 使 Web 开发商

  • Active Server Pages 提供了一个在 HTML 页中使用现有脚本语言如 Microsoft VBScript 和 Microsoft JScript 的框架。本节将解释如何创建 ASP 页、如何添加脚本语言语句以及如何执行创建对象实例等基本任务。虽然这些主题介绍了一些脚本和编程的概念,但其用意并非是教您一门脚本语言。Microsoft 的脚本语言提供自己的文档,许多其他的有关脚本的

  • 最近考虑通过写脚本实现自动化处理,但是自己没有接触太多脚本语言,希望大佬们可以帮助选型 脚本的应用场景大部分是通过发送http请求实现每天签到、打卡这样的功能