eventsourcing go
1.0.0
想象一下,您正在为一家名为Fairflax Media 的大型新闻出版商工作,其灵感来自于亚麻花(当然,不要误认为是 Fairfax Media)。
您的任务是将庞大的整体系统分解为微服务,并将所有内容迁移到 Kuberentes。您更喜欢领域驱动设计,并认为每个数据库只应由单个应用程序拥有。但随着时间的推移,您会发现许多服务需要通用数据。您需要确保所有服务中的数据一致并且查询性能合理。
master
分支包含初始状态 - 紧密耦合的服务。event-sourcing
分支应该包含Event Sourcing + CQRS实现,包含异步服务,这些服务是独立的且易于测试。该项目面向任何愿意使用 Golang 切换到异步微服务架构的人。
转到 1.9 或更高版本
$GOPATH
已设置
dep
用于管理依赖关系
在 Mac OSX 上使用brew
...
$ brew install dep
$ brew upgrade dep
在其他平台上,您可以使用 install.sh 脚本:
$ curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
添加确保 PATH 包含 $GOPATH/bin
$ go help gopath
$ export PATH=$PATH:$GOPATH/bin
$ go get -u github.com/pavelnikolov/eventsourcing-go/demo-articles
$ go get -u github.com/pavelnikolov/eventsourcing-go/demo-graph
$ go get -u github.com/pavelnikolov/eventsourcing-go/demo-sitemap
$ go get -u github.com/pavelnikolov/eventsourcing-go/demo-rss
任何一个:
$ go get -u github.com/pavelnikolov/eventsourcing-go/...
或者:
$ mkdir -p $GOPATH/github.com/pavelnikolov
$ cd $GOPATH/github.com/pavelnikolov
$ git clone github.com/pavelnikolov/eventsourcing-go
然后安装依赖项:
$ dep ensure
在四个不同的终端窗口中运行:
go install ./cmd/demo-articles && demo-articles
go install ./cmd/demo-graph && demo-graph
go install ./cmd/demo-rss && demo-rss
go install ./cmd/demo-sitemap && demo-sitemap
导航到浏览器中的应用程序:
安装protobuf编译器
安装 protoc Go 插件
$ go get -u github.com/golang/protobuf/protoc-gen-go
重建生成的Go代码
$ go generate github.com/pavelnikolov/eventsourcing-go/...
或者运行protoc
命令(使用 grpc 插件)
$ protoc -I publishing/ publishing/publishing.proto --go_out=plugins=grpc:publishing