第一部分:搭建Eureka Server集群

Step1:新建工程,引入依赖

依赖文件pom.xml如下

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5.  
  6. <groupId>com.fangxing.springcloud</groupId>
  7. <artifactId>euruka-server</artifactId>
  8. <version>0.0.1-SNAPSHOT</version>
  9. <packaging>jar</packaging>
  10.  
  11. <name>euruka-server</name>
  12. <description>Demo project for Eureka Server</description>
  13.  
  14. <!--基于Springboot-->
  15. <parent>
  16. <groupId>org.springframework.boot</groupId>
  17. <artifactId>spring-boot-starter-parent</artifactId>
  18. <version>1.4.0.RELEASE</version>
  19. <relativePath/>
  20. </parent>
  21.  
  22. <properties>
  23. <!--设置字符编码及java版本-->
  24. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  25. <java.version>1.8</java.version>
  26. </properties>
  27.  
  28. <dependencies>
  29. <!--增加eureka-server的依赖-->
  30. <dependency>
  31. <groupId>org.springframework.cloud</groupId>
  32. <artifactId>spring-cloud-starter-eureka-server</artifactId>
  33. </dependency>
  34. <!--用于测试的,本例可省略-->
  35. <dependency>
  36. <groupId>org.springframework.boot</groupId>
  37. <artifactId>spring-boot-starter-test</artifactId>
  38. <scope>test</scope>
  39. </dependency>
  40. </dependencies>
  41.  
  42. <!--依赖管理,用于管理spring-cloud的依赖,其中Camden.SR3是版本号-->
  43. <dependencyManagement>
  44. <dependencies>
  45. <dependency>
  46. <groupId>org.springframework.cloud</groupId>
  47. <artifactId>spring-cloud-dependencies</artifactId>
  48. <version>Camden.SR3</version>
  49. <type>pom</type>
  50. <scope>import</scope>
  51. </dependency>
  52. </dependencies>
  53. </dependencyManagement>
  54.  
  55. <build>
  56. <plugins>
  57. <plugin>
  58. <groupId>org.springframework.boot</groupId>
  59. <artifactId>spring-boot-maven-plugin</artifactId>
  60. </plugin>
  61. </plugins>
  62. </build>
  63.  
  64. </project>

 

Step2:开启Eureka的注册中心

  1. /**
  2. * 开启Eureka的注册中心,只需要添加这个注解即可
  3. */
  4. @EnableEurekaServer
  5. @SpringBootApplication
  6. public class EurukaServerApplication {
  7.  
  8. public static void main(String[] args) {
  9. SpringApplication.run(EurukaServerApplication.class, args);
  10. }
  11. }

Step3:添加多实例的配置文件

既然是集群,1个实例就太寒碜了,所以我们通过配置文件制定了多个实例。

application-peer1.properties文件内容如下:

  1. spring.application.name=eureka-server
  2. server.port=1111
  3.  
  4. eureka.instance.hostname=peer1
  5. eureka.client.serviceUrl.defaultZone=http://peer2:2222/eureka/

application-peer2.properties文件内容如下:

  1. spring.application.name=eureka-server
  2. server.port=2222
  3.  
  4. eureka.instance.hostname=peer2
  5. eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/

其中:eureka.client.serviceUrl.defaultZone指的是注册中心的地址,所以两个实例互相指向。

PS:这里的peer1、peer2需要再host中配置一番,如下所示:

  1. 127.0.0.1 peer1
  2. 127.0.0.1 peer2

Step4:启动注册中心的多实例

再idea中配置多实例的启动参数,如下所示:

配置好了,依次启动peer1和peer2

 Step5:Eureka的注册中心去验证

第二部分:搭建Eureka Client集群

 Step1:新建工程,引入配置文件

我测试时的pom.xml如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5.  
  6. <groupId>com.fangxing.springcloud</groupId>
  7. <artifactId>euruka-client</artifactId>
  8. <version>0.0.1-SNAPSHOT</version>
  9. <packaging>jar</packaging>
  10.  
  11. <name>euruka-server</name>
  12. <description>Demo project for Eureka Server</description>
  13.  
  14. <!--基于Springboot-->
  15. <parent>
  16. <groupId>org.springframework.boot</groupId>
  17. <artifactId>spring-boot-starter-parent</artifactId>
  18. <version>1.4.0.RELEASE</version>
  19. <relativePath/>
  20. </parent>
  21.  
  22. <properties>
  23. <!--设置字符编码及java版本-->
  24. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  25. <java.version>1.8</java.version>
  26. </properties>
  27.  
  28. <dependencies>
  29. <!--增加eureka-server的依赖-->
  30. <dependency>
  31. <groupId>org.springframework.cloud</groupId>
  32. <artifactId>spring-cloud-starter-eureka</artifactId>
  33. </dependency>
  34. <!--用于测试的,本例可省略-->
  35. <dependency>
  36. <groupId>org.springframework.boot</groupId>
  37. <artifactId>spring-boot-starter-test</artifactId>
  38. <scope>test</scope>
  39. </dependency>
  40. </dependencies>
  41.  
  42. <!--依赖管理,用于管理spring-cloud的依赖,其中Camden.SR3是版本号-->
  43. <dependencyManagement>
  44. <dependencies>
  45. <dependency>
  46. <groupId>org.springframework.cloud</groupId>
  47. <artifactId>spring-cloud-dependencies</artifactId>
  48. <version>Brixton.SR5</version>
  49. <type>pom</type>
  50. <scope>import</scope>
  51. </dependency>
  52. </dependencies>
  53. </dependencyManagement>
  54.  
  55. <build>
  56. <plugins>
  57. <plugin>
  58. <groupId>org.springframework.boot</groupId>
  59. <artifactId>spring-boot-maven-plugin</artifactId>
  60. </plugin>
  61. </plugins>
  62. </build>
  63.  
  64. </project>

Eureka Client的pom.xml

Step2:启动发现服务

  1. @EnableDiscoveryClient
  2. @SpringBootApplication
  3. public class EurekalclientApplication {
  4.  
  5. public static void main(String[] args) {
  6. SpringApplication.run(EurekalclientApplication.class, args);
  7. }
  8. }

Step3:配置Client的应用

  1. spring.application.name=eureka-client
  2.  
  3. eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/,http://peer2:2222/eureka/

提供一个测试的Controller。

  1. @RestController
  2. public class HelloController {
  3.  
  4. @Autowired
  5. private DiscoveryClient client;
  6.  
  7. @RequestMapping(value = "/hello",method = RequestMethod.GET)
  8. public String index(){
  9. ServiceInstance instance=client.getLocalServiceInstance();
  10. System.out.println("/hello,host:"+instance.getHost()+",service_id:"+instance.getServiceId());
  11. return "hello world!";
  12. }
  13.  
  14. }

Step4:启动多个实例

因为这里的多个实例,我们需要不同的端口,所以,我们还是采用前面的方法来启动多个实例。

启动后,我们可以在Eureka的注册中心中可以看到(Peer1和Peer2都可以看到)

PS:这里localhost:eureka-client这个是测试时残留的,这里没有清除掉,可以不用管它。

到这里,我们的服务注册中心和服务提供者都写好了。

第三部分:消费Eureka Client的消息

Step1:新建工程,引入依赖

注意,这里我们要引入新的依赖ribbon。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5.  
  6. <groupId>com.fangxing.springcloud</groupId>
  7. <artifactId>euruka-server</artifactId>
  8. <version>0.0.1-SNAPSHOT</version>
  9. <packaging>jar</packaging>
  10.  
  11. <name>euruka-server</name>
  12. <description>Demo project for Eureka Server</description>
  13.  
  14. <!--基于Springboot-->
  15. <parent>
  16. <groupId>org.springframework.boot</groupId>
  17. <artifactId>spring-boot-starter-parent</artifactId>
  18. <version>1.4.0.RELEASE</version>
  19. <relativePath/>
  20. </parent>
  21.  
  22. <properties>
  23. <!--设置字符编码及java版本-->
  24. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  25. <java.version>1.8</java.version>
  26. </properties>
  27.  
  28. <dependencies>
  29. <!--增加eureka-server的依赖-->
  30. <dependency>
  31. <groupId>org.springframework.cloud</groupId>
  32. <artifactId>spring-cloud-starter-eureka</artifactId>
  33. </dependency>
  34. <!--增加ribbon的依赖-->
  35. <dependency>
  36. <groupId>org.springframework.cloud</groupId>
  37. <artifactId>spring-cloud-starter-ribbon</artifactId>
  38. </dependency>
  39. <!--用于测试的,本例可省略-->
  40. <dependency>
  41. <groupId>org.springframework.boot</groupId>
  42. <artifactId>spring-boot-starter-test</artifactId>
  43. <scope>test</scope>
  44. </dependency>
  45. </dependencies>
  46.  
  47. <!--依赖管理,用于管理spring-cloud的依赖,其中Camden.SR3是版本号-->
  48. <dependencyManagement>
  49. <dependencies>
  50. <dependency>
  51. <groupId>org.springframework.cloud</groupId>
  52. <artifactId>spring-cloud-dependencies</artifactId>
  53. <version>Brixton.SR5</version>
  54. <type>pom</type>
  55. <scope>import</scope>
  56. </dependency>
  57. </dependencies>
  58. </dependencyManagement>
  59.  
  60. <build>
  61. <plugins>
  62. <plugin>
  63. <groupId>org.springframework.boot</groupId>
  64. <artifactId>spring-boot-maven-plugin</artifactId>
  65. </plugin>
  66. </plugins>
  67. </build>
  68.  
  69. </project>

Eureka消费者的pom.xml

 Step2:启用发现服务并开启客户端负载均衡

  1. @EnableDiscoveryClient
  2. @SpringBootApplication
  3. public class RibbonConsumerApplication {
  4.  
  5. public static void main(String[] args) {
  6. SpringApplication.run(RibbonConsumerApplication.class, args);
  7. }
  8.  
  9. //开启客户端负载均衡
  10. @Bean
  11. @LoadBalanced
  12. RestTemplate restTemplate(){
  13. return new RestTemplate();
  14. }
  15. }

Step3:配置消费者(跟生产者类似)

  1. spring.application.name=ribbon-consumer
  2. server.port=9000
  3.  
  4. eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/,http://peer2:2222/eureka/

Step4:编写消费者实例

  1. @RestController
  2. public class ConsumerController {
  3.  
  4. @Autowired
  5. RestTemplate restTemplate;
  6.  
  7. @RequestMapping(value = "/ribbon-consumer",method = RequestMethod.GET)
  8. public String helloConsumer(){
  9. return restTemplate.getForEntity("http://eureka-client/hello",String.class).getBody();
  10. }
  11.  
  12. }

Step5:验证Eureka注册中心

 Step6:验证请求

参考文档:

《SpringCloud 微服务实践》

源码:https://github.com/iprometheus/spring-cloud-eureka-test

SpringCloud搭建Eureka集群的更多相关文章

  1. SpringCloud学习之搭建eureka集群,手把手教学,新手教程

    一.为什么需要集群 上一篇文章讲解了如何搭建单个节点的eureka,这篇讲解如何搭建eureka集群,这里的集群还是本地不同的端口执行三个eureka,因为条件不要允许,没有三台电脑,所以大家将就一下 ...

  2. 基于dns搭建eureka集群

    eureka集群方案: 1.通常我们部署的eureka节点多于两个,根据实际需求,只需要将相邻节点进行相互注册(eureka节点形成环状),就达到了高可用性集群,任何一个eureka节点挂掉不会受到影 ...

  3. SpringCloud之Eureka集群

    前面我们介绍了SpringCloud注册中心Eureka,但是存在一个单点故障的问题,一个注册中心远远不能满足实际的生产环境,现在我们介绍一下如何搭建一个Eureka集群. 一:集群环境搭建 我们先建 ...

  4. F版本SpringCloud 5—Eureka集群和自我保护机制

    源码地址:https://gitee.com/bingqilinpeishenme/Java-Tutorials 前言 上篇文章中,通过代码搭建了Eureka注册中心和客户端,是Eureka的简单应用 ...

  5. 三(2)、springcloud之Eureka集群配置

    1)原理说明** 服务启动后向Eureka注册,Eureka Server会将注册信息向其他Eureka Server进行同步,当服务消费者要调用服务提供者,则向服务注册中心获取服务提供者地址,然后会 ...

  6. 十六、springcloud(二)Eureka集群

    1.创建子工程spring-cloud-peer(jar) 2.创建application-peer1.properties,application-peer2.properties applicat ...

  7. springcloud中eureka集群unavailable-replicas

    unavailable-replicas 配置了集群,但是在注册中心显示另外的几个集群地址是不可用的: 1 首先需要再host中添加服务名映射,如果应映射了再看是否在yml中配置了prefer-ip- ...

  8. springcloud(三) eureka集群

    上一节讲到user微服务和order微服务和eureka注册中心一起使用,那么问题来了如何注册中心挂了怎么办?ok, 注册中心集群就来了. 原理图: 注意euraka 之间是通过复制(replicat ...

  9. Kubernetes部署SpringCloud(一) Eureka 集群,解决unavailable-replicas,available-replicas条件

    环境 k8s master: 1个 k8s node: 3个 三个eureka 指定node启动,并且使用network=host 完整pom.xml <?xml version="1 ...

随机推荐

  1. SpringBoot整合系列-整合MyBatis

    原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9971036.html SpringBoot整合Mybatis 步骤 第一步:添加必要的j ...

  2. 四种途径提高RabbitMQ传输数据的可靠性(二)

    前言 上一篇四种途径提高RabbitMQ传输消息数据的可靠性(一)已经介绍了两种方式提高数据可靠性传输的方法,本篇针对上一篇中提出的问题(1)与问题(2)提出解决常用的方法. 本文其实也就是结合以上四 ...

  3. 巨杉数据库入选Gartner数据库报告,中国首家入选厂商

    SequoiaDB巨杉数据库入选Gartner数据库报告,成为国内首批入选Gartner报告的数据库厂商. “SequoiaDB, 总部位于中国广州,是一款分布式.多模型(Multimodel).高可 ...

  4. eclipse创建的maven项目,pom.xml文件报错解决方法

    [错误一:]maven 编译级别过低 [解决办法:] 使用 maven-compiler-plugin 将 maven 编译级别改为 jdk1.6 以上: <!-- java编译插件 --> ...

  5. JDK源码分析(三)—— LinkedList

    参考文档 JDK源码分析(4)之 LinkedList 相关

  6. .Net语言 APP开发平台——Smobiler学习日志:在应用中添加WeiXin组件

    最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 控件说明 WeiXin组件. 效果演示 1. 分享好友 2. 分享朋友圈 图1 图2 ...

  7. Scrapy爬虫错误日志汇总

    1.数组越界问题(list index out of range) 原因:第1种可能情况:list[index]index超出范围,也就是常说的数组越界. 第2种可能情况:list是一个空的, 没有一 ...

  8. C# 创建邮件合并模板并合并文本、图片

    对于Word中的邮件合并功能,用户可以将邮件合并后的结果文档保存并打印,也可以通过邮件的形式发送,在很多场合需要使用到此功能.那对于编程人员,我们也可以在C#语言环境中通过代码的形式来实现.根据需要先 ...

  9. Android开发——使用intent传递对象

    intent传递对象有两种方法: 方式一:Serializable 方式 方式二:Parcelable方式 在这里不多介绍了,这一篇就是快速上手使用教程,至于详细原理介绍的,请看这一篇http://w ...

  10. JestClient 使用教程,教你完成大部分ElasticSearch的操作。

    本篇文章代码实现不多,主要是教你如何用JestClient去实现ElasticSearch上的操作. 授人以鱼不如授人以渔. 一.说明 1.elasticsearch版本:6.2.4 . jdk版本: ...