Category: 微服务

0

事件驱动架构的优势

每天产生的数据正在呈现指数级的增长,不管这些数据是由各种传感器产生还是有用户点击网络产生,亦或是系统内容交互的数据,我们的应用需要处理和这些数据相关的事件将会越来越多。那么怎样设计一个很好的架构来处理这些事件呢? 本文,我们将会讨论什么是事件驱动的架构(EDA)以及这个架构是这样把事件放到系统的核心地位的。然后我们再聊聊这样的架构都有哪些优势。 什么是事件 所谓的事件,就是记录已经发生的事情,或者一个状态的改变。他们是不可改变的,并且是按照发生的顺序排列的。对这些事件感兴趣的部分可以注册这个事件,然后再根据这些事件来做相应的商业逻辑。 什么是事件驱动的架构 所谓事件驱动架构他是一个松耦合的系统,通过产生事件和抓取事件来交换信息。一个事件驱动的系统会把产生的事件广播出去,然后感兴趣的部分再抓取这个事件。 我们来看一个例子,下面这个图显示了一个打的的场景。这个图中,该场景有三个微服务:一个UI服务,主要是让用户可以订一个的士,一个fleet服务把相应的订单给到taxi,一个taxi汽车服务,用来收集taxi相关的信息,比如当前的位置等等。处于核心部分的圆柱体是用来连接各个服务的,它就是事件驱动的核心。图中的箭头就显示了事件流通的方向。各个事件的具体解释如下: 用户通过UI下了一个订单。UI会收集一些用户的信息,比如当前的位置,名字等等 Taxi Fleet service订阅了taxi订单的信息 Taxi Car Service收集每一个taxi的信息,比如taxi当前的位置,并且发送send current location 事件。 Taxi Fleet Service同样订阅了send current location事件,然后他就可以根据taxi的位置和用户的位置来分配最近taxi给用户,并且发送allocate nearest taxi事件。 Taxi Car Service会订阅allocate nearest taxi事件,这样他就会通知taxi司机去接相应的客户 Taxi Fleet Service还可以实时监测taxi的位置,并且给用户实时更新当前taxi的位置。 一个事件驱动的架构需要一个信息传递的主干,可以把信息在产生者和订阅者之间进行传递。这个主干有很多的实现方式,比如传统的publish-subscribe(比如IBM MQ),也可以是分布式的log(比如Apach...