使用 CQRS 和 dotnet 的 Kubernetes 部署策略 & MongoDb
Kubernetes deployment strategy using CQRS with dotnet & MongoDb
我正在使用 CQRS 方法重新设计 dotnet 后端 api。这个问题是关于如何在 Kubernetes 部署的上下文中处理查询端。
我正在考虑使用 MongoDb 作为查询数据库。该应用程序是 dotnet webapi 应用程序。那么最好的方法是什么:
创建一个 sidecar Pod,它将 dotnet 应用程序和 MongoDb 一起容器化在一个 pod 中。根据需要扩展。
将 MongoDb 容器化在它自己的 pod 中,并为每个区域部署一个 MongoDb pod。然后让 dotnet 容器在其自己的区域内使用 MongoDb pod。按区域扩展 MongoDb。以及区域内部和区域之间需要的 dotnet pod。
其他一些我没想到的方法
我将从最简单的方法开始,即将写入端和读取端放在一起,因为它们属于同一个限界上下文。
那以后如果有需要的话,我会考虑增加更多的read side或者scaling out到其他区域。
首先,我还会考虑将 ReadSide 添加到与写入端相同的 VM 中。只是为了简单起见,因为将其全部准备好并投入生产始终是一项艰巨的任务,并且存在很多陷阱。
我会考虑使用类似Kafka的系统将数据传输到读取端,因为使用队列,如果您以后添加新的或重建读取端实例,那么使用队列可能会很麻烦.在这里,发件人将需要知道您有哪些阅读面。通过 Kafka 集成风格,每个“读取端”都可以按照自己的节奏消费事件。您还可以在以后更轻松地添加更多阅读面。而且发送方不需要知道接收方。
Kafka 允许您将数据的生产者与数据的消费者分离,就像这张来自我的培训 类 的图片:
在 kafka 中,您有一组生产者将数据附加到 Kafka 日志:
然后您可以让一个或多个消费者处理此事件日志:
我正在使用 CQRS 方法重新设计 dotnet 后端 api。这个问题是关于如何在 Kubernetes 部署的上下文中处理查询端。
我正在考虑使用 MongoDb 作为查询数据库。该应用程序是 dotnet webapi 应用程序。那么最好的方法是什么:
创建一个 sidecar Pod,它将 dotnet 应用程序和 MongoDb 一起容器化在一个 pod 中。根据需要扩展。
将 MongoDb 容器化在它自己的 pod 中,并为每个区域部署一个 MongoDb pod。然后让 dotnet 容器在其自己的区域内使用 MongoDb pod。按区域扩展 MongoDb。以及区域内部和区域之间需要的 dotnet pod。
其他一些我没想到的方法
我将从最简单的方法开始,即将写入端和读取端放在一起,因为它们属于同一个限界上下文。
那以后如果有需要的话,我会考虑增加更多的read side或者scaling out到其他区域。
首先,我还会考虑将 ReadSide 添加到与写入端相同的 VM 中。只是为了简单起见,因为将其全部准备好并投入生产始终是一项艰巨的任务,并且存在很多陷阱。
我会考虑使用类似Kafka的系统将数据传输到读取端,因为使用队列,如果您以后添加新的或重建读取端实例,那么使用队列可能会很麻烦.在这里,发件人将需要知道您有哪些阅读面。通过 Kafka 集成风格,每个“读取端”都可以按照自己的节奏消费事件。您还可以在以后更轻松地添加更多阅读面。而且发送方不需要知道接收方。
Kafka 允许您将数据的生产者与数据的消费者分离,就像这张来自我的培训 类 的图片:
在 kafka 中,您有一组生产者将数据附加到 Kafka 日志:
然后您可以让一个或多个消费者处理此事件日志: