Học Microservice với Spring Boot - ToiHieuRoi.com

Học Microservice với Spring Boot – [Phần 3]

Posted by

Dưới đây là link của loạt bài “Học Microservice với Spring Boot“:

Phần này là phần 3 của loạt bài trên. Chúng ta sẽ tập trung vào việc tạo Currency Conversion Microservice trong phần này.

Mục tiêu

Mục tiêu của chúng ta là trả lời 4 câu hỏi dưới đây:

  • Làm thế nào để tạo một microservice với Spring Boot?
  • Làm thế nào để sử dụng RestTemplate để thực thi một REST service?
  • Làm thế nào để sử dụng Feign để thực thi một REST service?
  • Ưu điểm của Feign so với RestTemplate?

Tổng quan

Currency Conversion Service (CCS) có thể đổi một nhóm tiền tệ sang một loại tiền tệ khác. Nó sử dụng Forex Service (FS) để lấy ra các giá trị quy đổi tiền tệ.  CSS là một Service Consumer.

Ví dụ về request và response của CSS như dưới đây:

Request:

Response:

Request trên lấy ra giá trị quy đổi của 10.000 EUR sang INR. Tổng giá trị quy đổi totalCalculatedAmount là 750.000 INR.

Sơ đồ dưới đây thể hiện sự giao tiếp giữa CSS và FS.

Học Microservice với Spring Boot - ToiHieuRoi.com

Project Structure

Dưới đây là structure của project mà chúng ta sẽ tạo:

Học Microservice với Spring Boot - ToiHieuRoi.com

Những thông tin mà chúng ta cần chú ý:

  • CurrencyConversionResponse.java – Quy định response sẽ trả về.
  • CurrencyExchangeServiceProxy.java – Đây là Feign Proxy để gọi đến Forex Service (FS).
  • CurrencyConversionController.java – Rest Controller định nghĩa các endpoint để tương tác với currency conversion service. Class này sẽ sử dụng CurrencyExchangeServiceProxy để gọi đến FS.

Tools

  • JDK 1.8+
  • Spring Tool Suite – STS (latest version)
  • Maven 3.0+

Complete Maven Project

Mình có đưa source code lên Github. Bạn nào cần thì có thể lấy về tham khảo nhé. Link: https://github.com/ndtai/learning-microservice

Tạo project sử dụng STS

Chọn File -> New -> Spring Starter Project

Các bạn nhập các trường: Group, Artifact, Package như hình:

Học Microservice với Spring Boot - ToiHieuRoi.com

Sau đó chọn các module: Web, Feign, DevTools như hình dưới đây:

Học Microservice với Spring Boot - ToiHieuRoi.com

Tạo CurrencyConversion response entity

Gọi FS từ CSS sử dụng RestTemplate

Cấu hình tên Application và port

Test

Chúng ta sẽ khởi động ứng dụng Currency Conversion Microservice lên và dán link sau vào trình duyệt:

Thu được kết quả như dưới đây là Ok:

Tạo Feign Proxy

Feign là sự thay thế tốt hơn RestTemplate để gọi REST API. Còn tốt hơn như thế nào ta cùng tiếp tục nhé.

Chúng ta vừa tạo ra một proxy đơn giản:

  • @FeignClient(name="forex-service" url="localhost:8100")  – Khai báo class này là Feign Client and URL cho forex-service là localhost:8100 .
  • @GetMapping("/currency-exchange/from/{from}/to/{to}")  – Endpoint của FS microservice mà chúng ta muốn sử dụng.

Sử dụng Feign Proxy từ Microservice Controller

Chúng ta sẽ tạo một endpoint mới sử dụng Feign Proxy để so sánh với cách sử dụng RestTemplate

Enable Feign Clients

Trước khi có thể sử dụng Fiegn, chúng ta phải bật nó lên bằng cách thêm annotation @EnableFeignClients  vào class Application như dưới đây:

Test sử dụng Feign

Restart CSS và dán link sau vào trình duyệt:

Kết quả như sau là Ok:

Kết luận

Chúng ta đã tạo ra 2 microservice (FS, CSS) và thiết lập cách giao tiếp giữa chúng.

Học Microservice với Spring Boot - ToiHieuRoi.com

Tuy nhiên, chúng ta đã fix cứng URL của FS trong CSS. Nghĩa là các request từ CSS đến FS sẽ đến một FS instance duy nhất, các FS instance còn lại sẽ không nhận được bất kỳ request nào từ CSS.

Trong phần kế tiếp, chúng ta sẽ phân tán “tải” của FS ra sử dụng Ribbon.

Nguồn: http://www.springboottutorial.com/creating-microservices-with-spring-boot-part-3-currency-conversion-microservice

One comment

Leave a Reply

Your email address will not be published. Required fields are marked *