SpringCloud學習-Spring Cloud Eureka
標簽: SpringBoot
SpringCloud學習-Spring Cloud Eureka
一、搭建服務注冊中心
1.使用idea創建springboot項目
添加依賴
2.修改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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>eureka</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>eureka</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR5</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</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>
3.主類添加@EnableEurekaServer注解
通過@EnableEurekaServer注解啟動一個服務注冊中心提供給其他的應用進行對話
@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
4.配置application.properties文件,添加一下內容
server.port=8761
eureka.client.hostname=localhost
# eureka.client.register-with-eureka=false不向注冊中心注冊自己
eureka.client.register-with-eureka=false
# eureka.client.fetch-registry=false注冊中心的職責是維護服務實例,不需要檢索服務,所以設置為false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://${eureka.client.hostname}:${server.port}/eureka/
5.驗證
http://localhost:8761/
二、服務提供搭建
1.創建springboot項目,添加依賴
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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>eureka-client</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>eureka-client</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR5</spring-cloud.version>
</properties>
<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.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 引入log4j2依賴 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</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>
2.修改application.properties文文件
server.port=8081
spring.application.name=hello-server
eureka.client.service-url.defaultZone=http://localhost:8761/eureka
3.主類添加@EnableDiscoveryClient注解
@EnableDiscoveryClient
@SpringBootApplication
public class EurekaClientApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaClientApplication.class, args);
}
}
4.通過注入DiscoveryClient對象打印相關內容
@RestController
public class HelloControl {
private final Logger logger = Logger.getLogger(String.valueOf(getClass()));
@Autowired
private DiscoveryClient client; // 服務發現客戶端
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String test() {
System.out.println(client.getServices().get(0));
return "hello";
}
}
5.查看注冊情況
6.訪問接口查看服務信息
http://localhost:8081/hello
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-cGlAQq7O-1591351635451)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1591350776205.png)]
三、服務發現與消費
1.創建springboot項目
2. 添加@EnableDiscoveryClient注解讓該應用注冊為Eureka的客戶端應用,以獲得服務發現的能力。同時,在主類中創建RestTemplate的SpringBean實例,通過@LoadBalanced注解開啟客戶端負載均衡。
@EnableDiscoveryClient
@SpringBootApplication
public class RibbonConsumerApplication {
@Bean
// @LoadBalanced 開啟客戶端負載均衡
@LoadBalanced
RestTemplate restTemplate(){
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(RibbonConsumerApplication.class, args);
}
}
3.創建ConsumerController類實現/ribbon-consumer接口、通過創建RestTemplate來實現對HELLO-SERVER服務提供的test接口進行調用。訪問地址是服務名,符合服務治理的要求。
@RestController
public class CustomerController {
@Autowired
RestTemplate restTemplate;
@RequestMapping(value="/ribbon-consumer",method = RequestMethod.GET)
public String helloConsumer(){
return restTemplate.getForEntity("http://HELLO-SERVER/hello",String.class).getBody();
}
}
4.在application.properties配置Eureka服務注冊中心的位置,同時設置消費者的端口為9000,
spring.application.name=ribbon-consumer
server.port=9000
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
5.啟動服務后查看eureka,可以看到服務提供方的服務和消費方的服務
6.訪問消費者接口測試
http://localhost:9000/ribbon-consumer
智能推薦
spring cloud Eureka 實戰
構建一個簡單的spring cloud Eureka應用實例,話不所說,上項目 一、使用構建三個簡單的maven項目 二、eureka項目: 1、pom.xml 2、application.properties 3、代碼三、ceshi項目:1、pom.xml 2、application.properties # spring bo 3、代碼 四、client項目:pom.xml<?xml v...
spring cloud Eureka
目錄標題 1 服務搭建 1.1 搭建服務治理中心 1.2 搭建生產者(下游服務) 1.3 搭建消費者(上游服務) 1.4 服務搭建過程中遇到的問題 1 服務搭建 springboot版本2.0.2.RELEASE springcloud版本Finchley.SR1 springcloud依賴版本管理,引入這個后當前pom或者子pom都不需要再顯示的使用版本號。 1.1 搭建服務治理中心 說明:不同...
Spring-cloud-eureka
eureka概述 eureka架構 eureka和zookeeper的對比 創建eureka工程 Eureka 的自我保護機制 自我保護機制 自我保護默認值修改 自我保護啟動閾值 eurekaserver集群 以8000為例修改pom文件 修改yml文件...
spring cloud (三)Eureka
一、什么是Eureka Eureka 是Netflix開源的服務發現組件,本身是一個基于REST的服務。它包含Server和Client兩部分。Spring cloud將它集成在子項目Spring cloud Netflix中,從而實現微服務的注冊與發現。 二、Eureka原理 注:上圖來源于網絡,非lz所畫 如圖,可以看出服務的生產端將服務注冊到Eureka中,當客戶端需要消費的時候,...
Spring Cloud之Eureka
1. 項目結構 2. parent中pom.xml依賴 3. Eureka注冊中心Server引入依賴 4. Eureka注冊中心配置 5.注冊中心代碼 @EnableEurekaServer // 表示是注冊中心服務 6. 啟動訪問 http://127.0.0.1:8761/ 7. Eureka中Client,向注冊中心注冊服務,引入依賴 8.配置文件 9.注冊服務代...
猜你喜歡
spring-cloud-eureka
spring-cloud-eureka spring-cloud-eureka 服務注冊 服務發現 服務同步 啟動時同步 運行時同步 服務續約 服務下線 獲取服務 失效剔除 判斷是否滿足服務剔除的條件 找出過期的服務 剔除服務 自我保護 源碼分析 Eureka Client啟動過程 Eureka Server啟動過程 配置解釋 問題 數據存儲結構 Nacos spring-cloud-eureka...
初探Spring Cloud Eureka
既然用到微服務,服務的注冊和發現應該可以算作是微服務的核心了吧。使用過dubbo的人,應該都知道dubbo的服務注冊和發現中心是通過zookeeper來提供的。Eureka 是 Netflix 開源的服務注冊發現組件,當然也可以提供類似的功能。 啟動類:EurekaServerApplication 配置文件:application.yml 服務啟動成功,訪問http://localhost:80...
Spring Cloud Eureka介紹
Spring Cloud Eureka是什么? Spring Cloud Eureka是Spring Cloud提供的服務治理組件,用來實現各個微服務實例的自動化注冊和發現。 Spring Cloud Eureka是Spring Cloud Netflix微服務套件中的一部分,基于Netflix Eureka做了二次封裝,并且增加了Spring Boot風格的自動化配置,我們只需要通過簡單引入依賴...
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...