Tìm hiểu về Spring Cloud Eureka Server với ví dụ

eureka la gi

tìm hiểu về spring cloud eureka server với ví dụ hãy theo dõi chúng tôi trên fanpage để nhận được thông báo mỗi khi có bài viết mới. facebook

1- eureka server – tại sao?

ok, tôi chắc chắn rằng bạn đã từng sử dụng một ứng dụng chat để nói chuyện những người bạn của mình trên internet. khi bạn đăng nhập vào ứng dụng chat trên máy tính của bạn, điều gì sẽ xẩy ra?

Bạn đang xem: Tìm hiểu về Spring Cloud Eureka Server với ví dụ

  1. bạn đăng nhập vào ứng dụng chat có nghĩa là bạn đã tự thông báo với chat server (máy chủ chat) rằng bạn đã trực tuyến.
  2. chat server sẽ cung cấp cho bạn một danh sách các người người khác, họ sẽ có trạng thái trực tuyến (online) hoặc ngoại tuyến (offline).
  3. và như vậy bạn đã “khám phá ra” (discovered) danh sách những người trực tuyến. và tất nhiên những người khác cũng khám phá ra bạn.

tìm hiểu về spring cloud eureka server với ví dụ

trong thực tế khi số người sử dụng ứng dụng chat tăng lên, số lượng chat server cũng tăng lên, và chúng có cách để chia sẻ với nhau các trạng thái thái của người dùng.

tìm hiểu về spring cloud eureka server với ví dụ

bạn xây dựng một hệ thống phân tán nó gồm nhiều dịch vụ (ứng dụng) chạy độc lập trên các máy chủ khác nhau. Để cho các dịch vụ (ứng dụng) này có thể nói chuyện với nhau, chúng cần phải “khám phá” ra nhau. khi khám phá ra nhau chúng có thể gọi các dịch vụ của nhau. vì vậy cần có một cái gì đó giống như chat server giúp các dịch vụ (ứng dụng) đăng ký sự tồn tại của nó.

tìm hiểu về spring cloud eureka server với ví dụ

Đó chính là “service registration” (Đăng ký dịch vụ). tất cả các dịch vụ (ứng dụng) trong hệ thống phân tán (distributed system) phải đăng ký với “service registration”. nó giống với tất cả mọi người trong một quốc gia phải đi đăng ký giấy khai sinh vậy.

tìm hiểu về spring cloud eureka server với ví dụ

có nhiều công nghệ để bạn có được một “service registration”, spring cloud cung cấp cho bạn một số giải pháp công nghệ sau:

  1. eureka
  2. zookeeper
  3. cloud foundry
  4. consul

trong bài học này tôi sẽ hướng dẫn bạn tạo một service registration (Đăng ký dịch vụ) sử dụng spring cloud eureka server.

sẽ là tốt hơn nếu bạn tìm hiểu thêm các thông tin về netflixeureka được giới thiệu trong các bài viết dưới đây:

các vấn đề sẽ được thảo luận trong bài học này:

bước 1:

  • tạo một service registration (Đăng ký dịch vụ) sử dụng spring cloud eureka server.
  • chạy ứng dụng này trực tiếp trên eclipse và xem eureka monitor (trình giám sát của eureka).

bước 2:

Xem thêm: Khâm Liệm Người Chết Là Gì | Phong Tục Tang Ma Của Người Việt

  • tạo các bản sao (replica) cho ứng dụng để triển khai trên các máy chủ khác nhau, mỗi bản sao (replica) sẽ chạy trên một tên miền khác nhau. Ở đây chúng ta giả thiết rằng hệ thống có rất nhiều người dùng vì vậy cần nhiều bản sao chạy trên các máy chủ khác nhau để giảm sự quá tải (reduce overload).
  • giải thích cơ chế chia sẻ trạng thái giữa các eureka server.

tìm hiểu về spring cloud eureka server với ví dụ

trên eclipse tạo một dự án spring boot:

nhập vào:

  • name: springcloudserviceregistrationeurekaserver
  • group: org.o7planning
  • artifact: springcloudserviceregistrationeurekaserver
  • description: spring cloud service registration (eureka server)
  • package: org.o7planning.eurekaserver

tìm hiểu về spring cloud eureka server với ví dụ

tìm hiểu về spring cloud eureka server với ví dụ

pom.xml

 <?xml version="1.0" encoding="utf-8"?> <project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelversion>4.0.0</modelversion> <groupid>org.o7planning</groupid> <artifactid>springcloudserviceregistrationeurekaserver</artifactid> <version>0.0.1-snapshot</version> <packaging>jar</packaging> <name>springcloudserviceregistrationeurekaserver</name> <description>spring cloud service registration (eureka server)</description> <parent> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-parent</artifactid> <version>1.5.9.release</version> <relativepath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceencoding>utf-8</project.build.sourceencoding> <project.reporting.outputencoding>utf-8</project.reporting.outputencoding> <java.version>1.8</java.version> <spring-cloud.version>edgware.release</spring-cloud.version> </properties> <dependencies> <dependency> <groupid>org.springframework.cloud</groupid> <artifactid>spring-cloud-starter-eureka-server</artifactid> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-test</artifactid> <scope>test</scope> </dependency> </dependencies> <dependencymanagement> <dependencies> <dependency> <groupid>org.springframework.cloud</groupid> <artifactid>spring-cloud-dependencies</artifactid> <version>$spring-cloud.version</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencymanagement> <build> <plugins> <plugin> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-maven-plugin</artifactid> </plugin> </plugins> </build> </project> 

Để ứng dụng này trở thành một service registration (Đăng ký dịch vụ) bạn cần sử dụng @enableeurekaserver, annotation này thông báo với spring rằng hãy chạy một dịch vụ đăng ký theo công nghệ của netflix (netflix eureka).

springcloudserviceregistrationeurekaserverapplication.java

 package org.o7planning.eurekaserver; import org.springframework.boot.springapplication; import org.springframework.boot.autoconfigure.springbootapplication; import org.springframework.cloud.netflix.eureka.server.enableeurekaserver; @enableeurekaserver @springbootapplication public class springcloudserviceregistrationeurekaserverapplication  public static void main(string[] args)  springapplication.run(springcloudserviceregistrationeurekaserverapplication.class, args);   

tìm hiểu về spring cloud eureka server với ví dụ

application.yml

 --- # this default profile is used when running a single instance completely standalone: spring: profiles: default server: port: 9000 eureka: instance: hostname: my-eureka-server.com client: registerwitheureka: false fetchregistry: false serviceurl: defaultzone: http://$eureka.instance.hostname:$server.port/eureka/ # united-states, france, and vietnam illustrate running 3 intercommunicating instances. # this example has them running side-by-side on localhost # -- which is unrealistic in production # -- but does illustrate how multiple instances collaborate. # # run by opening 3 separate command prompts: # java -jar -dspring.profiles.active=united-states springcloudserviceregistrationeurekaserver.jar # java -jar -dspring.profiles.active=france springcloudserviceregistrationeurekaserver.jar # java -jar -dspring.profiles.active=vietnam springcloudserviceregistrationeurekaserver.jar --- spring: profiles: united-states application: name: eureka-server-clustered # ==> this is service-id server: port: 9001 eureka: instance: hostname: my-eureka-server-us.com client: registerwitheureka: true fetchregistry: true serviceurl: defaultzone: http://my-eureka-server-fr.com:9002/eureka/,http://my-eureka-server-vn.com:9003/eureka/ --- spring: profiles: france application: name: eureka-server-clustered # ==> this is service-id server: port: 9002 eureka: instance: hostname: my-eureka-server-fr.com client: registerwitheureka: true fetchregistry: true serviceurl: defaultzone: http://my-eureka-server-us.com:9001/eureka/,http://my-eureka-server-vn.com:9003/eureka/ --- spring: profiles: vietnam application: name: eureka-server-clustered # ==> this is service-id server: port: 9003 eureka: instance: hostname: my-eureka-server-vn.com client: registerwitheureka: true fetchregistry: true serviceurl: defaultzone: http://my-eureka-server-us.com:9001/eureka/,http://my-eureka-server-fr.com:9002/eureka/ 

trong ứng dụng này tôi cấu hình trên tập tin application.yml thay vì application.properties, bạn có thể tìm hiểu thêm sự khác biệt giữa tập tin *.yml*.properties theo bài viết dưới đây:

5- chạy ứng dụng trên eclipse

khi bạn chạy ứng dụng này trực tiếp trên eclipse, hồ sơ mặc định (default profile) sẽ được sử dụng để cấu hình cho ứng dụng này.

tìm hiểu về spring cloud eureka server với ví dụ

eureka monitor (trình giám sát của eureka) cho phép bạn nhìn thấy danh sách các dịch vụ (ứng dụng) đang hoạt động và đã đăng ký với eureka server này, đồng thời cho phép bạn nhìn thấy các bản sao (replica) của ứng dụng này đang chạy trên hệ thống phân tán. bạn có thể truy cập vào eureka monitor theo url dưới đây,

tìm hiểu về spring cloud eureka server với ví dụ

hồ sơ “default” (default profile) được cấu hình để chạy trên tên miền my-eureka-server.com, bằng cách cấu hình tên miền trên tập tin “hosts” bạn có thể có được tên miền đó.

trên windows mở tập tin:

  • c:\windows\system32\drivers\etc\hosts

thêm vào đoạn cấu hình sau:

c:\windows\system32\drivers\etc\hosts

 0932710037 my-eureka-server.com 0932710037 my-eureka-server-us.com 0932710037 my-eureka-server-fr.com 0932710037 my-eureka-server-vn.com 

Để sửa tập tin “hosts” trong các hệ điều hành khác, bạn có thể xem hướng dẫn dưới đây:

và bạn đã có được tên miền my-eureka.com, chu đáo rằng tên miền này chỉ có tác dụng trên máy tính của bạn.

tìm hiểu về spring cloud eureka server với ví dụ

6- chạy nhiều bản sao (replica)

trước hết bạn cần phải sử dụng chức năng “maven install” để tạo ra tâp tin jar. nhấn phải chuột vào project chọn:

Xem thêm: Lý giải hiện tượng cực quang dưới góc nhìn Vật lý phổ thông

tìm hiểu về spring cloud eureka server với ví dụ

tìm hiểu về spring cloud eureka server với ví dụ

sau khi thực thi “maven install” thành công, bạn có được một tập tin jar nằm trong thư mục target của project.

tìm hiểu về spring cloud eureka server với ví dụ

copy tập tin jar vừa được tạo ra vào một thư mục nào đó, đồng thời tạo 3 tập tin bat:

  • eureka-server-us.bat
  • eureka-server-fr.bat
  • eureka-server-vn.bat

tìm hiểu về spring cloud eureka server với ví dụ

my-eureka-server-us.bat

 java -jar -dspring.profiles.active=united-states springcloudserviceregistrationeurekaserver-0.0.1-snapshot.jar 

my-eureka-server-fr.bat

 java -jar -dspring.profiles.active=france springcloudserviceregistrationeurekaserver-0.0.1-snapshot.jar 

my-eureka-server-vn.bat

 java -jar -dspring.profiles.active=vietnam springcloudserviceregistrationeurekaserver-0.0.1-snapshot.jar 

chúng ta đang mô phỏng việc tạo ra 3 bản sao (replica) và triển khai chúng trên 3 máy chủ khác nhau, với 3 tên miền khác nhau.

tìm hiểu về spring cloud eureka server với ví dụ

chạy cả 3 tập tin bat nói trên.

tìm hiểu về spring cloud eureka server với ví dụ

ok, bây giờ bạn có thể truy cập vào các đường dẫn sau và xem kết quả:

tìm hiểu về spring cloud eureka server với ví dụ

7- eureka discovery (eureka client)

tìm hiểu về spring cloud eureka server với ví dụ

ok, bài học tiếp theo:

Nguồn: https://fusionsuitesvungtau.com.vn
Danh mục: Hỏi đáp ✅