1个微服务-1个数据库-DDD建议



我正在从设计角度寻求建议。

我知道1微服务-1数据库,是微服务的基本原理之一。

但我有一个特殊的问题:

1( 这是一个物联网项目,数据发送大量数据,大多数时候创建/更新/状态设备。

2( 用户不时在UI上跟踪设备的状态。

我遵循的设计:

1( 设计了一个服务(DeviceSubscribeService(,一个来自KAFKA的订阅模型(设备向KAFKA发送事件(。它不断从KAFKA读取数据并插入数据库(DEVICE(。此服务仅用于插入/更新。

2( 设计了另一个服务(DeviceAPIService(RESTFul服务,它从同一个数据库(DEVICE(中获取数据。此服务仅用于查询数据库。

这种设计/方法正确吗?但根据微服务原则,1服务1数据库已损坏。有更好的方法吗?

从DDD的角度来看,这是一个好方法吗。我在插入和查询数据库服务中使用相同的域模型。

为这两个服务维护两个数据库,并复制数据以保持它们的同步,为了保持简单,我想避免这样复杂的过程。相信我,到目前为止,它对我来说非常好。

但从设计的角度来看,我并不太信服。我违反了任何原则吗。

请提出建议。

为读/写率高的应用程序使用共享数据库可能会对应用程序性能产生负面影响。

CQRS的建筑风格,正是这种满足感的一个很好的选择。但性能问题几乎总是有多种原因。

如果您当前的总体性能令人满意,则不需要使用两个单独的数据库。

最新更新