广告招募

当前位置:全球贸易网 > 技术中心 > 所有分类

技术干货 | 服务编排—Conductor

2025年09月25日 08:48:16      来源:上海派拉软件股份有限公司 >> 进入该公司展台      阅读量:2

分享:

 
 
Conductor是开源的,基于微服务编排引擎。
 
 


为方便理解Conductor的机制,我们不妨结合业务场景来讲,如果我们要访问应用A进行用户信息查询,传统的处理方式如下:



传统的处理方式耦合度非常高,当需要调整某个模块时会涉及到其他模块的接口的交互和稳定性,从MVC到SOA,以及到现在的微服务,都在一定程度上解决模块与模块之间的耦合度问题。


我们接着拆分,如果接入SSO,增加认证方式,处理的方式就会变成如下形式:



这里把认证模块独立为一个应用对外提供服务,这就是我们耳熟能详的SSO雏形。


接着对某些数据进行加密处理后再进行展现,我们如果不改造应用A又该怎么处理呢?当然增加API网关是可以达到相同的目的,处理方式变成如下:



API网关增加加密插件模块,配置应用A对外提供服务,对访问应用API的特定URL数据进行加密处理或解析相应的数据变量进行定位处理,虽然复杂些,但也能达到想要的效果,只不过一旦应用A需要加密的变量发生变化,API网关同样存在重新调整的风险,耦合度还是太高。



现在我们再进一步场景细化,看看该如何处理。


如果要把应用A加密的数据给应用B来展现呢?或者B获取到A的加密数据后进行处理,把处理后的数据再返回给应用A展现呢?(典型的有OCSP、证书的签名与验签案例)。




当然如果非要用API网关解决也是可以的,但随着业务的复杂度,API网关的业务逻辑耦合度会越来越高,崩溃只是时间问题。何况API网关是用来解决访问安全问题的,并不适合处理复杂的业务逻辑问题。


那么该怎么解决类似的问题呢?


Conductor的架构为我们提供了优雅解决这些问题的方法,它的处理模式如下:



从上图我们可以看出Conductor是如何编排各个微服务的,由于整个机制为事件驱动模式,需要应用集成Conductor的客户端SDK,任务分为System Task(在Conductor服务器的JVM内执行,由Conductor管理)和Worker Task(由应用实现并在独立的环境中运行)。


最后我们来看看Conductor的运行模式(如下图—来自)



Worker作为应用端,可以用任何语言实现,这些任务通过REST API或gRPC机制与Conductor服务端通讯,以轮询任务的方式执行后再更新其状态。Task Queues用于为Worker编排的任务,可以与SQS(Simple Queue Service)或发布与订阅(Pub/Sub)机制进行交换,Conductor持久化模块使用Dynomite(分布式的缓存系统)存储状态,以及用Elasticsearch(分布式多用户能力的全文搜索引擎)用于索引后端,当然这些根据实际的业务需求都是可替换的。


版权与免责声明:
1.凡本网注明"来源:全球贸易网"的所有作品,版权均属于全球贸易网,转载请必须注明全球贸易网。违反者本网将追究相关法律责任。
2.企业发布的公司新闻、技术文章、资料下载等内容,如涉及侵权、违规遭投诉的,一律由发布企业自行承担责任,本网有权删除内容并追溯责任。
3.本网转载并注明自其它来源的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品来源,并自负版权等法律责任。 4.如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系。