Spring Cloud(二):Eureka服務註冊與發現
搭建Maven專案:
一:建立父工程:cloud-demo
pom檔案如下:
<?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>spring-cloud-demo</groupId> <artifactId>cloud-demo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <modules> <module>eureka-server</module> <module>eureka-client</module> <module>eureka-consumer</module> <module>eureka-feign</module> </modules> <name>cloud-demo</name> <description>Demo project for Spring Boot</description> <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>Finchley.RELEASE</spring-cloud.version> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.1.RELEASE</version> </parent> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Finchley.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
二:建立module:eureka-server服務註冊管理中心:
pom檔案如下:
<?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> <artifactId>eureka-server</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>eureka-server</name> <description>Demo project for Spring Boot</description> <parent> <groupId>spring-cloud-demo</groupId> <artifactId>cloud-demo</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> </dependencies> </project>
application.yml配置如下:
server:
port: 8761
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
啟動類如下:
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @SpringBootApplication @EnableEurekaServer public class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); } }
三:建立服務提供者module模組:eureka-client
pom檔案如下:
<?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>
<artifactId>eureka-client</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>eureka-client</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>spring-cloud-demo</groupId>
<artifactId>cloud-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
</project>
application.yml配置如下:
server:
port: 8080
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
spring:
application:
name: service-provider
啟動類:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@SpringBootApplication
@EnableEurekaClient
public class EurekaClientApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaClientApplication.class, args);
}
}
建立服務提供類:
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HiController {
@GetMapping("/provider")
public String home(@RequestParam String name){
return "hi " + name + ",i am from provider: " + name;
}
}
執行專案:訪問服務註冊中心(我這裡是localhost:8761/eureka)
可以看見服務釋出成功。
四:建立服務消費者(方式一:基於ribbon呼叫服務):eureka-consumer
pom檔案如下:
<?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">
<parent>
<artifactId>cloud-demo</artifactId>
<groupId>spring-cloud-demo</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>eureka-consumer</artifactId>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-netflix-ribbon</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
</project>
application.yml配置:
server:
port: 8090
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
spring:
application:
name: service-consumer
debug: true
啟動類:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class EurekaRibbonApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaRibbonApplication.class, args);
}
}
service:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
@Service
public class HelloService {
@Autowired
private RestTemplate restTemplate;
public String hello(String name){
return restTemplate.getForObject("http://SERVICE-PROVIDER/provider?name=" + name, String.class);
}
}
RestTemplate配置類:
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class RestTemplateConfiguration {
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
控制層:
import com.qinker.ribbon.service.HelloService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@Autowired
private HelloService helloService;
@RequestMapping("/hi")
public String hello(String name){
return helloService.hello(name);
}
}
啟動:訪問:localhost:8090/hi?name=xxx
五:建立服務消費者(二:使用fegin方式)
pom檔案如下:
<?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">
<parent>
<artifactId>cloud-demo</artifactId>
<groupId>spring-cloud-demo</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>eureka-feigon</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>
</project>
application.yml:
server:
port: 8091
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
spring:
application:
name: client-feign
啟動類:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class ClientFeignApplication {
public static void main(String[] args) {
SpringApplication.run(ClientFeignApplication.class, args);
}
}
service:
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
@FeignClient(value = "SERVICE-PROVIDER")
public interface HelloService {
@RequestMapping(value = "/provider", method = RequestMethod.GET)
String hello(@RequestParam(value = "name") String name);
}
controller:
import com.eureka.feign.service.HelloService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@Autowired
private HelloService helloService;
@GetMapping("/feign")
public String hello(String name){
return helloService.hello(name);
}
}
相關推薦
Spring Cloud(二):Eureka服務註冊與發現
搭建Maven專案: 一:建立父工程:cloud-demo pom檔案如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4
Spring Cloud 入門教程 - Eureka服務註冊與發現
spring spring cloud spring cloud eureka spring boot 簡介 在微服務中,服務註冊與發現對管理各個微服務子系統起著關鍵作用。隨著系統水平擴展的越來越多,系統拆分為微服務的數量也會相應增加,那麽管理和獲取這些微服務的URL就會變得十分棘手,如果我們
【夯實Spring Cloud】Spring Cloud中的Eureka服務註冊與發現詳解
本文屬於【夯實Spring Cloud】系列文章,該系列旨在用通俗易懂的語言,帶大家瞭解和學習Spring Cloud技術,希望能給讀者帶來一些乾貨。系列目錄如下: 【夯實Spring Cloud】Dubbo沉睡5年,Spring Cloud開始崛起! 【夯實Spring C
Spring Cloud(三)服務註冊與發現
Spring Cloud(三)服務註冊與發現 案例中有三個角色:服務註冊中心、服務提供者、服務消費者,其中服務註冊中心就是eureka單機版啟動既可,流程是首先啟動註冊中心,服務提供者生產服務並註冊到服務中心中,消費者從服務中心中獲取服務並執行。 這裡新建兩個spring boo
springcloud學習筆記一:eureka服務註冊與發現
springcloud可以方便的幫我們完成微服務架構,它擁有多個子專案,可以去官網簡單看下介紹。 其中component下的代表著現有的子專案,本次所記錄的eureka就是其中spring-cloud-netflix裡的一個模組。 eureka在我們微服務架構中實現的就是服務發現與
springCloud Finchley 微服務架構從入門到精通【二】Eureka服務註冊與發現
一、開發工具說明 為了防止程式碼執行錯誤,建議使用一致的版本: 開發工具:Eclipse : Version: Neon.3 Release (4.6.3) 開發spring cloud應用推薦使用 idea或者spring官方提供的STS工具,筆者由於
Spring Cloud 學習 | 第一節 服務註冊與發現
一、簡介 微服務架構當中,最總要的就是服務的提供者和消費者。消費者消費提供者提供的服務,但是消費者不應該直接呼叫提供者的服務,因為這樣的話,各個子系統之間的耦合性太強,監控,容災,負載均衡這些功能實現起來就很困難。所以需要引入註冊中心的概念,服務提供者把自己提
Spring Cloud Eureka-服務註冊與發現
效應 code ack size init -- 編輯 rep pid Spring Cloud Eureka Spring Cloud是目前用於開發微服務的主流框架之一,我們都知道在微服務架構中最為基礎、核心的模塊,就是服務註冊與發現。 在Spring Cloud裏我們可
Spring Cloud 基於Spring Boot 2.x的服務註冊與發現(Eureka)
一.Spring Cloud 簡介 Spring Cloud為開發人員提供了快速構建分散式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智慧路由,微代理,控制匯流排,一次性令牌,全域性鎖定,領導選舉,分散式 會話,群集狀態)。 分散式系統的協調導致鍋
01.Spring Cloud Eureka服務註冊與發現
Spring Cloud Eureka Spring Cloud Eureka 1.構建服務註冊中心 2.提供服務,註冊服務 依賴 啟動類 獲取服務 3.配置註冊中心高可用
Spring Cloud Eureka 服務註冊與發現
Eureka是Netflix開源的一個RESTful服務,主要用於服務的註冊發現。Eureka由兩個元件組成:Eureka伺服器和Eureka客戶端。Eureka伺服器用作服務註冊伺服器。Eure
Spring Cloud 的Eureka服務註冊與發現
Eureka 雲端服務發現,一個基於 REST 的服務,用於定位服務,以實現雲端中間層服務發現和故障轉移。引用[Spring Cloud中文網] 在Spring Cloud中使用Eureka來進行服務註冊與發現,通過Eureka管理各個微服務(感覺類似Zookeeper),
03.Spring Cloud學習筆記之服務註冊與服務發現元件Eureka
前言 從本篇部落格開始將正式進入Spring Cloud的實戰部分,因為博主用了很長時間的Dubbo,並且Spring Cloud和Dubbo都是微服務框架,它們有很多相似之處,所以可能在部落格中提及進行類比,如果沒有接觸過Dubbo的朋友直接略過該部分內容即
eureka服務註冊與發現:(一)搭建註冊中心
hostname dubbo efault 必須 技術分享 不存在 dea bsp 啟用 最近由於工作中需要將原來的spring項目都進行架構調整,要實現應用解耦,所以考慮到通過微服務的方式將應用解耦。所以面臨兩個選擇:dubbo 和spring cloud ,由於項目規模
SpringCloud-Eureka服務註冊與發現(二)
背景: 傳統的服務之間的呼叫是客戶端直接向服務端傳送請求,在單機服務時代,服務並不是很多時,服務之間直接呼叫並不存在很大問題,但隨著微服務架構的興起,服務之間的呼叫越來越頻繁,再像以前一樣服務間直接呼叫,耦合性太大,並不利用維護服務,所以Eureka 應運而生,它將所有服務納入到自己的服務中心
SpringCloud(3)---Eureka服務註冊與發現
sta 檢索 消費 能夠 曾經 pri local cloud ava Eureka服務註冊與發現 一、Eureka概述 1、Eureka特點 (1) Eureka是一個基於REST的服務,用於定位服務,以實現雲端中間層服務發現和故障轉移。 (2)
springcloud (一) Eureka服務註冊與發現
http://blog.didispace.com/springcloud1/ Spring Cloud簡介 Spring Cloud是一個基於Spring Boot實現的雲應用開發工具,它為基於JVM的雲應用開發中的配置管理、服務發現、斷路器、智慧路由、微代理、控制匯流排
SpringCloud-Eureka服務註冊與發現之叢集配置(五)
1.構建多個Eureka服務端,具體步驟參考單機版的Eureka服務端構建步驟 2.修改每個Eureka服務端yml檔案,將對外暴露的註冊介面地址由一個變成多 個,自身的暴露地址除外
SpringCloud-Eureka服務註冊與發現之自我保護機制(四)
當我們進行SpringCloud微服務開發的時候,有可能會出現如下的一些紅色提示資訊。這個是Eureka的自我保護機制。 自我保護機制 :預設情況下,如果Eureka Server在一定時間內沒有接收到某個微服務例項的心跳,Eureka S
SpringCloud-Eureka服務註冊與發現之開發小技巧(三)
1.如何為服務起別名,即修改下面紅色部分 解決方案:在yml配置檔案中加入以下資訊 測試: 2.如何設定服務端的ip地址 解決方案: 在yml配置檔案中加入以下資訊