在公司被大boss拉过去做中间件开发,之前完全没有这方面大概念,但是当时公司没有这方面会的人,自己又是刚到公司,只能硬着头皮上了。
我们这个项目是一家传统的做材料的公司,因此它会有许多产品的信息啊,订单报价等信息需要在多个系统中同步,而我们主要做的是有关于salesforce的集成。
所谓中间件,它是一种独立的服务程序,主要负责在多个系统之间进行信息的传输,它可以将多个不同的系统进行连接起来,即使它们的接口不同。直白一点说就是将A系统的数据搬到B系统。但是这样我们肯定会有疑问,为什么需要中间件呢,我不能直接进行数据传递吗?起初的我也是对此疑惑重重,尤其在开发过程中遇到问题时便不免抱怨,如果让我直接做那多简单之类的话。。但本着存在即合理的原则,我慢慢的对其对存在有了一些不同对看法。我们在做数据集成的时候,许多时候操作的对象都是像数据库,大型机这类系统,而这类系统对外的交互能力很差,因此如果它需要和外界交互那么交互成本很大,尤其需要主动与外界交互时更是基本不可能实现,那么中间件就起到了作用。那对于两个灵活的系统之间呢?其实大部分中间件的应用 场景都是在多个大数据系统间进行,因此这中间存在着很多网络传输的问题,从而会有许多类似缓存,数据丢失,大数据传输等等问题。而如果source端和target端直接交互,source端不仅仅要进行业务数据的提取工作,而且也要承担着与target的直接交互,这大大增加了source端的压力,而且也容易引起数据丢失等问题。我们举个例子,A系统需要从100张表里提取出10w条数据同步到B,C,D系统,那此时A系统就需要同时与B,C,D同时进行交互,那这样就会有阻塞等问题,而且一旦在10w条数据中出现一条数据等更新失败或者目标系统暂时等无响应等,此时等同步操作就有可能失败,这也会影响到其他系统。那么这样我们还需要在A系统里设置回滚或错误异常甚至缓存等等操作,一个系统同步我们就需要如此多的操作,这样显然不合理。本着职责分明的原则,中间件的诞生很好的解决了这类问题。它可以与多个系统无缝的连接,而且可以将数据用订阅等方式传递,并且有自动嗅探目标系统等功能,可以让你不必担心数据的丢失,同时它支持多种传输协议,多种传输文本格式等等。
好了说了这么多,现在正式介绍一下我们使用多中间件webMethods。webMethdos是softwareAg旗下多产品,它有着自己的一整套体系,包括开发工具developer/designer,服务器配置IS,数据交互中介Broker/UM,B2B等文本交互Tranding Network,大文件传输平台 File Transfer,系统管理MWS,以及详尽的log体系,权限体系,而且有报表系统等等功能,同时支持其自身的语言与c#,java等混编,而且可以进行mobile开发等等。最新更新到9.5后开始有了云数据同步等等功能。
下一块我们开始讲讲webMethods的整个结构以及如何进行开发。