这本书第五章讲解物联网开放平台开源软件研究,对于硬件背景的人员通过这个章节对常见的开源软件有一个整体的了解还是不错,但是对于软件背景的这章的内容就偏粗和框架性。其次这章更多就是传统意义上的软件PaaS能力平台的开源软件构建,和物联网本身的结合很少。

这个章节主要讲解了ESB服务总线,MQ消息中间件和消息队列,BPM业务流程管理,CEP复杂事件处理几个部分的内容。而实际上在原来谈SOA架构的时候我们曾经谈到过,整个SOA大框架最底层就是消息中间件,然后是上层的ESB总线引擎,再是规则引擎和CEP复杂事件处理,BPM业务流程管理。这些都属于SOA大架构体系里面的内容。

这个我在很早以前的SOA架构体系规划的时候给出过一个总体架构图,基本说明了上面几个开源软件之间的关系。可以参考我博客最上面的截图进行理解。其中MQ消息中间件属于ESB体系的一部分,对于EDA事件驱动架构又属于CEP复杂事件处理的一部分,而对于规则引擎则是同时会使用在BPM流程管理和CEP复杂事件处理中,只是前者构建的是流程链,而后者构建的是事件链。

对于开源ESB软件分析和比较部分,当前常用的主要还是WSO2 ESB,ServiceMix和Mule ESB,其中还有就是Talend ESB,实际上Talend ESB相当强大,在我几年前的博客文章里面也有描述。真正开源的实际只有WSO-ESB和ServiceMix,对于Mule的社区版本收费,而且费用也很高。

由于ServiceMix本身底层基于Camel规则引擎,AvtiveMQ消息中间件,Apache CXF服务集成框架,同时本身也对Avtiviti流程引擎有集成,因此选择ServiceMix进行ESB总线的定制和二次开发是比较好的一个选择,而我们自研的ESB总线产品本身也是基于ServiceMix ESB进行的二次开发和定制,实现了服务的全生命周期管理能力,服务运行监控和服务治理能力。

对于JBoss ESB以及Sun公司的 Open ESB当前已经基本不使用,没有太多的参考价值。对于Mule ESB和ServiceMix在我前面文章也比较过,Mule对Rest服务接口,服务映射编排等方面的能力支持还是明显的好过ServiceMix,同时Mule ESB本身也在朝API服务能力开放平台转型。

当前如果全新构建物联网开放平台,那么在当前轻量,微服务架构化体系下,实际上已经不会再用比较重的ESB服务总线产品,取而代之的是API服务网关产品,因此这本书如果做版本更新,应该增加API服务网关产品能力概述,开源产品能力对比等相关内容。

对于Storm和S4,仅仅是流处理开源软件,也上升不到CEP复杂事件处理的高度,本书在将CEP复杂事件处理的时候简单的将CEP软件理解为这两个是有问题的。要将CEP实际上可以看到,必须要讲消息中间件,规则引擎,EDA事件驱动架构和EDN事件驱动网络,这些会构成一个CEP复杂事件处理的整体架构。

讲BPM业务流程管理一定要分清楚两个,一个是传统的人工工作流引擎,一个是业务工作流,两者加在一起是完整的BPM软件,即使是当前的主流开源软件jBPM和Activiti,虽然看到都提供对BPMN2.0能力的支持,但是关键能力仍然是在人工工作流引擎上面,对BPM本身的能力还算偏弱,也很难做到类似IBM, Oracle等商用BPM软件般强大。

其次,当前实际从业务场景和需求来说,更多也是仅仅停留在解决人工工作流引擎问题,在工作流引擎中能够支撑自动化的调用外部服务接口的活动节点就能足够满足需求。

在BPM业务流程管理和建模中,我们很难做到的就是将类似BPMN业务建模好的业务流程模型直接自动化的转换为软件系统能够识别的系统模型,即往往业务人员建模和系统开发人员建模仍然是分离的两个动作,而很难集成为一体,这个在我多年前讲BPM的时候经常谈到,当前而言该问题仍然存在。

对于消息中间件可以看到,书里面介绍了RabbitMQ,MetaQ,ZeroMQ等几种常用的消息中间件,对于AviveMQ实际上也是常用的一种消息中间件并广泛使用,基于标准的Java JMS规范。其中RabbitMQ使用AMQP协议来实现,对于常见的消息模式,事务处理,消息持久化都支持。而ZeroMQ更加轻量,基于C/C++语言为底层,性能更好,但是不支持事务,不支持消息支持化,可靠性上偏弱。

注意对于实际的能力开放平台构建,需要用到哪些能力,我们进行重新整理,可以将能力分为 集成+流程平台,技术服务平台,大数据平台 三个部分,其一就是前面谈到的SOA大架构体系下提供的ESB,MQ,BPM,CEP等关键能力。也可以将其划分为两大块,即集成平台能力,流程平台能力。如果再加上基础的面向开发和执行层面的PaaS能力,则再增加 PaaS开发和应用托管平台 ,即传统说的aPaaS内容。

然后就是技术服务平台能力,提供标准的技术服务,即我们说的消息,缓存,文件存储,地图语音等ICT能力都纳入到技术服务能力提供上。对于这块基于各个技术开源软件独立进行构建并开放API能力接口即可。

再次就是大数据平台能力,提供大数据的存储,处理和分析能力。而这块则是基于Hadoop开源平台进行搭建,本身又分为数据采集层,数据存储层,数据处理层,数据分析层。而前面我们谈到的流处理,实际上是在整体Hadoop架构里面的数据处理层和分析层,比如涉及到Ad-Hoc即席查询和实时大数据分析往往涉及到流处理技术的应用。而在物联网架构框架体系下,如果涉及到大并发的物联网设备层的状态采集和实时统计分析,也可以采用流处理技术进行。

相关文章