射陽(yáng)網(wǎng)站設(shè)計(jì)b站大全永不收費(fèi)2023入口在哪
Eureka是spring cloud中的一個(gè)負(fù)責(zé)服務(wù)注冊(cè)與發(fā)現(xiàn)的組件。遵循著CAP理論中的A(可用性)P(分區(qū)容錯(cuò)性)。一個(gè)Eureka中分為eureka server和eureka client。其中eureka server是作為服務(wù)的注冊(cè)與發(fā)現(xiàn)中心。
搭建eureka服務(wù)
引入eureka依賴
引入SpringCloud為eureka提供的starter依賴.
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
?添加注解
要添加一個(gè)@EnableEurekaServer注解,開啟eureka的注冊(cè)中心功能
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {public static void main(String[] args) {SpringApplication.run(EurekaApplication.class, args);}
}
編寫配置文件
server:port: 10086
spring:application:name: eureka-server
eureka:client:service-url: defaultZone: http://127.0.0.1:10086/eureka
啟動(dòng)服務(wù)
啟動(dòng)微服務(wù),然后在瀏覽器訪問:http://127.0.0.1:10086 ?
服務(wù)注冊(cè)
接下來我們將user-service注冊(cè)到eureka-server中去 ?
引入依賴
引入下面的eureka-client依賴
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
配置文件
?在user-service中,修改application.yml文件,添加服務(wù)名稱、eureka地址
spring:application:name: userservice
eureka:client:service-url:defaultZone: http://127.0.0.1:10086/eureka
啟動(dòng)實(shí)例
啟動(dòng)user服務(wù)
啟動(dòng)多個(gè)user-service實(shí)例,選擇services選項(xiàng),再點(diǎn)擊Run Configuration Type? ? ? ??
點(diǎn)擊Spring Boot?
開啟多服務(wù)選項(xiàng)?
?
復(fù)制原來的user-service啟動(dòng)配置,改為8082
?啟動(dòng)2個(gè)user服務(wù)
服務(wù)發(fā)現(xiàn)
我們將order-service的邏輯修改:向eureka-server拉取user-service的信息,實(shí)現(xiàn)服務(wù)發(fā)現(xiàn).
引入依賴
引入下面的eureka-client依賴
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
配置文件
在order-service中,修改application.yml文件,添加服務(wù)名稱、eureka地址 ?
spring:application:name: orderservice
eureka:client:service-url:defaultZone: http://127.0.0.1:10086/eureka
服務(wù)拉取和負(fù)載均衡
我們要去eureka-server中拉取user-service服務(wù)的實(shí)例列表,并且實(shí)現(xiàn)負(fù)載均衡 .
在order-service的OrderApplication中,給RestTemplate這個(gè)Bean添加一個(gè)@LoadBalanced注解
/*** 創(chuàng)建RestTemplate并注入Spring容器*/@Bean@LoadBalancedpublic RestTemplate restTemplate() {return new RestTemplate();}
訪問的url路徑,用服務(wù)名代替ip、端口: ?
@Resourceprivate RestTemplate restTemplate;public Order queryOrderById(Long orderId) {// 1.查詢訂單Order order = orderMapper.findById(orderId);// 2.利用RestTemplate發(fā)起http請(qǐng)求,查詢用戶// 2.1.url路徑String url = "http://userservice/user/" + order.getUserId();// 2.2.發(fā)送http請(qǐng)求,實(shí)現(xiàn)遠(yuǎn)程調(diào)用User user = restTemplate.getForObject(url, User.class);// 3.封裝user到Orderorder.setUser(user);// 4.返回return order;}
啟動(dòng)服務(wù)?
?測(cè)試
spring會(huì)自動(dòng)幫助我們從eureka-server端,根據(jù)userservice這個(gè)服務(wù)名稱,獲取實(shí)例列表,而后完成負(fù)載均衡 。?
?
?
?