Distributed Services with Go (Pragmatic Bookshelf)

PragmaticBookshelf

PragmaticBookshelf

Devtalk Sponsor

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
vjust
rec, err := s.Log.Read(req.Offset) I get a compiler error saying there is no “Read” method available on the Log struct. Any ideas on wh...
New
alankritjoshi
When trying to run protoc at this point, I get a different output, I am not sure why. Also, tests fail. I even tried to see if it would ...
New
RedHoodJT1988
Title: Distributed Services with Go Page 32: protoc api/v1/*.proto –go_out=. –go_opt=paths=source_relative –proto_path=. When I r...
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
bscharm
Just a note for other readers as I have resolved my issue. On page 141 of the text, we are told to update our TLSConfig in the test to e...
New
geoko
Hey @travisjeffery, After following all steps in Ch10, helm install proglog deploy/proglog fails to start the service. Initially, it was...
New
elesq
@travisjeffery As per instructions up to page 132, I have checked the code against the downloadable resources and A/B’d back and forth. ...
New
elesq
Page 72 shows implementation of the nearestMultiple function. (as per below) func​ nearestMultiple(j, k ​uint64​) ​uint64​ { ​ ​ if...
New
AYM1607
@travisjeffery, In the “Error Handling in gRPC” section (page 63 of the print version) it is said that we should use error codes from th...
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
Distributed Services with Go (pg. 207 && pg. 228) Looking for suggestions to allow load-balancing to work from outside the k8s n...
New
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
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
fatroom
It seem to me that in early editions of the book whole server.go file was located in grpc folder. (instructions in the start of chapter 4...
New
jamesallured
Page 39, Print Edition The description of how the offset is calculated for the index under the definition of Append() is confusing and I...
New
Margaret
Howdy readers! Travis Jeffrey’s book, Distributed Services with Go, is now in print for those of you who prefer analog. Please support yo...
New
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
raul
Hi TJ, Suggestions on Chapter 2 of the book: To send data (such as your structs) over a network Not sure whether a layperson would tra...
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
csrfr
Test Discovery and Balancing End-to-End Reader is instructed to Run your tests again and watch them pass. However, the reader will encou...
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

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

Latest in Distributed Services with Go

View all Distributed Services with Go threads ❯

Get money off!

The Pragmatic Bookshelf

35% off any eBook

Use the coupon code "devtalk.com" to get 35% off any eBook published by PragProg!

Related Portals