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