Acknowledgments |
|
ix | |
Introduction |
|
xi | |
|
|
|
|
3 | (10) |
|
How JSON over HTTP Services Fits into Distributed Systems |
|
|
4 | (1) |
|
|
5 | (1) |
|
Build a Commit Log Prototype |
|
|
6 | (1) |
|
Build a JSON over HTTP Server |
|
|
7 | (3) |
|
|
10 | (1) |
|
|
11 | (1) |
|
|
11 | (2) |
|
2 Structure Data with Protocol Buffers |
|
|
13 | (10) |
|
Why Use Protocol Buffers? |
|
|
14 | (2) |
|
Install the Protocol Buffer Compiler |
|
|
16 | (1) |
|
Define Your Domain Types as Protocol Buffers |
|
|
17 | (2) |
|
|
19 | (1) |
|
Work with the Generated Code |
|
|
20 | (1) |
|
|
21 | (2) |
|
|
23 | (32) |
|
The Log Is a Powerful Tool |
|
|
23 | (2) |
|
|
25 | (1) |
|
|
26 | (25) |
|
|
51 | (4) |
|
|
|
4 Serve Requests with gRPC |
|
|
55 | (20) |
|
|
55 | (1) |
|
Goals When Building a Service |
|
|
56 | (2) |
|
|
58 | (2) |
|
Compile with the gRPC Plugin |
|
|
60 | (1) |
|
|
60 | (8) |
|
|
68 | (1) |
|
Test a gRPC Server and Client |
|
|
68 | (5) |
|
|
73 | (2) |
|
|
75 | (24) |
|
Secure Services in Three Steps |
|
|
76 | (2) |
|
Authenticate the Server with TLS |
|
|
78 | (8) |
|
Authenticate the Client with Mutual TLS Authentication |
|
|
86 | (2) |
|
Authorize with Access Control Lists |
|
|
88 | (10) |
|
|
98 | (1) |
|
|
99 | (14) |
|
Three Types of Telemetry Data |
|
|
99 | (4) |
|
Make Your Service Observable |
|
|
103 | (6) |
|
|
109 | (4) |
|
|
|
7 Server-to-Server Service Discovery |
|
|
113 | (28) |
|
Why Use Service Discovery? |
|
|
113 | (1) |
|
|
114 | (2) |
|
Discover Services with Serf |
|
|
116 | (7) |
|
Request Discovered Services and Replicate Logs |
|
|
123 | (11) |
|
Test Discovery and the Service End-to-End |
|
|
134 | (4) |
|
|
138 | (3) |
|
8 Coordinate Your Services with Consensus |
|
|
141 | (30) |
|
What Is Raft and How Does It Work? |
|
|
141 | (3) |
|
Implement Raft in Our Service |
|
|
144 | (19) |
|
Multiplex to Run Multiple Services on One Port |
|
|
163 | (6) |
|
|
169 | (2) |
|
9 Discover Servers and Load Balance from the Client |
|
|
171 | (22) |
|
Three Load-Balancing Strategies |
|
|
171 | (1) |
|
Load Balance on the Client in gRPC |
|
|
172 | (2) |
|
Make Servers Discoverable |
|
|
174 | (3) |
|
|
177 | (6) |
|
Route and Balance Requests with Pickers |
|
|
183 | (5) |
|
Test Discovery and Balancing End-to-End |
|
|
188 | (1) |
|
|
189 | (4) |
|
|
|
10 Deploy Applications with Kubernetes Locally |
|
|
193 | (26) |
|
|
193 | (1) |
|
|
194 | (1) |
|
Use Kind for Local Development and Continuous Integration |
|
|
195 | (1) |
|
Write an Agent Command-Line Interface |
|
|
196 | (5) |
|
|
201 | (1) |
|
Configure and Deploy Your Service with Helm |
|
|
202 | (11) |
|
Advertise Raft on the Fully Qualified Domain Name |
|
|
213 | (4) |
|
|
217 | (2) |
|
11 Deploy Applications with Kubernetes to the Cloud |
|
|
219 | (10) |
|
Create a Google Kubernetes Engine Cluster |
|
|
220 | (2) |
|
Create Custom Controllers with Metacontroller |
|
|
222 | (6) |
|
|
228 | (1) |
|
|
228 | (1) |
Index |
|
229 | |