Stellen Sie sich vor, Sie arbeiten für einen großen Nachrichtenverlag namens Fairflax Media , inspiriert von Flachsblüten (natürlich nicht zu verwechseln mit Fairfax Media).
Sie wurden damit beauftragt, das riesige Monolithsystem in Microservices aufzuteilen und alles nach Kuberentes zu verlagern. Sie bevorzugen domänengesteuertes Design und glauben, dass jede Datenbank immer nur einer einzigen Anwendung gehören sollte. Doch mit der Zeit merkt man, dass viele Dienste gemeinsame Daten benötigen. Sie müssen sicherstellen, dass die Daten über alle Dienste hinweg konsistent sind und die Abfrageleistung angemessen ist.
master
enthält den Ausgangszustand – eng gekoppelte Dienste.event-sourcing
Zweig sollte die Event Sourcing + CQRS-Implementierung enthalten, die asynchrone Dienste enthält, die unabhängig und einfach zu testen sind.Dieses Projekt richtet sich an alle, die bereit sind, mit Golang auf eine asynchrone Microservice-Architektur umzusteigen.
Gehen Sie auf 1.9 oder höher
$GOPATH
ist gesetzt
dep
zum Verwalten von Abhängigkeiten
Unter Mac OSX mit brew
...
$ brew install dep
$ brew upgrade dep
Auf anderen Plattformen können Sie das Skript install.sh verwenden:
$ curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
Stellen Sie sicher, dass der PATH $GOPATH/bin enthält
$ 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
Entweder:
$ go get -u github.com/pavelnikolov/eventsourcing-go/...
Oder:
$ mkdir -p $GOPATH/github.com/pavelnikolov
$ cd $GOPATH/github.com/pavelnikolov
$ git clone github.com/pavelnikolov/eventsourcing-go
Installieren Sie dann die Abhängigkeiten:
$ dep ensure
Führen Sie es in vier verschiedenen Terminalfenstern aus:
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
Navigieren Sie zu den Apps in Ihrem Browser:
Installieren Sie den Protobuf-Compiler
Installieren Sie das Protoc Go-Plugin
$ go get -u github.com/golang/protobuf/protoc-gen-go
Erstellen Sie den generierten Go-Code neu
$ go generate github.com/pavelnikolov/eventsourcing-go/...
Oder führen Sie den Befehl protoc
aus (mit dem grpc-Plugin).
$ protoc -I publishing/ publishing/publishing.proto --go_out=plugins=grpc:publishing