手机版 欢迎访问魄力云云市场资讯网站

当前位置:主页 > 虚拟主机 >

免备案CDN_真功夫企业邮箱_优惠券

时间:2021-06-11 22:04:28|来源:魄力云|编辑:魄力云|点击:

免备案CDN_真功夫企业邮箱_优惠券

如果你今天碰巧在互联网上研究"面向服务的体系结构"(Service-Oriented Architecture,SOA),你可能会发现最近的文章通常会被命名为:SOA vs microservices。更为复杂的是,你还会发现一些受人尊敬的行业专家,比如martinfowler,声称有些人"认为微服务是SOA的一种形式,或许服务导向做得对"

当你偶然发现最近的推文宣称Uber‘支付体验平台’正在"将我们的许多微服务转移到……宏服务(规模良好的服务)"时,事情会变得更加模糊。准确的b/c测试和维护成千上万的微服务不仅是困难的,而且长期的问题比短期的问题要多。Uber的@GergelyOrosz在2020年4月6日发布的这条推特引发了一些近乎激烈的回应,认为宏服务不过是"又一次SOA"。

因此,似乎是时候回到曾经的圣人Martin Fowler那里了:"问题是……SOA意味着太多不同的东西,大多数时候,我们都会遇到一种叫做"SOA"的东西,…关注于["企业服务总线"中间件,]用于集成单片应用程序的ESB。SOA的这种常见表现形式导致一些微服务倡导者完全拒绝SOA标签。在SAP世界中,假定SOA同样被鼓励在SAP席/PI/PO的基础上作为适当的ESB,我将标准化ESB作为"SOA"的基本组件。此外,很难想象一个以ERP为中心的企业在其面向服务的体系结构中没有ESB。

由于ESB通过消息传递工作,数据分析平台,这些消息通常是异步的,并且总是从一个固定源传递到一个或多个固定接收器;通信总是点对点的。如果要更改被调用服务API的版本,可以合理地预期ESB中也需要进行协调的更改;最典型的是在转换中。这是因为点对点通信需要在源和接收器之间进行重要的协调;API名称是已知的,但是要使用哪个版本的API以及它对应的"接口"/签名是什么?

考虑到所有这些,如果"宏服务"要描述的是除"SOA"之外的架构模式——如果不是这样的话,显然没有必要使用新术语——那么这个新术语应该应用于不依赖点对点通信或严格API签名的架构模式。这是一个幸运的巧合,因为对于一个快速发展的新模式来说,现在正需要这样一个术语:"事件驱动架构"(Event-Driven Architecture,iot物联网,EDA)。EDA不仅不使用点对点通信,在这种体系结构中,发布者甚至不知道是否有订阅者;发布者根本没有机会猜测可能用于订阅者系统上的(事件触发的)API调用的特定API签名(每个版本可能支持不同的API版本)。对于那些过去声称API版本控制是一个难以协调的问题的人来说,在SOA的紧密结合的点对点通信路径中——在(精通技术的)微服务世界中更是如此——我怀疑,当他们考虑到更大的API版本控制复杂性时,眼泪可能已经开始形成了不同的、未知的订户系统——现在出现在事件驱动体系结构的新世界中。

幸运的是,在以ERP为中心的环境中,微服务模式从来没有意义;对连续集成/连续交付的需求完全不同,因此增加的复杂性从来没有意义——微服务显然甚至没有意义对于Uber今天所需要的更复杂的解决方案来说,淘客猪,这是有意义的。相反,在这个新兴的EDA时代,有必要选择并声明最近创造的术语"宏服务"的所有权,以描述那些绝对不能建立在严格的API签名基础上的解耦和分布式体系结构的服务(这些签名代表SOA服务的对立面)。

与SOA一样,(大小合适的)宏服务通常应该在实体级别:例如SalesOrder(.Create/.Change/.Delete);这正是"宏"变得重要的地方。如果这些新服务要通过ACID测试,在刚刚给出的示例中,salesord必须完全创建/更改/删除(在同一LUW中),或者保持完全不变(此时实体必须再次由其主机解锁)–将其与微服务进行比较。由于所有的宏服务都是异步的,所以所有公开的实体都应该驻留在一个节点上也是正确的:如果一个实体图表明相同的实体类型在多个系统中托管,那么您就有问题了——同步SOA不一定是这样。因此,这样的"宏服务"模式也应该导致后端系统的更大整合。

如前所述,宏服务模式需要具有"版本灵活性"。这是令人担忧的,因为任何观察当今公共事件模式状态的人都会立即意识到,我们已经走向混乱。下面是一个使用最新的"cloudevents"模式的事件负载示例(尽管现在看来每个供应商都犯了完全相同的错误):

{.."id":"1807",数据分析怎么做,.."type":"recordInserted",.."时间":"2017-08-10T21:03:07+00:00〃,.."datacontenttype":"应用程序/json",.."数据":{.."make":"杜卡迪",….."model":"怪物"..},.."数据版本":"1.0"}

希望您注意到的是,每个事件有效负载(当前)都与特定的"有效负载版本"相关联;如果多个–未知和不可知–订户在同一时间不都支持相同的有效负载版本,您可能会猜到会发生什么?协调混乱。我将不只是指出未来的问题,云购全球,而是提出一个简单的解决方案,以适应所需的宏服务"版本灵活性";这个解决方案不适用于严格的SOA和微服务模式接口。我称之为"版本堆叠",尽管你可以随意称呼它。使用这种新模式,事件有效负载将是"版本堆叠"的,订阅者将单独决定他们对收到的每个事件的特定版本的反应:Hello CI/CD.

下面是一个重新处理的早期cloudevents有效负载示例:

云主机服务商 Ucloud云计算 移动云数据 云存储服务器 Ucloud云主机 云计算提供商 阿里数据库 服务器租用 云储存服务器 Web云服务器 ucloud云数据库 独享云主机 云服务器服务商 海外云存储 云服务器主机 云计算解决方案 国内云存储 数据库云平台

Copyright © 2002-2020 魄力云 版权所有

备案号:豫ICP备56298345号