Bayangkan Anda bekerja untuk penerbit berita besar bernama Fairflax Media , yang terinspirasi oleh bunga rami (jangan salah dengan Fairfax Media, tentunya).
Anda ditugaskan untuk memecah sistem monolit besar menjadi layanan mikro dan memindahkan semuanya ke Kuberentes. Anda lebih menyukai desain berbasis domain, dan percaya bahwa setiap database hanya boleh dimiliki oleh satu aplikasi. Namun seiring berjalannya waktu, Anda menyadari bahwa banyak layanan memerlukan data umum. Anda perlu memastikan bahwa data konsisten di semua layanan dan kinerja kueri masuk akal.
master
berisi keadaan awal - layanan yang digabungkan erat.event-sourcing
harus berisi implementasi Sumber Peristiwa + CQRS, berisi layanan asinkron, yang independen dan mudah diuji.Proyek ini ditujukan bagi siapa saja yang ingin beralih ke arsitektur layanan mikro asinkron menggunakan Golang.
Gunakan versi 1.9 atau lebih baru
$GOPATH
sudah diatur
dep
untuk mengelola dependensi
Di Mac OSX menggunakan brew
...
$ brew install dep
$ brew upgrade dep
Di platform lain Anda dapat menggunakan skrip install.sh:
$ curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
Tambahkan pastikan PATH berisi $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
Salah satu:
$ go get -u github.com/pavelnikolov/eventsourcing-go/...
Atau:
$ mkdir -p $GOPATH/github.com/pavelnikolov
$ cd $GOPATH/github.com/pavelnikolov
$ git clone github.com/pavelnikolov/eventsourcing-go
Kemudian instal dependensinya:
$ dep ensure
Jalankan di empat jendela terminal yang berbeda:
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
Navigasikan ke aplikasi di browser Anda:
Instal kompiler protobuf
Instal plugin protoc Go
$ go get -u github.com/golang/protobuf/protoc-gen-go
Bangun kembali kode Go yang dihasilkan
$ go generate github.com/pavelnikolov/eventsourcing-go/...
Atau jalankan perintah protoc
(dengan plugin grpc)
$ protoc -I publishing/ publishing/publishing.proto --go_out=plugins=grpc:publishing