Distributed Services with Go (Pragmatic Bookshelf)

PragmaticBookshelf
Take your Go skills to the next level by learning how to design, develop, and deploy a distributed service. Start from the bare essentials of storage handling, then work your way through networking a client and server, and finally to distributing server instances, deployment, and testing. All this will make coding in your day job or side projects easier, faster, and more fun.

Travis Jeffery @travisjeffery

edited by Dawn Schanafelt and Katharine Dvorak @katied

Take your Go skills to the next level by learning how to design, develop, and deploy a distributed service. Start from the bare essentials of storage handling, then work your way through networking a client and server, and finally to distributing server instances, deployment, and testing. All this will make coding in your day job or side projects easier, faster, and more fun.

Lay out your applications and libraries to be modular and easy to maintain. Build networked, secure clients and servers with gRPC. Monitor your applications with metrics, logs, and traces to make them debuggable and reliable. Test and benchmark your applications to ensure they’re correct and fast. Build your own distributed services with service discovery and consensus. Write CLIs to configure your applications. Deploy applications to the cloud with Kubernetes and manage them with your own Kubernetes Operator.

Dive into writing Go and join the hundreds of thousands who are using it to build software for the real world.


  • Full details: Search
  • View this book’s portal and details on how to post errata and suggestions here.

Don’t forget you can get 35% off with your Devtalk discount! Just use the coupon code “devtalk.com" at checkout :+1:

Latest Threads About This Book Top

enomis101
Hi @travisjeffery, in the Close function on page 33 it seems there is an error, after the i.mmap.Sync is called, the memory is not unmapp...
New
erni27
@travisjeffery The book in many places stands for Raft consensus algorithm being able to replicate all data across the servers. The trut...
New
disknoir
@travisjeffery The code in server.go is not consistent with the generated grpc code. I see that the code in the git repo was updated, bu...
New
Juca
@travisjeffery PDF - Page 35 No need to synchronize this function? How mmap work with multiple writers?. func (i *index) Write(off uin...
New
dwschulze
Can I run proglog from within Intellij without too much trouble? When I try I get Error: open : no such file or directory I assume thi...
New
yoshiki
On page 44: Now add the following Append() function below setup(): “Append() function” should read “Append() method”.
New
yoshiki
On page 42: We test that we can append a record to a segment, read back the same record, and eventually hit the configured max size for...
New
yoshiki
On page 40: IsMaxed returns whether the segment has reached its max size, either by writing too much to the store or the index. If you ...
New
yoshiki
On page 40: Read(off uint64) returns the record for the given offset. Similar to writes, to read a record the segment must first transl...
New
yoshiki
On page 18 These protobuf messages are equivalent to the Go structs shown earlier. You’ll notice the two syntaxes are very similar: in...
New

Most Active This Week Top

Most Active This Month Top

Most Active This Year Top

Most Active Last Three Years Top

raul
Page 28: It implements io.ReaderAt on the store type. Sorry if it’s a dumb question but was the io.ReaderAt supposed to be io.ReadAt? ...
New
adamwoolhether
I’m not quite sure what’s going on here, but I’m unable to have to containers successfully complete the Readiness/Liveness checks. I’m im...
New
enomis101
Hi @travisjeffery, in the Close function on page 33 it seems there is an error, after the i.mmap.Sync is called, the memory is not unmapp...
New
erni27
@travisjeffery The book in many places stands for Raft consensus algorithm being able to replicate all data across the servers. The trut...
New
Juca
@travisjeffery PDF - Page 35 No need to synchronize this function? How mmap work with multiple writers?. func (i *index) Write(off uin...
New
disknoir
@travisjeffery The code in server.go is not consistent with the generated grpc code. I see that the code in the git repo was updated, bu...
New

Most Active Over Three Years Top

adamwoolhether
When trying to generate the protobuf .go file, I receive this error: Unknown flag: --go_opt libprotoc 3.12.3 MacOS 11.3.1 Googling ...
New
abtin
page 20: … protoc command… I had to additionally run the following go get commands in order to be able to compile protobuf code using go...
New
PragmaticBookshelf
Take your Go skills to the next level by learning how to design, develop, and deploy a distributed service. Start from the bare essential...
New
jimschubert
In Chapter 3, the source for index introduces Config on page 31, followed by more code including tests; Config isn’t introduced until pag...
New
jimmykiang
This test is broken right out of the box… — FAIL: TestAgent (7.82s) agent_test.go:77: Error Trace: agent_test.go:77 agent_test.go:...
New
raul
Hi Travis! Thank you for the cool book! :slight_smile: I made a list of issues and thought I could post them chapter by chapter. I’m rev...
New
sumanshil
Distributed Services With Go - I went to SecureYourServices folder and executed make gencert. I am getting the following error. 2020/0...
New
naveenanto22
When a store is closed, it just closes the files but items in the buffer are not written to file before closing. So we need an additional...
New
sebastianb
Page 19: “Let’s start by adding a function for users to create our HTTP server. Inside your server directory, create a file called server...
New
msquared
When I attempt to go get github.com/tysonmote/gommap I get an error gommap.go:60:15: undefined: mmap_syscall. Has anyone on an M1 mac bee...
New
gmhafiz
@travisjeffery When writing agent_test.go in page 134, the package name is agent_test when other tests use the same package name. For ex...
New
csrfr
Once deployed, I am not able to access the service outside the prolog pods. I can run the client successfully and access the service from...
New
elesq
Page 72 shows implementation of the nearestMultiple function. (as per below) func​ nearestMultiple(j, k ​uint64​) ​uint64​ { ​ ​ if...
New
afpd
Code at the end of page for the WriteALogPackage/internal/log/segment.go says p, err := s.store.Read(pos), should be ReadAt I think
New
travisjeffery
Hey y’all, just wanted to provide some context for removing the testing chapters from the table of contents. For all books PragProg has ...
New

Get money off!

The Pragmatic Bookshelf

35% off any eBook

Simply use coupon code "devtalk.com" at checkout. See full details here.