ลองนึกภาพว่าคุณกำลังทำงานให้กับผู้เผยแพร่ข่าวรายใหญ่ชื่อ 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