作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO
联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬
打脸系列【020-3小时讲解MESI协议和volatile之间的关系,那些将x86下的验证结果当作最终结果的水货们请闭嘴】
1、概述
在我开始构思这几篇关于“自己动手设计ESB中间件”的文章时,曾有好几次动过放弃的念头。原因倒不是因为对冗长的文章产生了惰性,而是ESB中所涉及到的技术知识和需要突破的设计难点实在是比较多,再冗长的几篇博文甚至无法对它们全部进行概述,另外如果在思路上稍微有一点差池就会误导读者。 一个可以稳定使用的ESB中间件凝聚了一个团队很多参与者的心血,一个人肯定是无法完成这些工作的 。但是笔者思索再三,还是下决心将这这即便文章完成,因为这是对本专题从第19篇文章到第39篇文章中所介绍的知识点的最好的总结。我们自己动手设计ESB中间件,不是为了让它商用,也不是为了让它可以比拟市面上某款ESB中间件,甚至不是为了把ESB中的技术难点的解决全部方案化。 我们的目的是检验整个专题中所介绍的知识点是否能在读者自己消化后进行综合应用,是否能做到技术知识的活学活用、按需选型 。
2、ESB的顶层设计

(顶层设计图)
上图是我们要进行实现的ESB中间件的顶层设计。从上图中可以看到,整个ESB中间件分为以下几个模块:Client客户端、流程编排/注册工具、主控服务模块、服务状态协调组(模块)、服务运行组(模块)。首先我们大致描述一下这些模块的工作内容:
- Client客户端是需要接入ESB中间件的各个业务服务系统。例如物流系统、联账系统、CRM系统等等。 在这些客户端系统接入ESB中间件时,将集成ESB中间件提供给他们的各种开发语言版本的ESB-Client组件 。如果使用的是C#语言则ESB-Client组件可能以DLL文件的方式提供;如果使用的是JAVA语言则ESB-Client组件可能以Jar文件的方式提供;如果使用的是NODEJS则可能是一个(或多个)JS文件……
- 这些客户端系统的开发人员将可以使用ESB中间件提供的一个独立的流程编排/注册工具,后者在很多ESB中间件系统中一般被命名为“…… Studio”,并且这些流程编排/注册工具一般以各种IDE插件的形式提供出来,例如制作成Eclipse-Plugin提供给开发人员。这些工具的主要作用就是让客户端系统的开发人员(开发团队)具备向ESB主控服务进行原子服务注册的能力,另外还可以让开发人员查询到目前服务端所有可用的其它原子服务(来自于其它业务系统的),以便在流程编排/注册工具上完成新的服务流程编排和已有服务流程新版本的发布。这就是上图中标注为“1”的步骤。
- 另外ESB中间件为了保证流程编排所使用的原子服务不会因为提供这个原子服务的业务系统的变化而产生影响,一般来说在进行业务系统注册原子服务时都会指定这个原子服务的版本和调用权限。调用权限一般又分为黑名单权限和白名单权限。以白名单权限来说,只有白名单中所列列举的业务系统有权限调用这个原子服务。即使这个原子服务参与了某个ESB中的流程编排,如果请求这个编排好的流程的业务系统不在这个白名单中,调用也会失败。
- 主控服务为流程编排/发布工具提供新的原子服务注册请求、新的流程发布请求、已有流程的新版本发布请求。最新的原子服务、流程编排等数据将会被主控服务存储在持久化容器中(例如关系型数据库),并且向“服务状态协调模块”发送最新的数据变化。 注意,主控服务并不负责执行编排好的流程,只是用于记录数据编排的变化和向“数据协调模块”发送这些数据变化 ,这就是上图中所标示的步骤2。主控服务还有另外两个作用:负责权限管理和服务运行模块的

最低0.47元/天 解锁文章
628

被折叠的 条评论
为什么被折叠?



