服务治理:Spring Cloud Eureka

Posted culture

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了服务治理:Spring Cloud Eureka相关的知识,希望对你有一定的参考价值。

核心内容:

  1. 构建服务注册中心
  2. 服务注册于服务发现
  3. Eureka的基础架构
  4. Eureka的服务治理机制
  5. Eureka的配置

服务治理:主要是用来实现各个微服务实例的自动化注册与发现

服务注册:在服务治理框架中,通常会构建一个注册中心,每个服务单元向注册中心登记自己的提供的服务,将主机与端口号、版本号、通信协议等一些信息告诉给注册中心,注册中心按服务名分类组织服务清单。 

  eg:  

技术分享图片

另外,服务注册中心还需要以心跳的方式去监测清单中的服务是否可用,若不可用需要从服务清单中踢出

 

服务发现:由于在服务治理框架下运作,服务间的调用不再通过制定具体的实例地址来实现,而是通过向服务名发起请求调动实现。

  步骤:1、调用方向服务注册中心获取所有服务的实例清单

     2、轮询取出清单中的一个进行服务调用(负载均衡)


 

搭建服务注册中心:

  1、添加依赖:

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>    --springboot版本和springCloud版本需要配对哟
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

  2、通过@EnableEurekaServer注解启动一个服务注册中心,提供给其他应用进行对话

  3、添加配置
    server.port=1111
    eureka.instance.hostname=localhost
    eureka.client.register-with-eureka=false  --由于该应用为注册中心,所以设置为false,代表不想注册中心注册自己
    eureka.client.fetch-registry=false  --由于注册中心的职责就是维护服务实例,它并不需要检索服务,所以也设置为false
    eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
  4、启动项目访问:http://localhost:1111

技术分享图片

 



注册服务提供者
  把一个springBoot应用加入Eureka的服务治理体系中去
1、新建一个module
2、加入
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
3、在启动类上加上@EnableEurekaClient注解
4、添加配置文件
spring.application.name=hello-service
eureka.client.service-url.defaultZone=http://localhost:1111/eureka/

技术分享图片

 


高可用注册中心
  在Eureka的服务治理设计中,所有节点既是服务提供方,也是服务消费方,服务注册中心也不例外。
  Eureka Server的高可用实际上就是将自己作为服务,想其他服务注册中心注册自己(相互注册)
搭建:

技术分享图片

 

有了多个注册中心之后,修改服务提供者和服务消费者:
eureka.client.service-url.defaultZone=http://localhost:1111/eureka/,http://localhost:1112/eureka/

现在已经有了服务注册中心和服务消费者,现在需要一个服务提供者。服务发现的任务由Eureka的客户端完成,服务消费的任务由Ribbon完成
和原来的hello-service基本一致,在依赖中加入
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
在配置类中加入RestTemplate,并加上@LoadBalanced用户负载均衡
最后,调用hello-service里面的服务
@Autowired
    private RestTemplate restTemplate;

    @RequestMapping("/ribbon-consumer")
    public String helloConsumer(){
        return restTemplate.getForEntity("http://hello-service/hello", String.class).getBody();
    }

启动ribbon-consumer,请求两次/ribbon-consumer,可以看到在两个控制台一次打印信息

在ribbon-consumer还能看到被调用者信息

技术分享图片


 








































以上是关于服务治理:Spring Cloud Eureka的主要内容,如果未能解决你的问题,请参考以下文章

服务治理:Spring Cloud Eureka

服务治理-Spring Cloud Eureka

基于Spring Cloud的微服务构建学习-3 服务治理:Spring Cloud Eureka

第三章 服务治理:Spring Cloud Eureka

微服务:整合 Spring cloud Eureka - 服务治理机制

Spring cloud Eureka 服务治理