AWS Kinesis微服务编程
我正在尝试开发使用CQRS,DDD和Event sourcing概念的在线商店的微服务。我将AWS Kinesis视为事件流。我认为这对于编排微服务是很好的。我有2个服务,客户数据服务和订购系统服务。我希望看到每个客户的未付订单总数和订单总量。因此,我应该向客户数据服务发送orderCreated事件和orderPaid事件,并重新计算相关客户的总未付订单和总订单数。AWS Kinesis微服务编程
我可以将订购系统事件放到AWS Kinesis上,并在客户的命令面服务中进行监听吗?我应该将AWS Kinesis中的事件(orderCreated和orderPaid事件)保存到客户命令端服务中的数据库中吗?或者仅仅更新客户查询方服务可以吗?我应该使用AWS Lambda作为事件处理器吗?你能否给我一些关于这个模型的最佳实践?
在此先感谢。
我将AWS Kinesis视为事件流。我认为这对于编排微服务是很好的。
我不认为这是Kinesis设计的用例;请参阅overview by Aditya Krishnan。或此前的question on stack overflow。
是否应该将客户端命令端服务中的事件(orderCreated和orderPaid事件)从AWS Kinesis持久化到数据库?
从我的角度来看,这个问题是这样的:你真的不想事件泄露出来的用户再没有出现在书中记录的。因此,通常的排序是将事件放入持久存储中,并且只有在您确认写入(这是“确认已达到我们的最低耐用性保证”的代理)后,才开始共享事件出。
所以大多数设计都是颠倒你建议的顺序 - 耐用存储(数据库)第一,发布第二。但你正在失去潜伏期;订阅者在商店结束之前不能看到该事件。根据您的设计,您可能可以通过批量读取来弥补其中的一些问题。
我们尝试过SQS和SNS。但是,表现还不够好。大约需要5秒才能发布和使用这些事件。
嗯,根据我在Kinesis的建议中看到的,看起来你不会超过order of magnitude;他们似乎在推荐全套管道而不是快速管道。
你能提供一些建议什么工具来处理这个问题?实际上,我们在数据库中插入事件记录。但是,我们应该向其他服务发布一些活动。我们正在寻找使用这些已发布事件的工具。我们尝试过SQS和SNS。但是,表现还不够好。大约需要5秒才能发布和使用这些事件。所以,我们想尝试另一种方式来解决这个问题。 – Benedict