eventstore:仅使用数据库的事件存储的简单实现

时间:2024-04-17 13:34:57
【文件属性】:

文件名称:eventstore:仅使用数据库的事件存储的简单实现

文件大小:184KB

文件格式:ZIP

更新时间:2024-04-17 13:34:57

Go

活动商店 使用数据库的事件存储的简单实现 这是关于如何实现事件存储以及如何与CQRS一起使用的练习。 介绍 该项目的目标是实现一个事件存储,以及如何将该事件存储与Event Sourcing + CQRS Architecture模式一起使用,在此模式中,每一端(写和读)都可以独立扩展。 该库提供了一个通用接口,用于将域事件存储在数据库(如MongoDB)中,并将事件流传输到事件总线(如NATS)。 要使用CQRS,并不一定要有两个单独的数据库,因此不必将更改流插入数据库中。 如果我们想将读取模型写入同一数据库,则可以轻松扩展当前实现,以允许读取模型具有事件处理程序(也许在将来) 我走得更远,还为读取方的事件使用者实现了业务流程层。 这个库起初是一个事件存储,然后又发展了很多,这就是为什么它错误地命名为事件存储 我首先讨论几个挑战,然后讨论这些挑战的解决方案。 设计 该库实现以下管道


【文件预览】:
eventstore-master
----subscriber()
--------nats.go(7KB)
----codec.go(1KB)
----log()
--------log.go(2KB)
----lock()
--------consullock_test.go(2KB)
--------consullock.go(2KB)
----worker()
--------redis_memberlist.go(2KB)
--------balance_workers_test.go(5KB)
--------balance_workers.go(3KB)
--------consul_memberlist.go(2KB)
--------runworker.go(3KB)
----test()
--------aggregate.go(4KB)
--------pg()
--------mongodb()
--------mysql()
--------mocksink.go(2KB)
----eventstore.go(9KB)
----codegen.sh(635B)
----sink()
--------codec.go(2KB)
--------sink.go(239B)
--------nats.go(3KB)
----balancing-projection-partitions.png(35KB)
----api()
--------proto()
----LICENSE(1KB)
----cqrs-es.png(11KB)
----rootaggregate.go(2KB)
----common()
--------common.go(516B)
--------events.go(847B)
--------partition.go(509B)
----player()
--------grpc_server.go(3KB)
--------player.go(3KB)
--------grpc_store.go(3KB)
----.gitignore(284B)
----eventid()
--------eventid_test.go(2KB)
--------eventid.go(3KB)
----go.sum(76KB)
----README.md(26KB)
----eventstore-design.png(10KB)
----projection()
--------bootmanager.go(4KB)
--------restarter.go(3KB)
--------resumestore()
----encoding()
--------base64_test.go(456B)
--------base32_test.go(2KB)
--------base64.go(1KB)
--------json.go(840B)
--------base32.go(2KB)
----go.mod(2KB)
----store()
--------mongodb()
--------poller()
--------mysql()
--------feed.go(2KB)
--------postgresql()
--------store.go(1KB)

网友评论