应用中间件
- 70 次浏览
【BPM 产品】顶级免费和开源BPM软件
业务流程管理软件主要用于为人们提供设计,构建,分析,修改和测试各种业务流程的平台。它有助于有效模拟业务流程生命周期的各个阶段,从而实现高度准确的实施。然后分析在流程执行期间创建的日志的潜在模式的瓶颈,漏洞和其他低效率。
虽然专有BPM软件产品通常作为独立解决方案存在,需要对每个业务逻辑开发生命周期流程进行独立维护,但开源软件产品与持续集成和交付管道的兼容性更高,可实现有效的IT资产管理。
业务流程管理软件对您业务的重要性
由于其不断发展和高效的BPM技术解决方案,业务流程管理软件是现有IT行业的一种创新解决方案。 BPM软件提供广泛的流程自动化,提高生产力并确保合规性。此外,与专有BPM软件供应商相比,开源BPM软件提供了更可靠且极具成本效益的替代方案,从而为更好的业务解决方案创造了空间。
10个最佳免费和开源BPM软件:
1.Bonitasoft
这个特殊的平台被广泛称为Bonita BPM,可以为各种DevOps团队提供持续的业务改进。 它有助于简单有效地交付应用程序,这表明在实时环境中对业务标准的变化具有极大的兼容性。
此外,Bonitasoft非常轻量级,并且实现了模块化体系结构,该体系结构由超过12000个成员的开源社区的大本营支持,可满足各种查询解析要求。
2.Red Hat JBoss BPM suite
该套件在单个BPM平台上集成了业务流程管理,资源规划,事件处理和规则管理的功能。 它还可以有效地用于捕获各种业务策略和过程,并促进各种业务操作和活动的自动化。
该软件部署在物理,虚拟,云等不同环境中,最适合不同的企业组织和IT服务公司。
3.Alfresco By Activiti
Activiti是专为商业组织和开发人员设计的最佳开源BPM软件和工作流引擎平台之一。 它是轻量级的,并且包含一个用于Java的超快速BPMN 2.0流程引擎。
此外,Activiti还针对技术和非技术方面进行了大量优化,即分析,建模,业务流程兼容性生成以及软件创建和支持。
4.Adobe LiveCycle
Adobe LiveCycle的企业套件4是高端BPM软件,它集成了表单平台和企业文档的概念。 使用该软件的目的包括处理信息,提供个性化通信和有效保护敏感信息。
使用该软件,用户可以通过连接和自动化关键业务流程来降低总体拥有成本,从而提高生产力。 它还有助于创建简约形式,以便有效地捕获数据并处理获得的信息。
5.ProcessMaker
ProcessMaker是一款直观,易用且创新的BPM软件,适用于各种规模的组织。 它具有可在Web上访问的工具箱,用于创建数字表单以映射工作流程。 它声称拥有所有BPM软件中最低的开销之一,我们对此毫不怀疑。
其创新的BPMN 2.0功能提供了拖放式样式建模工具,可以轻松调整大小或移动和重新标记流程元素。 响应式DynaForm Designer可帮助您创建表单,而无需编写任何代码。 它也可以在iOS和Android上使用,使其更轻巧,更高效。
6.Modelio
Modelio是一个开源建模环境,支持UML,HTML,脚本语言支持和BPMN支持以及UML集成等。 它拥有20年的历史,为软件开发人员,系统架构师,分析师等提供高端功能。
Modelio非常灵活。 您可以配置自己的模块,软件将根据您的需求进行调整。 它已经拥有各种预先存在的模块,例如Java Designer,WSDL Designer,Togaf Architect和UML Testing配置文件。 可以在平台上毫不费力地执行模型扩展和添加。
7.Camunda
Camunda执行BPMN 2.0,非常轻量级,并提供广泛的可扩展性。 该平台最适合JAVA EE和spring,并提供强大的REST API和脚本语言支持解决方案。
它还可以用作Tomcat,JBoss等中的容器服务,用于多个应用程序,而无需关闭处理引擎。 这是全球最大的公司之一,也是全球市场上极具主导性的BPM解决方案提供商。
8.RunaWFE
RunaWFE是BPM的跨平台最终用户解决方案。 它具有Web界面,可以轻松与区域数据库集成。 它为portlet提供支持,并与企业应用程序和LDAP / MS Active Directory集成。 它还可以与Alfresco集成。 它可以在多种语言和多种平台上使用,例如Windows,Linux,FreeBSD和Solaris操作系统。
9.Orchestra
它针对长期面向服务的流程进行了优化,提供了处理复杂业务流程的功能。 它基于OASIS标准BPEL,并提供广泛的服务集成,以提高生产力水平。
Orchestra是一个完全开源的业务流程管理软件,可以在LGPL许可下轻松下载。
10.jBPM
jBPM是一个开源的BPM软件和工作流引擎,可以弥合业务分析师和开发人员之间的差距。
它是用Java编写的,可以使用BPMN 2.0规范简化流程执行。它可以在任何Java环境中运行,并且可以轻松嵌入以部署到各种应用程序中。
结论
BPM软件解决方案在最新市场趋势方面具有改善各种竞争行业的业务和财务标准的良好记录。它们包含高端工具和实用程序,可有效管理各种业务流程,最终为创造更好的商业机会而努力。因此,在任何特定业务中加入BPM软件套件对于在相应的经济前沿中获得最大利润和更好的业务水平极为重要。
这些是我们遇到的一些最好的免费和开源BPM工具。如果您有其他喜欢的,请在下面的评论中告诉我们。
- 486 次浏览
【中间件】What Is NGINX Plus?
NGINX Plus是一个基于开源NGINX构建的软件负载均衡器,Web服务器和内容缓存。 NGINX Plus具有独特的企业级功能,超出了开源产品的功能,包括会话持久性,通过API配置和主动健康检查。 使用NGINX Plus代替硬件负载均衡器,在不受基础设施约束的情况下获得创新自由。
为何选择NGINX Plus?
Cost Effective
与硬件ADC相比,节省80%以上,而不会牺牲性能或功能。
Flexible and Portable
在任何地方部署:公共云,私有云,裸机,虚拟机和容器
Automated
通过内置的NGINX Plus API执行常见任务,节省时间
特征
负载均衡器
使用软件扩展传统的负载平衡:
- HTTP,TCP和UDP负载平衡
- 使用URI,cookie,args等进行第7层请求路由
- 基于cookie的会话持久性*
- 状态代码和响应正文的主动健康检查*
- 使用DNS *进行服务发现
内容缓存
使用为世界上最大的CDN提供支持的相同缓存:
- 缓存静态和动态内容
- 通过微缓存(microcaching)提高动态内容性能
- 在后台重新验证时提供“陈旧”内容以提高性能
- 覆盖或设置Cache-Control标头
- 使用缓存清除API轻松管理缓存*
Web Server
以无与伦比的速度和效率交付静态资产:
- 同时处理数十万客户端
- 使用比其他Web服务器少90%的内存
- 反向代理多个协议:HTTP,gRPC,memcached,PHP-FPM,SCGI,uwsgi
- 流HTTP视频:FLV,HDS,HLS,MP4
- 支持HTTP / 2服务器推送的HTTP / 2网关
安全控制
保护您的应用:
- 请求和连接限制
- 双栈RSA / ECC SSL / TLS卸载
- TLS 1.3支持
- 动态证书加载
- 基于IP地址的访问控制列表(ACL)
- API的JWT身份验证和OpenID Connect单点登录(SSO)*
- NGINX WAF动态模块*
动态模块
动态插入其他功能:
- NGINX JavaScript模块在请求处理期间运行JavaScript代码
- GeoIP模块按IP地址定位用户(需要MaxMind GeoIP数据库)
- 用于编译自己的自定义模块的构建工具
- SSO模块:ForgeRock,IDF Connect和Ping Identity *
- 动态模块库*
监控
诊断和调试复杂的应用程序体系结构:
- 使用NGINX Amplify监控NGINX指标并验证配置
- 适用于AppDynamics,Datadog和Dynatrace的插件
- 具有超过90个唯一指标的扩展状态*
- 内置实时图形仪表板*
- 用于与自定义监视工具集成的JSON和HTML输出*
高可用性(HA)*
可扩展且可靠的HA部署:
- 主动 - 主动和主动 - 被动HA模式
- 群集中NGINX Plus服务器之间的配置同步
- 状态共享功能包括Sticky-Learn会话持久性,速率限制和键值存储
- 使用内置脚本轻松安装
Kubernetes Ingress控制器
使用NGINX Plus创建Kubernetes应用程序:
- 使用SSL / TLS终止进行负载平衡
- WebSocket和HTTP / 2支持
- 请求之前的URI重写被转发到应用程序
- 普罗米修斯出口商进行监测
- 会话持久性和健康检查*
- JWT认证*
可编程
动态部署自定义体系结构:
- 用于脚本和高级配置的NGINX JavaScript模块
- Lua脚本语言
- Ansible,Chef和Puppet集成
- 用于管理上游服务器,键值存储和实时指标的API *
- 无需重新加载的动态重新配置*
流媒体
Scalably提供流媒体:
- 直播:RTMP,Apple HTTP直播(HLS),HTTP上的动态自适应流媒体(DASH)
- VOD:Flash(flv),MP4
- 自适应比特率VOD:HLS,Adobe HTTP动态流(HDS)*
- MP4流媒体的带宽控制*
原文:https://www.nginx.com/products/nginx/
本文:http://pub.intelligentx.net/what-nginx-plus
讨论:请加入知识星球或者小红圈【首席架构师圈】
- 197 次浏览
【应用中间件】NGINX作为WebSocket代理
WebSocket协议提供了一种创建支持客户端和服务器之间实时双向通信的web应用程序的方法。作为HTML5的一部分,WebSocket使开发这些类型的应用程序比以前可用的方法容易得多。大多数现代浏览器都支持WebSocket,包括Chrome、Firefox、Internet Explorer、Opera和Safari,现在越来越多的服务器应用程序框架也支持WebSocket。
对于需要多个WebSocket服务器来实现性能和高可用性的企业生产使用,需要一个理解WebSocket协议的负载均衡层,NGINX从1.3版开始就支持WebSocket,可以作为反向代理,对WebSocket应用程序进行负载均衡。(NGINX Plus的所有版本都支持WebSocket。)
查看最近关于NGINX的可伸缩性的性能测试,以平衡WebSocket连接的负载。
WebSocket协议与HTTP协议不同,但是WebSocket握手与HTTP兼容,使用HTTP升级工具将连接从HTTP升级到WebSocket。这使得WebSocket应用程序更容易地适应现有的基础设施。例如,WebSocket应用程序可以使用标准的HTTP端口80和443,从而允许使用现有的防火墙规则。
WebSocket应用程序在客户机和服务器之间保持长时间运行的连接,从而促进实时应用程序的开发。用于将连接从HTTP升级到WebSocket的HTTP升级机制使用升级和连接头。反向代理服务器在支持WebSocket方面面临一些挑战。一个是WebSocket是一个逐跳协议,因此当代理服务器拦截来自客户机的升级请求时,它需要将自己的升级请求发送到后端服务器,包括适当的头文件。此外,由于WebSocket连接是长寿命的,与HTTP使用的典型短寿命连接相反,反向代理需要允许这些连接保持打开状态,而不是因为它们看起来是空闲的而关闭它们。
NGINX支持WebSocket,允许在客户机和后端服务器之间建立隧道。NGINX要将升级请求从客户端发送到后端服务器,必须显式设置升级和连接头,如下例所示:
location /wsapp/ { proxy_pass http://wsbackend; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; }
完成此操作后,NGINX将其作为WebSocket连接处理。
NGINX Websocket例子
下面是一个活生生的例子,展示NGINX作为WebSocket代理的工作方式。本例使用ws,这是一个基于Node.js的WebSocket实现。NGINX使用ws和Node.js作为一个简单WebSocket应用程序的反向代理。这些说明已经在Ubuntu 13.10和CentOS 6.5中测试过,但可能需要针对其他操作系统和版本进行调整。在本例中,WebSocket服务器的IP地址是192.168.100.10,NGINX服务器的IP地址是192.168.100.20。
如果尚未安装Node.js和npm,请运行以下命令:
Debian和Ubuntu:
$ sudo apt-get install nodejs npm
对于RHEL和CentOS:
$ sudo yum install nodejs npm
Node.js在Ubuntu上安装为nodejs,在CentOS上安装为node。这个例子使用了node,所以在Ubuntu上我们需要创建一个从nodejs到node的符号链接:
$ ln -s /usr/bin/nodejs /usr/local/bin/node
要安装ws,请运行以下命令:
$ sudo npm install ws
注意:如果您得到错误消息:“error: failed to fetch from registry: ws”,运行以下命令来修复问题:
sudo npm config set registry http://registry.npmjs.org/
然后再次运行sudo npm install ws命令。
ws附带了将用于客户机的程序/root/node_modules/ws/bin/wscat,但是我们需要创建一个程序来充当服务器。创建一个名为server.js的文件,包含以下内容:
console.log("Server started");
var Msg = '';
var WebSocketServer = require('ws').Server
, wss = new WebSocketServer({port: 8010});
wss.on('connection', function(ws) {
ws.on('message', function(message) {
console.log('Received from client: %s', message);
ws.send('Server received from client: ' + message);
});
});
要执行服务器程序,请运行以下命令:
$ node server.js
服务器打印一个初始的“server started”消息,然后监听端口8010,等待客户机连接到它。当它接收到客户端请求时,它会对其进行回显,并向客户端发送包含它接收到的消息的消息。要有NGINX代理这些请求,我们创建以下配置:
http { map $http_upgrade $connection_upgrade { default upgrade; '' close; } upstream websocket { server 192.168.100.10:8010; } server { listen 8020; location / { proxy_pass http://websocket; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } } }
NGINX监听端口8020并将请求代理到后端WebSocket服务器。proxy_set_header指令使NGINX能够正确处理WebSocket协议。
为了测试服务器,我们运行wscat作为我们的客户端:
$ /root/node_modules/ws/bin/wscat --connect ws://192.168.100.20:8020
wscat通过NGINX代理连接到WebSocket服务器。当您键入一条wscat要发送到服务器的消息时,您将看到它在服务器上发出回显,然后来自服务器的一条消息出现在客户机上。下面是一个互动的例子:
Server: | Client: |
---|---|
$ node server.js Server started |
|
|
wscat --connect ws://192.168.100.20:8020 |
Received from client: Hello |
|
< Server received from client: Hello |
这里我们看到客户机和服务器能够通过NGINX进行通信,NGINX充当代理,消息可以继续来回发送,直到客户机或服务器断开连接。要使NGINX正确处理WebSocket,所需要做的就是正确地设置头文件,以处理将连接从HTTP升级到WebSocket的升级请求。
原文:https://www.nginx.com/blog/websocket-nginx/
本文:https://pub.intelligentx.net/nginx-websocket-proxy
讨论:请加入知识星球或者小红圈【首席架构师圈】
- 112 次浏览
【应用交付控制器】NGINX由Gartner在最新的应用交付控制器研究中命名
自成立以来,NGINX一直专注于构建软件,以帮助下一代数字业务以最高的性能,可靠性,安全性和规模开发和部署他们的应用程序,并在广大开源用户社区的支持下完成。我们很自豪地宣布,Gartner已经认可了NGINX在其Gartner应用交付控制器魔力象限1和Gartner应用交付控制器关键能力2 2016年报告方面的优势。
据Gartner称,“应用交付控制器是企业和云数据中心的关键组件,可提高应用程序可用性,性能和安全性。然而,市场处于不稳定状态,传统I&O和以应用为中心的人员之间的差异越来越大“。组织需要发展其能力,这进一步推动了这一进程。 “这种变化和分叉是Gartner所称的”双峰“工作方式的缩影,它结合了IT的传统功能以及响应不确定性水平和数字化转型所需灵活性的能力。
凭借使用NGINX的1.7亿多个站点和应用程序,我们处于行业转变的最前沿。我们的用户正在从硬件和传统方法转向针对现代应用的灵活且可扩展的解决方案,其中许多解决方案部署在云或混合环境中。我们在这个不断变化的环境中帮助最具创新性的公司取得成功的经验使我们能够创建复杂且快速部署的软件,以最好地满足现代网络的需求。我们的产品是根据数百万用户的反馈以及数百名NGINX Plus客户的直接反馈而开发的。 NGINX Plus通过先进的功能和屡获殊荣的支持,进一步扩展了开源NGINX功能,为真正的企业级解决方案提供支持。
在我们首次进入Gartner Magic Quadrant时,我们很高兴能够获得模式2应用开发和模式1 /模式2混合ADC用例的关键功能报告中的最高分。我们将“模式2”解释为创新且快速变化的应用程序,这些应用程序通常是开发人员领导,而我们将“模式1”称为可预测的,不变的部署,例如现成的企业应用程序。
随着组织抓住机会过渡到现代网络,向现代模式2应用程序开发的不断增长的转变正在成为企业的主流。 开发过程中的这种演变不可避免地有利于那些提供基于软件和应用程序本地负载平衡工具(如NGINX)的公司。
此外,Gartner在关键能力报告中的主要发现之一表明,“到2019年,混合模式1 /模式2用例将变得更加重要,因为企业寻求弥合这两种工作方式之间的要求”。开源供应商在推动现代应用程序的性能,可靠性,安全性和规模方面发挥着至关重要的作用。 ADC市场是开源的另一个很好的例子,它通过为负载平衡工具提供更集中和精益的解决方案来获得巨大的影响力和市场份额。更快地进行创新并提供更灵活的产品的能力正在扰乱ADC市场,并帮助其与当今的数字业务一起成长。
NGINX Plus与硬件ADC的性能和最流行的功能相匹配,与传统竞争对手相比,成本节省高达75%。通过迁移到NGINX Plus的基于软件的ADC,客户还可以释放硬件设备无法提供的灵活性,因为NGINX可以在任何地方运行:私有数据中心,公共云或私有云以及容器中的裸机。
NGINX Plus客户认识到,这种新方法对于实现将新服务推向市场所需的速度和灵活性是必要的。根据IgnitionOne运营副总裁AJ Wilson的说法,“因为我们正在处理来自微软,Facebook和谷歌等数据的大量数据,我们需要提出一个不同的解决方案来处理这些流量。传统的硬件负载平衡器价格昂贵,缺乏我们所需的灵活性和规模。我们之所以选择NGINX Plus,是因为它可以扩展到足以应对我们所讨论的负载,让我们相信我们可以提供解决方案。使用NGINX Plus,我们能够使用我们的硬件负载平衡器处理过去处理量的四到五倍。“
我们非常自豪能够成为模式2应用开发和模式1 /模式2混合ADC用例的顶级供应商,并且是魔力象限的关键参与者。我们相信这使我们成为现代环境中灵活,高性能负载平衡器不断增长的应用交付趋势的最前沿。我们期待在今年的年度用户大会nginx.conf 2016上与我们的团队以及现有和未来的NGINX用户一起庆祝我们的持续成功,该大会将于明天9月7日在奥斯汀开幕。
[1] Gartner“[应用交付控制器的魔力象限]”由[Andrew Lerner,Joe Skorupa,Danilo Ciscato],[2016年8月29日]。
[2] Gartner“[应用交付控制器的关键功能]”由[Mark Fabbi,Danilo Ciscato,Andrew Lerner],[2016年8月29日]。
此图由Gartner,Inc。作为更大的研究文档的一部分发布,应在整个文档的上下文中进行评估。 Gartner文件可根据NGINX,Inc。的要求提供。
Gartner不认可其研究出版物中描述的任何供应商,产品或服务,也不建议技术用户仅选择具有最高评级或其他名称的供应商。 Gartner研究出版物包含Gartner研究组织的意见,不应被视为事实陈述。 Gartner对本研究不承担任何明示或暗示的担保,包括任何适销性或适用于特定用途的担保。
本文:
讨论:请加入知识星球或者小红圈【首席架构师圈】
- 45 次浏览
【应用架构】高可扩展性工作流引擎Zeebe已准备就绪
Zeebe是Camunda的工作流引擎,旨在满足在云原生软件架构上运行的高性能应用程序的可扩展性要求,并支持跨低延迟,高吞吐量场景中跨多个微服务的工作流。 Zeebe可以通过支持消息事件在事件驱动架构(EDA)中运行。 Zeebe的新版本0.20.0刚刚作为免费社区版本发布,并被认为是生产就绪。
根据Camunda产品经理Michael Winters的说法,生产就绪意味着新版本可以可靠地处理编排用例。将发布标记为生产就绪的要求包括:
- 通过BPMN元素支持业务逻辑,用于大多数微服务编排用例
- 可以在Kubernetes集群上水平扩展
- 是容错的;如果节点发生故障,则不会丢失任何数据,并且会在发生此类故障时进行恢复
- 适用于Docker,Kubernetes和Apache Kafka等云原生组件
- 提供用于监控,故障排除和审核的工作流数据
传统上,工作流引擎将工作流实例的当前状态存储在数据库中。 Zeebe使用事件源并将所有状态更改作为不可变事件存储在仅附加事件日志中。使用RocksDB将工作流的当前状态的投影存储为快照。日志和快照都存储在磁盘上,这是目前唯一的选择。讨论了其他选项,但目前没有一个在路线图上。
为了实现所需的容错性,弹性和水平可伸缩性,Zeebe构建为没有任何中央组件或数据库的分布式系统。可以在对等集群中设置多个Zeebe代理,该集群使用Gossip协议在集群内路由数据。对于事件日志的复制,使用Raft一致性算法。要向外扩展,可以使用单独的事件日志对每个分区使用分区。
Zeebe在Java虚拟机(JVM)上作为单独的实例运行,这是一种远程引擎方法,应用程序通过网络与Zeebe进行通信。为了保持性能,使用流式传输到客户端和二进制协议(gRPC)。这种方法为Zeebe创建了一个定义的设置和环境,并提供了与应用程序代码的隔离,
Zeebe没有实现任何ACID事务协议。为了缓解这种情况并处理执行工作流中的任务时可能发生的故障,有两种选择。通过在工作完成后通知Zeebe,至少实现一次 - Zeebe将意识到故障并再次执行任务。通过在工作完成之前通知Zeebe,最多只能实现一次 - Zeebe不知道任何故障,任务将不会再次执行。在事件驱动的体系结构中,工作流可以订阅外部消息,Zeebe在处理这些消息时只支持一次。
由于Zeebe使用事件源,因此无法轻松处理查询以查找(例如工作流实例)存在问题。相反,使用导出和CQRS的概念。导出器可以访问事件流并创建数据投影,Operate使用此技术,这是Zeebe附带的工具,用于监视和排除工作流故障。
最近,讨论了开源和源可用许可,开源软件背后的公司限制其许可,以防止服务提供商提供托管服务。 Zeebe是根据Zeebe社区许可证发布的,这是一种类似的源可用许可证,不允许使用Zeebe的工作流服务的商业产品。 Operate工具仍处于预览状态,并附带开发人员许可证,可免费使用。也可以为这两种产品获得企业支持。
最后一个开发人员预览版本0.18.0已经完成了功能,但是Zeebe背后的团队知道将要从即将到来的生产部署中学到很多东西。为了区分生产就绪和完成,他们因此决定调用新版本0.20.0而不是1.0.0。
在两篇博客文章中,Camunda的联合创始人兼首席技术专家BerndRücker描述了Zeebe的基础知识和主要概念,以及他们如何构建高度可扩展的分布式状态机。
为了帮助理解Zeebe的主要概念并启动并运行工作流,可以使用入门教程。
原文:https://www.infoq.com/news/2019/07/workflow-engine-zeebe-ga-release
本文:
讨论:请加入知识星球或者小红圈【首席架构师圈】
- 438 次浏览