Book Image

Mastering Microservices with Java - Third Edition

By : Sourabh Sharma
Book Image

Mastering Microservices with Java - Third Edition

By: Sourabh Sharma

Overview of this book

Microservices are key to designing scalable, easy-to-maintain applications. This latest edition of Mastering Microservices with Java, works on Java 11. It covers a wide range of exciting new developments in the world of microservices, including microservices patterns, interprocess communication with gRPC, and service orchestration. This book will help you understand how to implement microservice-based systems from scratch. You'll start off by understanding the core concepts and framework, before focusing on the high-level design of large software projects. You'll then use Spring Security to secure microservices and test them effectively using REST Java clients and other tools. You will also gain experience of using the Netflix OSS suite, comprising the API Gateway, service discovery and registration, and Circuit Breaker. Additionally, you'll be introduced to the best patterns, practices, and common principles of microservice design that will help you to understand how to troubleshoot and debug the issues faced during development. By the end of this book, you'll have learned how to build smaller, lighter, and faster services that can be implemented easily in a production environment.
Table of Contents (22 chapters)
Free Chapter
1
Section 1: Fundamentals
6
Section 2: Microservice Patterns, Security, and UI
11
Section 3: Inter-Process Communication
15
Section 4: Common Problems and Best Practices

The gRPC-based client

Ideally, you will use the stub that's generated by the server or use the same service .proto file to generate one in the client for calling the stub from the client code. However, we'll add grpc-server-service as a dependency in the pom.xml file of grpc-client-service. This is shown in the following example:

    <dependency>
<groupId>${project.groupId}</groupId>
<artifactId>grpc-server-service</artifactId>
<version>${project.version}</version>
</dependency>

That's how we can simply write the method that will call the server and get the response. The io.grpc.ManagedChannelBuilder class is used for creating the channel (io.grpc.ManagedChannel) to the server. This channel is then passed to the auto generated EmployeeService stub (EmployeeServiceGrpc.EmployeeServiceBlockingStub)...