SpringCloud 學習(3):eureka集群
SpringCloud 學習(3):eureka集群
*這篇文章基于上篇文章進行修改,黃色背景為修改的部分。
1.介紹:Eureka集群就是n個Eureka服務器+n個Eureka客戶端,目的是實現負載均衡,減輕單個服務器的壓力。
2.原理:
3.代碼實現
- Eureka服務器(建立項目consultingPlatform_server):
1).pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.13.RELEASE</version>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Edgware.SR3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
2).application.properties(我們通過profiles指定不同的配置文件,模擬不同的服務器)| spring.profiles.active=server1
#spring.profiles.active=server2
.application-server1.properties
server.port=1001
#服務名稱
spring.application.name=server
#eureka服務器路徑
eureka.client.service-url.defaultZone=http://localhost:1002/eureka/
.application-server2.properties
server.port=1002
#服務名稱
spring.application.name=server
#eureka服務器路徑
eureka.client.service-url.defaultZone=http://localhost:1001/eureka/
在這里兩臺Eureka服務器互相注冊。。ok,到這里Eureka集群服務器已經搭建完畢,通過修改profiles分別啟動兩個Eureka服務器。
3).Application.java(啟動類)
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class Application {
public static void main(String[] args) {
new SpringApplicationBuilder(Application.class).web(true).run(args);
}
}
- 服務提供者(創建項目police_client)
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.13.RELEASE</version>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Edgware.SR3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
</dependencies>
2).application.properties(我們通過profiles指定不同的配置文件,模擬不同的客戶端)spring.profiles.active=client1
#spring.profiles.active=client2
.application-client1.propertiesserver.port=2001
#服務名稱
spring.application.name=police
#eureka服務器路徑
eureka.client.service-url.defaultZone=http://localhost:1001/eureka/,http://localhost:1002/eureka/
.application-client2.propertiesserver.port=2002
#服務名稱
spring.application.name=police
#eureka服務器路徑
eureka.client.service-url.defaultZone=http://localhost:1001/eureka/,http://localhost/eureka/
3 ).Application.java
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
/**
* @author: lqh
* @description:
* @program: police_client
* @create: 2018-06-06 11:50
**/
@SpringBootApplication
@EnableEurekaClient
public class Application {
public static void main(String[] args) {
new SpringApplicationBuilder(Application.class).web(true).run(args);
}
}
4 ).PoliceController.javaimport org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author:
* @description:
* @program: police_client
* @create: 2018-06-06 11:59
**/
@RestController
public class PoliceController {
@RequestMapping("call")
public String call(HttpServletRequest request) {
//這里返回url,便于查看服務提供者。
return "call:" + request.getRequestURL().toString();
}
}
- 服務調用者(創建項目people_caller):
- 1).pom.xml
2.application.properties<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.13.RELEASE</version> </parent> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Edgware.SR3</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> </dependency> </dependencies>
3.Applicationserver.port=6003 #服務名稱 spring.application.name=people #注冊路徑 eureka.client.service-url.defaultZone=http://localhost:6001/eureka/
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; @SpringBootApplication @EnableEurekaClient public class Application { public static void main(String[] args) { new SpringApplicationBuilder(Application.class).web(true).run(args); } }
4.PeopleControllerimport org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; @Configuration @RestController public class PeopleController { @Bean @LoadBalanced RestTemplate getRestTemplate() { return new RestTemplate(); } @RequestMapping("call") public String call() { return getRestTemplate().getForObject("http://police/call",String.class); } }
OK,跑起來。。
- #圖一:可以看到有2個服務器,2個服務提供者,1個服務調用者
- #圖二:可以看到有2個服務器,2個服務提供者,1個服務調用者
- #圖三:服務調用者,可以看到端口一直在2001\2002之間切換,說明一直在調用不同的服務提供者。
智能推薦
SpringCloud(三) eureka集群
根據 SpringCloud(一) eureka服務注冊與發現 ,再增加兩個eureka server Eureka Server的高可用 Eureka Server的設計一開始就考慮到了高可用的問題,在Eureka的服務治理設計中,所有節點即是服務提供方,也是服務消費方,服務注冊也不列外。之前的有配置: eureka: client:  ...
springcloud 搭建 eureka 集群
概述: 高可用集群配置、當注冊中心扛不住高并發的時候,這時候 要用集群來扛;一個掛了還能有其他的eureka 來頂。 集群搭建 普通操作 1、這里我們先建3個 module microservice-eureka-server-2001、 microservice-eureka-server-2002 、microservice-eureka-server-2003 2、三個項目的pom.xml ...
springcloud之eureka集群
前言: 我們通過springcloud入門大概的了解了springcloud。在springcloud入門中的案例中我們是直接通過服務消費者向服務提供者發送請求,然后得到結果的,但真正的項目開發中并不是這樣的,如圖所示,而是服務消費者向eureka發送請求,然后eureka再向服務提供者發送請求找尋到相對應的節點,服務提供者的節點有多個,其中一個宕機了eureka會自動幫你找到第二的,這里采用的是...
SpringCloud-eureka集群
SpringCloud-eureka集群 Eureka搭建集群 集群:同一個業務,部署在多個服務器上(不同的服務器運行同樣的代碼,干同一件事) 當注冊中心扛不住高并發的時候,這時候 要用集群來扛; 今天介紹搭建的兩種方式: 第一種方式 在上篇博客的基礎上再構建兩個項目,而這兩個項目的配置又不能都是本地,開3個虛擬機又太麻煩,所以我們直接配置本機hosts來實現本機的域名映射 進入你的系統文件:C:...
springcloud之Eureka集群
springcloud之Eureka集群 1、Eureka集群搭建 普通操作 騷操作 2、Eureka自我保護機制 1、Eureka集群搭建 高可用集群配置 當注冊中心扛不住高并發的時候,這時候 要用集群來扛; 普通操作 新建兩個module microservice-eureka-server-2002 microservice-eureka-server-2003 1、pom.xml 依賴如下...
猜你喜歡
springcloud之eureka集群
文章目錄 一、eureka集群搭建 二、eureka自我保護機制 一、eureka集群搭建 高可用集群配置 當注冊中心扛不住高并發的時候,這時候要用集群來抗 普通操作 新建兩個module并且更改其中的配置 1.1、microservice-eureka-server-2002 1.2、microservice-eureka-server-2003 在兩個module中的啟動類都加上注解(@Ena...
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...
requests實現全自動PPT模板
http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...