Imaginez que vous travaillez pour un grand éditeur de presse appelé Fairflax Media , inspiré de la fleur de lin (à ne pas confondre avec Fairfax Media, bien sûr).
Vous avez été chargé de diviser l'énorme système monolithique en microservices et de tout déplacer vers Kuberentes. Vous préférez une conception axée sur le domaine et pensez que chaque base de données ne devrait appartenir qu'à une seule application. Mais au fil du temps, on remarque que de nombreux services ont besoin de données communes. Vous devez vous assurer que les données sont cohérentes sur tous les services et que les performances des requêtes sont raisonnables.
master
contient l'état initial - des services étroitement couplés.event-sourcing
doit contenir l'implémentation Event Sourcing + CQRS, contenant des services asynchrones, indépendants et faciles à tester.Ce projet est destiné à toute personne souhaitant passer à une architecture de microservices asynchrone utilisant Golang.
Passez à la version 1.9 ou ultérieure
$GOPATH
est défini
dep
pour gérer les dépendances
Sur Mac OSX en utilisant brew
...
$ brew install dep
$ brew upgrade dep
Sur d'autres plateformes, vous pouvez utiliser le script install.sh :
$ curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
Assurez-vous que le PATH contient $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
Soit:
$ go get -u github.com/pavelnikolov/eventsourcing-go/...
Ou:
$ mkdir -p $GOPATH/github.com/pavelnikolov
$ cd $GOPATH/github.com/pavelnikolov
$ git clone github.com/pavelnikolov/eventsourcing-go
Installez ensuite les dépendances :
$ dep ensure
Exécuter dans quatre fenêtres de terminal différentes :
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
Accédez aux applications dans votre navigateur :
Installer le compilateur Protobuf
Installez le plugin protocole Go
$ go get -u github.com/golang/protobuf/protoc-gen-go
Reconstruire le code Go généré
$ go generate github.com/pavelnikolov/eventsourcing-go/...
Ou exécutez la commande protoc
(avec le plugin grpc)
$ protoc -I publishing/ publishing/publishing.proto --go_out=plugins=grpc:publishing