Cadence:驯服复杂流程的工作流引擎

Python013

Cadence:驯服复杂流程的工作流引擎,第1张

Cadence是一个开源的无故障状态代码平台和工作流引擎,专为解决与第三方 API、内部服务和长期运行的业务流程进行复杂交互的挑战。Cadence 为使用需要容错的基于 微服务 架构 以及包含无数多步骤并发工作流或与多个第三方 API 交互的应用程序的开发团队提供了很多价值。

Cadence 将应用程序的整个状态保存在与任何特定进程无关的持久虚拟内存中。存储的应用程序状态包括用户定义活动的所有调用参数和返回结果。然后,它使用该信息来赶上并重播被中断的工作流。

Cadence 拥有使开发人员能够使用 Java、Go、Python 和 Ruby 等流行语言创建和协调工作流的库。Cadence 服务(例如工作人员)在很大程度上是无状态的,并利用数据存储来实现任务/工作流的持久性。支持的存储选项包括开源 Cassandra 和 MySQL/PostgreSQL,并且适配器可用于任何具有多行单分片事务的数据库。还提供多种服务部署模型。例如,Uber 使用由数百个应用程序共享的多租户 Cadence 集群。

Cadence 的优势体现在以下用例中:

要开始使用 Cadence,请获取Cadence 服务器或Docker 映像的[url=https://github.com/uber/cadence]GitHub 存储库[/url]。

在此处获取最新的 Cadence Java 客户端。将其作为依赖项包含在您的 Java 项目中:

通过向连接到 Cadence 服务的工作人员注册,将此工作流链接到 Cadence 框架(工作人员默认连接到本地运行的服务)。

现在,通过运行工作程序使用 CLI 执行 Hello World 工作流。

Cadence:驯服复杂流程的工作流引擎

手机游戏一般是用Unity、COCOS、java、C语言开发的,但也要看具体情况,有的手机游戏也可能是用HTML5开发的。

flash、java游戏俗称小游戏,基本上都是一些休闲类的、傻呆萌的情节和操作,这类游戏开发相对比较简单,会javascript、flash cs、java就可以进行开发了。

一个大型游戏的开发,需要庞大的团队使用各种各样的语言和工具来完成。总结一下,主要有C、C++、汇编语言、着色器语言、脚本语言、高效的开发语言C#或Java。

iOS主要是用C++或Object C开发,安卓主要用Java开发。学习游戏开发,一般的大型游戏开发不是单一用某一种软件语言的问题,要想知道哪家靠谱也不难,如Java基础打好后,未来的发展前景也是非常好的,现在手机游戏主要有两个平台:iOS和安卓。

开发游戏我们经常听到的是游戏引擎,一个游戏引擎决定一个游戏最基本的东西操作和效果,那么一般的游戏开发架构从底到顶一般是Direct X游戏引擎。

Direct X可是大名鼎鼎相当于所有显卡的一个统一接口,为游戏提供一个利用硬件渲染的编程模型,但Direct X接口为了追求高性能功能非常简单基本的绘图功能,不利于游戏的高效开发。

此时就需要根据游戏特点对其进行适当的取舍和封装,实现一组更高抽象的游戏开发接口和框架,可以理解成游戏引擎中的图形引擎。这部分的开发一般使用的语言是C、C++和少量的汇编语言。

Python和Django给我的体验非常棒,每个开发人员都应该考虑一下。不过,我很快就怀念ROR了。Ruby支持真正的private/public/protected方法(Python只是用它的命名方式模拟一下),而且它的语法更宽松(Python里面每个方法都要写(),烦死我了)。Django不像Rails那么简单,需要更多的代码完成相同的工作。Django还有些小问题让人觉得很不爽,比如需要手工传递参数到view,数据库处理也不像Rails的ActiveRecord完成的那么漂亮。这种问题还有很多。

另一方面,Python比Ruby要快,而且内存占用更少。而且我真的爱上了Python的缩进语法。更重要的,Python和Django工作正常。我从来没有遇到过像Rails那样当机的问题。

那么,为什么我在下个项目的时候又回到了Rails上呢?三个字:FUN。我觉得ROR用的更爽,社区庞大活跃而且很有用。可用的Rails插件很多而且核心代码的改进相当快。Rails需要的代码量更少,没有self.__awkward_method_calls()这种东西,有内建的Ajax和REST支持,更复杂的数据库操作和模板引擎。

那死机的问题怎么办呢?还有速度的问题呢?嗯,死机的问题消失了。别问我怎么弄的,我也不知道,它就那样消失了,我发誓!某个时间某个问题的修复解决了我的问题。但是速度的问题仍然是Rails的一个软肋。使用缓存和优化代码可以解决很多情况下的问题,而且Ruby的作者Matz正在努力的写成一个新的虚拟机,以便让Ruby至少像Python那样快。

我的建议是:两个都试用足够长的时间,才能发现哪一个更适合你。如果你已经有Python的编程经验,Django当然是最好的,但是如果你有Java/Perl/Smalltalk背景,ROR可能更合适。