Springcloud學習之路------------Eureka服務注冊與發現
建立eureka服務端
一、建model
如:cloud-eureka-server7001
二、改pom
添加依賴eureka-server 表示這是一個eureka服務端
<!--eureka-server-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
三、改配置
集群板eureka: 就是把defaultZone 指向其他eureka的hostname ,如果有多個則用逗號隔開。
單機版eureka: 就是指向自己的hostname
server:
port: 7001
eureka:
instance:
hostname: eureka7001.com #eureka服務端實例名稱
client:
fetch-registry: false #false表示自己就是注冊中心,我的職責就是維護服務實例,并不區檢索服務
register-with-eureka: false #表示不像注冊中心注冊自己
service-url:
#集群就是指向其他7002單機指向自己
defaultZone: http://eureka7002.com:7002/eureka/
#defaultZone: http://eureka7001.com:7001/eureka/
四、主啟動
在主啟動上加入@EnableEurekaServer注解表示這是一個服務端
@SpringBootApplication
@EnableEurekaServer
public class EurekaMain7001 {
public static void main(String[] args) {
SpringApplication.run(EurekaMain7001.class,args);
}
}
注冊eureka客戶端
一、改pom
引入eureka客戶端的maven依賴
<!--eureka-client-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
二、改yml
引入eureka:client: 并將自己注冊進去;
如果是一個集群就將自己注冊到多個eureka中
eureka:
client:
#表示是否將自己注冊進EurekaServer默認設為true
register-with-eureka: true
#是否從EurekaServer抓取已有的注冊信息,默認為true。單節點無所謂,集群必須設為true才能配合ribbon使用負載均衡
fetchRegistry: true
service-url:
#defaultZone: http://localhost:7001/eureka #單機版
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka #集群版
三、主啟動
加入@EnableEurekaClient注解 表示自己是eureka客戶端
@SpringBootApplication
@EnableEurekaClient
public class PaymentMain8002 {
public static void main(String[] args) {
SpringApplication.run(PaymentMain8002.class,args);
}
}
eureka引入服務提供者
當在實際項目中會有多個服務提供模塊為我們提供服務,再此我們要把他們分別注冊到eureka中去yml中如下配置(如果是eureka集群的話則如下:)
eureka:
client:
#表示是否將自己注冊進EurekaServer默認設為true
register-with-eureka: true
#是否從EurekaServer抓取已有的注冊信息,默認為true。單節點無所謂,集群必須設為true才能配合ribbon使用負載均衡
fetchRegistry: true
service-url:
#defaultZone: http://localhost:7001/eureka #單機版
defaultZone: hettp://eureka7001.com:7001/ureka,http://eureka7002.com:7002/eureka #集群版
在controller中可以用@Value("${server.port}")注解獲取端口號
@Value("${server.port}")
private String serverPort;
在方法調用時進行打印即可顯示對應的端口號
服務調用者
更改調用的PAYMENT_URL 改為服務提供者的spring:application:name:
具體控制層如下:
@RestController
@Slf4j
public class OrderController {
// private final static String PAYMENT_URL = "http://localhost:8001";
private final static String PAYMENT_URL = "http://CLOUD-PAYMENT-SERVICE";
@Resource
private RestTemplate restTemplate;
@GetMapping("/consumer/payment/get/{id}")
public CommonResult<Payment> getPaymentById(@PathVariable("id") Long id) {
return restTemplate.getForObject(PAYMENT_URL + "/payment/get/" + id, CommonResult.class, id);
}
@GetMapping("/consumer/payment/create")
public CommonResult<Payment> create(Payment payment){
return restTemplate.postForObject(PAYMENT_URL + "/payment/create", payment, CommonResult.class);
}
}
eureka截圖:
此時在ApplicationContextConfig中做如下配置
@Configuration
public class ApplicationContextConfig {
@Bean
@LoadBalanced //使用@LoadBalanced注解賦予RestTemplate負載均衡的能力
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
添加@LoadBalanced 使用@LoadBalanced注解賦予RestTemplate負載均衡的能力(因為實際過程中消費者調PAYMENT_URL是根據提供者的spring:application:name:的名字來調(在eureka中名字一樣端口號不一樣),不能確定用那一個model來做服務提供者,所以要加上@LoadBalanced以輪詢的機制來進行調用);
其中RestTemplate提供了多種便捷訪問遠程http服務的方法,是一種簡單便捷的訪問restful服務模板類,是spring提供的用于rest服務的客戶端模板工具集;
智能推薦
SpringCloud(二):服務注冊與發現——Eureka
服務注冊與發現——Eureka 是什么? Eureka架構圖 Eureka兩個組件 Server Client 構建Eureka Server服務 構建Eureka Client 在provider中模擬發現服務 actutor微服務信息完善 Eureka的自我保護 Eureka集群配置 是什么? 是Netflix的一個子模塊,也是核心模塊之一,基于REST的服務 用于云端...
springcloud eureka服務注冊與發現
本節示例只提供服務注冊,消費服務在后面的章節中 Eureka的原理就不介紹了,直接寫代碼。 編寫Eureka Service 新建一個spring boot Maven項目,添加如下依賴 啟動類添加@EnableEurekaServer注解,聲明是一個Eureka Server。 配置文件 eureka.client.registerWithEureka 表示是否將自己注冊到Eureka Serv...
SpringCloud:服務注冊與發現(Eureka)
1、Eureka簡介 Eureka是一個服務注冊與發現組件,主要有兩部分組成:注冊中心(Eureka-Server)和服務提供端(Eureka-Client),Eureka-Server通過一個注冊表維護了所有向Eureka-Server注冊的Eureka-Client的主機地址和端口等信息,同時Eureka-Client可以向Eureka-Server獲取該注冊表,并默認每30s向注冊中心發送一...
springcloud Eureka 服務注冊與發現
1、Eureka是什么 Eureka是Netflix的一個子模塊,也是核心模塊之一。 Eureka是一個基于REST的服務,用于定位服務,以實現云端中間層服務發現和故障轉移。 服務注冊與發現對于微服務架構來說是非常重要的,有了服務發現與注冊,只需要使用服務的標識符,就可以訪問到服務,而不需要修改服務調用的配置文件了。 功能類似于dubbo的注冊中心,比如Zookeeper。 2、Eureka基本架...
SpringCloud_Eureka服務注冊與發現
文章目錄 基礎知識 服務治理 服務注冊于發現 組件 Eureka Server Eureka CLient 單機Eureka構建步驟 Eureka Server構建 Eureka Client構建 集群Eureka構建 修改Eureka Server 集群的yaml 修改Eureka Client 微服務模塊的yaml 如果微服務模塊為集群,通過在eureka上注冊過的微服務名稱調用 使用@Loa...
猜你喜歡
SpringCloud之Eureka服務注冊與發現
SpringCloud之Eureka服務注冊與發現 1、Eureka基礎知識 什么是服務治理 ? Spring Cloud封裝了Netflix公司開發的Eureka模塊來實現服務治理 ? 在傳統的rpc遠程調用框架中,管理每個服務與服務之間依賴關系比較復雜,管理比較復雜,所以需要使用服務治理,管理服務于服務之間依賴關系,可以實現服務調用、負載均衡、容錯等,實現服務發現與注冊。 什么是服務注冊與發現...
SpringCloud: 服務的注冊與發現(Eureka)
一、spring cloud簡介 spring cloud 為開發人員提供了快速構建分布式系統的一些工具,包括配置管理、服務發現、斷路器、路由、微代理、事件總線、全局鎖、決策競選、分布式會話等等。它運行環境簡單,可以在開發人員的電腦上跑。另外說明spring cloud是基于springboot的,所以需要開發中對springboot有一定的了解。 二、創建服務注冊中心 在這里,我們需要用的的組件...
SpringCloud之——Eureka服務注冊與發現
SpringCloud之——Eureka服務注冊與發現 Eureka作為SpringCloud全家桶的注冊中心,最常說到的問題就是他與zookeeper的區別是什么,我們都知道ACP(可用性、一致性、分區容錯性),那么P是必須要保證的,而三者又不可能同時滿足,那么在設計的時候就看各自產品的側重點了,Eureka和Zookeeper兩個都能夠作為注冊中心使用,他們的主要區別是...
Springcloud 服務注冊與發現 Eureka
在Springcloud項目中,服務提供者對外提供服務,服務消費者進行消費服務,如果微服務很多,就需要一個服務管理中心去統一管理服務,而消費者在調用服務時就可以去這個管理中心中去查找需要調用的服務進行調用。 Eureka在Springcloud中就作為最常用的服務注冊與發現的組件,下面主要記錄一下Eureka的基本原理與使用方法。 Eureka是什么 Eureka是Netflix的核心模塊之一,它...