Vantiq是一个构建实时企业应用的平台,它使用事件驱动和流式处理,实现企业内设备、系统和人之间的连接。而Vantiq平台其中一个应用场景,就是作为事件驱动平台,为企业内的各种系统实现低耦合、可扩展、可管理的链接。
微服务架构与事件驱动架构
微服务架构就是将现有的大的系统,拆分成一个个的小的服务,并使用分布式的部署等,实现可扩展、高可用的一种分布式系统架构。微服务架构的初衷,是通过服务的拆分,不同服务之间的低耦合,来实现可扩展、易维护等目的。但是实际上,一个复杂的微服务系统中,服务之间的相互通信势必会越来越多,如果使用直接通信,会使得整个系统变得越来越复杂,服务之间的低耦合性也逐渐被打破。特别是当一个业务请求需要多个服务共同完成的时候,如果是服务之间直接调用,还会有一致性的问题,这个时候如果想实现分布式事务,实现最终的数据一致性,就会更加复杂。
事件驱动架构,实际上就是在微服务架构的基础上,通过一个中间服务来进行服务间的通信。举例来说就是,当一个服务要调用另一个服务时,不是直接调用,而是发送一个事件到一个消息中间件,由另一个服务订阅这个事件来触发相应流程。
事件驱动架构带来的最大好处就是实现了服务之间的高度松耦合,从而对系统的扩展和长期维护带来很大的好处。而且,从开发角度来讲,响应式编程模式也是现在的大势所趋。这些年响应式编程提到的也越来越多,不管是前端开发还是服务器端,都越来越多的使用响应式的编程,前端框架如Angular、React和Vuejs都是使用响应式编程模式,还有Spring Boot 2.0以后,也开始大量使用Reactive方式来提供服务。
再说测试,有人可能会说这种架构下测试不方便,实际上,测试是更方便的。只要每个服务的每个service方法,都能够正确的执行他们自己的逻辑,然后,当多个服务的多个方法通过事件串在一起的时候,也应该是正确的。而我们的一个个的服务,如果真能够做到低耦合,那么写测试用例就会更加容易,因为它不需要依赖外部的服务和环境,就好比写单元测试,只需要保证一个个的逻辑单元没有问题,那么就能在很大程度上保证系统没有问题。那么这个时候,这个事件就是我们的服务之间通信的‘接口’,我们就需要对这个事件的数据结构和规范做好定义。
所以,使用事件驱动的微服务架