The Complete Guide To gRPC + Protobuf [Java + Spring Boot]

The Complete Guide To gRPC + Protobuf [Java + Spring Boot]

English | MP4 | AVC 1280×720 | AAC 48KHz 2ch | 9 Hours | 3.58 GB

Next generation Microservice. Develop Faster, Scalable, Streaming APIs!

gRPC is one of the hottest technologies in the recent years from Google for designing highly performant and scalable APIs for your Microservices. By using gRPC, you can have 10X performance compared to traditional REST based microservices communication. It is very very fast!

It allows us to choose different types of APIs depending on our use case which is not possible with REST. One of the biggest challenge in Microservices design is inter-services communication. Most of the developers use REST as it is general-purpose. But It has a lot of challenges. We would be learning how to solve the common problems with REST by using gRPC.

By the end of this course, You would be comfortable with,

  • gRPC & all the RPC types
  • Protocol Buffers / Protobuf from scratch for designing your classes
  • Client Server application development
  • Load Balancing
  • Authentication
  • Error Handling
  • Microservices Development with gRPC
  • Spring Boot Integration

What you’ll learn

  • Complete gRPC from scratch
  • 10X Performance
  • Spring Boot Integration
  • Inter microservice communication
  • Unary, Client Streaming, Server Streaming & Bi Directional Streaming API
  • Load Balancing
  • Interceptors
  • Protocol Buffers / Protobuf
  • SSL / TLS
  • Metadata / Context / CallOptions
Table of Contents

Introduction
1 Problem Statement
2 HTTP2-vs-HTTP1.1
3 gRPC-vs-REST – Performance Comparison
4 Course Structure

Protocol Buffers
5 Proto – Introduction
6 [Resource] – Proto Dependencies
7 Proto – Project Setup
8 Proto – A Simple Person Message Creation
9 Proto – Java Options
10 Proto – Person Builder Pattern Demo
11 Proto – Equals Method
12 Proto – Serialization & Deserialization
13 [Resource] – Jackson Dependency
14 Proto vs JSON – Performance Comparison – Part – 1
15 Proto vs JSON – Performance Comparison – Part – 2
16 Proto vs JSON – Performance Comparison – Part – 3
17 Proto – Adding Comments
18 Proto – Auto Generate JS File – Demo
19 [Optional]-[Resource] – Protoc
20 Protoc Tool Installation
21 Proto – Scalar Types
22 Proto – Composition Demo
23 Proto – Collection Demo
24 Proto – Map Demo
25 Proto – Enum Demo
26 Proto – Default Values
27 Proto – Importing Modules
28 Proto – OneOf – Demo
29 Proto – Wrapper Types
30 Proto – How It Works – Demo
31 Proto – Tags
32 Proto – APIMessage Changes – Part – 1
33 Proto – APIMessage Changes – Part – 2
34 Proto – APIMessage Changes – Part – 3
35 Proto – APIMessage Changes – Part – 4
36 Proto – Summary

gRPC – Introduction & Unary RPC
37 gRPC – Introduction
38 gRPC – RPC Types
39 [Resource] – gRPC Dependencies
40 gRPC – Project Setup
41 Unary – Service Definition
42 Unary – BankService – getBalance – Implementation
43 Unary – GRPC Server
44 Unary – Client’s Blocking Stub
45 BankService – A Simple DB Using Map
46 BankService – A Simple DB Using Map – Note
47 [Resource] – BloomRPC
48 Unary – BloomRPC – Demo
49 Unary – Node Client

gRPC – Server Streaming RPC
50 Server Streaming – Introduction
51 Server Streaming – Service Definition
52 Server Streaming – Money Withdrawal Service Implementation
53 Server Streaming – BloomRPC Test
54 Server Streaming – Validations Error Handling
55 gRPC – Error Codes
56 Server Streaming – Blocking Client
57 Server Streaming – Async Client
58 Server Streaming – Count Down Latch
59 Server Streaming vs Unary

gRPC – Client Streaming RPC
60 Client Streaming – Introduction
61 Client Streaming – Service Definition
62 Client Streaming – Bank – Deposit Request – Implementation – Part – 1
63 Client Streaming – Bank – Deposit Request – Implementation – Part – 2
64 Client Streaming – Client Response Observer Implementation
65 Client Streaming – Stream Observer – How It Works

gRPC – Bi-Directional Streaming RPC
66 BiDi – Introduction
67 BiDi – Service Definition
68 BiDi – Transfer Service – Implementation
69 BiDi – Client Side Stream Observer Implementation
70 BiDi – Client Side Stub Request And Response
71 BiDi – Transfer Service Demo
72 BiDi – Single Response vs Streaming Response
73 BiDi – How To Perform CRUD

Snakes & Ladders – Game Assignment
74 Game – Introduction
75 [Optional]-[Resource]-Rules
76 Game – Hints
77 Game – Service Definition
78 Game – Die Streaming Observer Implementation
79 Game – Applying Snakes & Ladders Rules
80 Game – Players State Streaming Observer Implementation
81 Game – Client Server Finale

Channel & Load Balancing
82 Load Balancing – Introduction
83 Load Balancing – Lazy Connection Demo
84 Load Balancing – Server Side Load Balancing
85 Load Balancing – Nginx Install
86 Load Balancing – Project Setup
87 Load Balancing – Running Multiple gRPC Servers
88 [Resource] – Nginx Conf
89 Load Balancing – Nginx Conf
90 Load Balancing – Nginx Load Balancing Demo – Part – 1
91 Load Balancing – Nginx Load Balancing Demo – Part – 2
92 Load Balancing – Client Streaming Request
93 Load Balancing – SubChannels
94 Load Balancing – A Simple Service Registry Implementation
95 Load Balancing – Name Resolver
96 Load Balancing – Name Resolver Provider
97 Load Balancing – Client Side Load Balancing Demo
98 Load Balancing – Summary

Deadline
99 Deadline – Introduction
100 Deadline – Project setup
101 Deadline – Unary RPC – Demo
102 Deadline – Server Streaming RPC Issue
103 Deadline – Server Streaming RPC – Issue Fix

Interceptors
104 Interceptor – Introduction
105 Interceptor – Global Deadline Implementation
106 Interceptor – Global Deadline – Demo
107 Interceptor – Key Value Pairs – Introduction
108 Interceptor – Attaching Client Service Token Via Metadata
109 Interceptor – Client Service Token Validation – Implementation
110 Interceptor – Client Service Token Validation – Demo
111 Interceptor – Attaching User Session Token – Introduction
112 Interceptor – Attaching User Session Token – Implementation
113 Interceptor – User Session Token Validation – Implementation
114 Interceptor – User Session Token Validation – Demo
115 Interceptor – Context – Introduction
116 Interceptor – User Role – Auth Interceptor Implementation
117 Interceptor – Accessing User Role Via Context
118 Interceptor – Context Demo

Error Handling Via Metadata
119 Error Handling – Introduction
120 Error Handling – Proto For Custom Error Message
121 Error Handling – Service Layer Changes
122 Error Handling – Custom Error Via Metadata

SSL TLS
123 SSLTLS – Introduction
124 [Optional-Resource] – SSLTLS
125 SSLTLS – Becoming CA
126 SSLTLS – Generating Certificates
127 SSLTLS – Server Side Changes
128 SSLTLS – Demo

Miscellaneous
129 Misc – Executors
130 Misc – Accessing gRPC via Web

Spring Boot Integration
131 Spring Boot Integration – Introduction
132 Spring Boot Integration – Application Walk-through
133 Spring Boot Integration – Spring Initializer
134 Spring Boot Integration – Multi Module Maven Project
135 Spring Boot Integration – Service Definition
136 Spring Boot Integration – User Service – Implementation
137 Spring Boot Integration – User Service – Resources
138 Spring Boot Integration – Movie Service – Implementation
139 Spring Boot Integration – Movie Service – Resources
140 Spring Boot Integration – Aggregator Service – Controller
141 Spring Boot Integration – User Movie Suggestion Service – Part 1
142 Spring Boot Integration – User Movie Suggestion Service – Part 2
143 Spring Boot Integration – User Movie Suggestion Service – Demo

Thank You
144 Thank you!

Course Resources
145 Resources