Log In
Or create an account -> 
Imperial Library
  • Home
  • About
  • News
  • Upload
  • Forum
  • Help
  • Login/SignUp

Index
Title Page Copyright and Credits
Distributed Computing with Go
Packt Upsell
Why subscribe? PacktPub.com
Contributors
About the author About the reviewers Packt is searching for authors like you
Preface
Who this book is for What this book covers To get the most out of this book
Download the example code files Download the color images Conventions used
Get in touch
Reviews
Developer Environment for Go
GOROOT GOPATH
src/ pkg/ bin/
Package management
go get glide go dep
Structuring a project Working with book's code Containers
Docker
Docker versus Virtual Machine (VM) Understanding Docker Testing Docker setup Dockerfile
main.go
Testing in Go
variadic.go variadic_test.go
Running tests in variadic_test.go
addInt.go
addInt_test.go Running tests in addInt_test.go
nil_test.go
Running tests in nil_test.go
Summary
Understanding Goroutines
Concurrency and parallelism
Concurrency
Code overview Serial task execution Serial task execution with goroutines Concurrent task execution
Parallelism
Go's runtime scheduler
Goroutine OS thread or machine Context or processor Scheduling with G, M, and P
Gotchas when using goroutines
Single goroutine halting the complete program Goroutines aren't predictable
Summary
Channels and Messages
Controlling parallelism
Distributed work without channels Distributed work with channels
What is a channel? Solving the cashier problem with goroutines
Channels and data communication
Messages and events
Types of channels
The unbuffered channel The buffered channel The unidirectional buffer
Closing channels Multiplexing channels Summary
The RESTful Web
HTTP and sessions
A brief history of HTTP HTTP sessions
The REST protocol
The server and client architecture The standard data format Resources Reusing the HTTP protocol
GET POST PUT and PATCH DELETE
Upgradable components
Fundamentals of a REST server
A simple web server Designing a REST API
The data format
The book resource GET /api/books GET /api/books/<id> POST /api/books PUT /api/books/<id> DELETE /api/books/<id> Unsuccessful requests
Design decisions The REST server for books API
main.go books-handler/common.go books-handler/actions.go books-handler/handler.go
How to make REST calls
cURL
GET DELETE PUT POST
Postman net/http
Summary
Introducing Goophr
What is Goophr? Design overview OpenAPI specification
Goophr Concierge API definition
Goophr Librarian API definition
Project structure Summary
Goophr Concierge
Revisiting the API definition Document feeder – the REST API endpoint Query handler – the REST API endpoint Conventions
Code conventions Diagram conventions
Logical flow diagrams
The doc processor The doc store The index processor The line store The consolidated flow diagram
Queue workers Single stores Buffered channels
The Concierge source code
Running tests The Concierge server
Summary
Goophr Librarian
The standard indexing model
An example – books with an index of words
The inverted indexing model
An example – the inverted index for words in books
Ranking Revisiting the API definition The document indexer – the REST API endpoint The query resolver – the REST API endpoint Code conventions Librarian source code
main.go common/helpers.go api/index.go api/query.go
Testing Librarian
Testing feeder.go using /api/index
Testing /api/query
Summary
Deploying Goophr
Updating Goophr Concierge
Handle multiple Librarians Aggregated search results
Orchestrating with docker-compose
Environment variables and API ports The file server
The Goophr source code
librarian/main.go concierge/main.go concierge/api/query.go simple-server/Dockerfile simple-server/main.go docker-compose.yaml .env
Running Goophr with docker-compose
Adding documents to Goophr
Searching for keywords with Goophr
Search – "apple" Search – "cake" Search – "apple", "cake" Individual logs with docker-compose
Authorization on a web server
secure/secure.go secure/secure_test.go Test results
Summary
Foundations of Web Scale Architecture
Scaling a web application
The single server instance Separate layers for the web and database Multiple server instances
The load balancer
Multi-availability zones The database
SQL versus NoSQL
Which type of database should we use?
Database replication
Master-replica replication Master-master replication Failover cluster replication
Monolith versus microservices
Mediator design pattern
Deployment options
Maintainability of multiple instances
Summary
Other Books You May Enjoy
Leave a review - let other readers know what you think
  • ← Prev
  • Back
  • Next →
  • ← Prev
  • Back
  • Next →

Chief Librarian: Las Zenow <zenow@riseup.net>
Fork the source code from gitlab
.

This is a mirror of the Tor onion service:
http://kx5thpx2olielkihfyo4jgjqfb7zx7wxr3sd4xzt26ochei4m6f7tayd.onion