问题 PHP和ESB(使用Mule)(ESB:企业服务总线)


您在何时,何地以及为何在PHP项目中使用ESB?

在哪里,何时以及为什么认为在PHP项目中使用ESB是有意义的?

ESB(以及像Mule这样的ESB辅导员)是否提供PHP和本机LAMP技术所缺乏的任何功能?

编辑

我对这个问题的动机源于我的假设你实际上从未真正需要骡子。骡子将促进与外部服务的沟通,您可以在没有骡子的情况下处理。在一天结束时,Mule也会产生成本和开销。所以我的问题是指导有人告诉我你真正受益于ESB和Mule这样的工具的场景,或者凭借扎实的知识来猜测。

编辑2

关于Houcem回复我对他的帖子的评论...什么是ESB / Mule的原生LAMP答案?

编辑3

似乎 燕尾服 可能是Mule / ESB的PHP本地替代品。有人有使用这个工具的经验吗?


8121
2018-05-12 08:53


起源

为什么 java-标签 ? - oliholz
是不是在一天结束时从一个java-universe的概念?虽然严格来说它的定义与语言无关。但如果你搜索esb,答案通常也与java开发有关。如果你研究一组开发者的技能,那么esb和java知识就会有相关性。这是一种微妙的关系,但仍然是一个强大的关系。 - Raffael


答案:


ESB可以以不同的方式使用:

  • 提供异步处理:示例:如果您的网站发送了大量电子邮件...并且发送电子邮件需要花费大量时间来阻止页面的执行:您可以使用ESB将电子邮件数据发送到Mule并将其路由到电子邮件出站通道,这样您就可以说已实现了邮件消息队列。另一种形式的异步处理:使用mule以非阻塞方式执行php脚本(使用命令行)。

  • 与java应用程序集成:您可以使用php将消息发送到mule并使用java中的mule API实现一些Java业务,您的Java业务组件将接收php消息。这用于大型网站,它们进行大量复杂的处理,需要灵活而强大的语言,如java。

您需要了解的内容:ESB应该像Bus一样使用,这意味着以标准形式(Mule消息)从异构环境中收集数据。执行业务逻辑,然后将数据(路由后)输出到不同的环境

在PHP世界中没有与Mule的本机php集成。要做到这一点,你应该使用Web服务(SOAP)


2
2018-05-17 08:32



虽然PHP的异步处理可以在PHP和OS本身内部/上面启动。所以这不是使用Mule / ESB的理由,对吗?使用SOAP直接与Java组件进行通信会不会更简单,也不会更简单? - Raffael
如果是这样..为什么使用骡子呢?即使使用java Web应用程序,有时也需要执行后台进程。 ESB是一种设计模式,可以帮助您制作复杂的异步作业,并为您提供内置的基础架构(自己的总线+连接器),以实现复杂的流程。例如,使用Java Web服务无法轻松实现Mail Enqueuing,您需要使用JMS或ESB。或者从头开始重新实现所有逻辑。 - Houcem Berrayana
“为什么要使用骡子?” ......这就是我想弄清楚的一点。我知道ESB&Co可以很好地完成任务。但我确信,应该始终尽量保持项目的同质性。在一天结束的时候,使用更多非平凡的技术然后必要会适得其反,成为进一步麻烦的潜在根源。 - Raffael
好问题:Mule用于处理总线中的数据(通过滤波器,路由器,变压器)。来自不同输入(Web服务,jms,数据库,pop和其他inboud通道)的所有数据都通过变换器转换为相同的数据类型(MuleMessage),并通过总线的不同节点,最后使用您的路由到达出站通道商业逻辑。 ESB中的技巧是从不同的源收集数据并将相同的执行过程应用于所有这些源。这就是它被称为公共汽车的原因 - Houcem Berrayana


ESB是可伸缩性问题的通用解决方案;管理大量应用程序接口的开销,成本和复杂性的问题。我写了一篇关于ESB / EAI解决方案基本原理的简短文章 http://psicom.com.au/solutions/eai

不可否认,大多数PHP站点都是小规模的,并且通常很难证明ESB的管理和技术开销是合理的。但现在用OSS PHP产品满足所有业务应用程序的需求是相当可行的,并且组织的成本压力也在增加,所以我预计会有越来越多的PHP商店开始感受到成长的痛苦我写的是关于。这可能会使他们重新评估他们的应用程序集成问题,而ESB是解决该问题的一个很好的解决方案。

据我所知,没有用PHP开发的ESB产品,我不希望在不久的将来看到这一点。但是FWIW,许多ESB产品都为PHP和其他OSS平台提供绑定,因此运行ESB的平台并不重要。


3
2018-05-15 05:20





ESB(企业服务总线)是企业的多个异构应用程序集成的一种主干,可能源自不同的供应商,技术,甚至是冗余的。

它似乎与PHP世界相关的事实比PHP或任何其他语言更多 平时 大公司信息系统由以下部分组成:

  • 开源开发和软件编辑工具(包括ERP)的组合。开发通常使用Java EE来依赖Java EE堆栈(及其供应商IBM,Oracle,...)
  • 完整的Microsoft(不需要ESB,Microsoft提供EAI / ESB之类的工具)

PHP最常用于Web应用程序(即使对于大公司,但面向Web)。

ESB是一项巨大的成本,只有在互连应用程序数量增加时才有用/需要。 当您只有很少的连接(在Java,PHP或其他之间)时,您可以在网络级别使用DNS处理它,在应用程序级别使用配置键并为每个点对点连接执行协议交换和小型业务集成。

PHP应用程序的潜在用例将是旅行社的一个互联网网站,该网站查询多个航班/火车/酒店公司。即使在这种情况下,开发一个完整的交叉查询系统也不会发疯,因为它是这样一个网站/公司的业务核心。


3
2018-05-19 13:54



“使用DNS处理Java / PHP连接”是什么意思?域名系统与它有什么关系? - Raffael
我的意思是互连系统(无论语言是什么),可以使用域名“引用”而不是使用ip,而DNS可以是配置到适当主机的连接的可能解决方案。主机匹配“service-A”可以通过DNS更改为托管在不同IP上的另一个实现,前提是技术和业务接口都相同。然而,这不是我建议的模式,除了小型系统/公司,其中DNS人员几乎处理所有事情,或者在互连主机名被硬编码的系统中。 - snowflake


我建议使用Windows Azure Service Bus,它在这里提供了一个PHP SDK https://github.com/WindowsAzure/azure-sdk-for-php

服务总线很棒,但保持一个不是。 Windows Azure Service Bus为您解决了所有维护开销,并且与PHP兼容。您甚至可以轻松地与PHP中使用Java,C#,VS C ++编写的应用程序进行通信。


2
2018-03-15 22:45