Imagina que estás trabajando para una gran editorial de noticias llamada Fairflax Media , inspirada en la flor de lino (no confundir con Fairfax Media, por supuesto).
Se le ha encomendado la tarea de dividir el enorme sistema monolítico en microservicios y trasladar todo a Kuberentes. Prefiere el diseño basado en dominios y cree que cada base de datos solo debería ser propiedad de una única aplicación. Pero a medida que pasa el tiempo, notas que muchos servicios necesitan datos comunes. Debe asegurarse de que los datos sean coherentes en todos los servicios y que el rendimiento de la consulta sea razonable.
master
contiene el estado inicial: servicios estrechamente acoplados.event-sourcing
debe contener la implementación Event Sourcing + CQRS, que contiene servicios asincrónicos, que son independientes y fáciles de probar.Este proyecto está destinado a cualquiera que esté dispuesto a cambiar a una arquitectura de microservicio asíncrona utilizando Golang.
Vaya a 1.9 o posterior
$GOPATH
está configurado
dep
para gestionar dependencias
En Mac OSX usando brew
...
$ brew install dep
$ brew upgrade dep
En otras plataformas puedes usar el script install.sh:
$ curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
Agregue y asegúrese de que la RUTA contenga $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
Cualquiera:
$ go get -u github.com/pavelnikolov/eventsourcing-go/...
O:
$ mkdir -p $GOPATH/github.com/pavelnikolov
$ cd $GOPATH/github.com/pavelnikolov
$ git clone github.com/pavelnikolov/eventsourcing-go
Luego instale las dependencias:
$ dep ensure
Ejecute en cuatro ventanas de terminal diferentes:
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
Navegue a las aplicaciones en su navegador:
Instalar el compilador protobuf
Instale el complemento de protocolo Go
$ go get -u github.com/golang/protobuf/protoc-gen-go
Reconstruir el código Go generado
$ go generate github.com/pavelnikolov/eventsourcing-go/...
O ejecute el comando protoc
(con el complemento grpc)
$ protoc -I publishing/ publishing/publishing.proto --go_out=plugins=grpc:publishing