设为首页 加入收藏

TOP

服务治理: Spring Cloud Eureka(五)
2019-09-03 01:23:53 】 浏览:60
Tags:服务 治理 Spring Cloud Eureka
rties

spring.application.name=eureka-server
server.port=1111

eureka.instance.hostname=peer1
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true

eureka.client.service-url.defaultZone=http://peer2:1112/eureka/
  • application-peer2.properties

    spring.application.name=eureka-server
    server.port=1112
    
    eureka.instance.hostname=peer2
    eureka.client.register-with-eureka=true
    eureka.client.fetch-registry=true
    
    eureka.client.service-url.defaultZone=http://peer1:1111/eureka/
    
  • 在本地修改配置文件/etc/hosts ,Windows下面是C:\Winows\System32\drivers\etc\hosts。

    添加如下内容

    127.0.0.1 peerl 
    127.0.0.1 peer2

    如下:

    • 首先在idea 或者eclipse 使用mvn clean 和 mvn install命令,会直接打包,这里注意,一定要在pom.xml中配置如下,否则使用java -jar会报没有主清单属性的错误。

      <build>
              <plugins>
                  <plugin>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-maven-plugin</artifactId>
                  </plugin>
              </plugins>
      </build>
    • 打包完成后,切换到eureka-server项目,再切换到target目录下,此时有mvn install 的jar包,使用java -jar eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1java -jar eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2 两个命令,启动两个例程。起来过后分别访问 http://localhost:peer1/eureka/ 和 http://localhost:peer2/eureka/ 主页,发现对应的注册中心分别注册进去了,而且分片也处于可用分片状态。

    到现在为止,我们已经让两个注册中心分别注册各自的服务了,还记得上面还有一个server-provider服务吗?我们也让server-provider分别注册到这两个注册中心。

    server-provider中修改对应的配置文件

    eureka.client.service-url.defaultZone=http://peer1:1111/eureka, http://peer2:1112/eureka/

    启动程序,发现http://localhost:1111/ 和 http://localhost:1112/ 中都注册了server-provider服务

    访问http://localhost:8080/hello,你会发现页面上显示出来hello world,断开其中的任意一个注册中心,hello world也能够显示出来。也就是说,server-provider 分别对两个注册中心分别注册了各自的服务,由两个注册中心以轮询的方式提供服务。断开其中一个注册中心,还有另外一个注册中心可以提供服务,这也是Eureka 高可用的体现。

    ? 注意事项

    1. 如果application-peer1.propertiesapplication-peer2.properties中的eureka.instance.hostname与 本地hosts文件中的名称不一致的话,那么注册中心启动后,会使分片处于不可用的状态, spring.application.name 表示的是实例的名称,也就是如下的地方

    1. server-provider注册进来的时候,高可用配置的注册中心会以轮询的方式提供服务,每次提供服务是哪个注册中心是不可预知的。

    2. 如我们不想使用主机名来定义注册中心的地址,也可以使用IP地址的形式, 但是需要在配置文件中增加配置参数eureka.instance.prefer-ip-address=true, 该值默认为false。

    服务发现与消费

    通过上述的内容介绍与实践,我们已经搭建起来微服务架构中的核心组件— 服务注册中心(包括单节点模式和高可用模式)。并用server-provider注册双节点,在页面上发起一个url请求时,注册中心找到server-provider,并有两个节点以轮询的方式提供服务。

    下面就来构建一个消费者,它主要完成两个目标:发现服务消费服务。其中,服务发现的任务由Eureka客户端完成,消费服务的任务由Ribbon来完成。

    先来认识一下什么是Ribbon:Ribbon是客户端负载均衡器,可以让您对HTTP和TCP客户端的行为进行控制。 Feign已经使用了Ribbon,如果你使用了@FeignClient,那么Ribbon也适用。

    Ribbon可以在通过客户端中配置的ribbonServerList服务端列表去轮询访问以达到负载均衡的效果。当ribbonEureka联合使用时,Ribbon的服务实例清单RibbonServerList会被DiscoveryEnabledNIWSServerList重写,扩展成从Eureka注册中心中获取服务端列表。同时它也会用NIWSDiscoveryPing来取代Ping,它将职责委托给Eureka来确定服务端是否启动,我们目前不细致探讨Ribbon的细节问题。

    下面通过一个简单的实例,看看Eureka的服务治理体系下如何实现服务的发现与消费。

    • 首先,先做一些准备工作,启动之前实现的服务注册中心eureka-server以及server-provider服务,为了实现ribbon的负载均衡功能,我们通过java -jar命令行的方式来启动两个不同端口的server-provider
      • 启动一个eureka-server即可
      • 使用java -jar service-provider-0.0.1-SNAPSHOT.jar --server.port=8081java -jar service-provider-0.0.1-SNAPSHOT.jar --server.port=8082 来启动两个server-provider 进程
    • 启动完成后,可见注册中心注册了两个server-provider 实例

    • 新创建一个SpringBoot 工程,命名为ribbon-con
    首页 上一页 2 3 4 5 6 下一页 尾页 5/6/6
    】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
    上一篇if语句的嵌套使用之获取三个数据.. 下一篇笔记-迎难而上之Java基础进阶7

    最新文章

    热门文章

    Hot 文章

    Python

    C 语言

    C++基础

    大数据基础

    linux编程基础

    C/C++面试题目