一、服务治理:Spring Cloud Eureka

2021-07-12 22:07

阅读:586

标签:img   map   cli   注解   org   turn   地址   art   image   

核心内容:

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

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

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

  eg:  

技术分享图片

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

 

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

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

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


 

搭建服务注册中心:

  1、添加依赖:




org.springframework.cloud
spring-cloud-dependencies
Finchley.SR1
pom
import


    --springboot版本和springCloud版本需要配对哟

org.springframework.cloud
spring-cloud-starter-netflix-eureka-server

  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、加入

org.springframework.cloud
spring-cloud-starter-netflix-eureka-client

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基本一致,在依赖中加入

org.springframework.cloud
spring-cloud-starter-netflix-ribbon

在配置类中加入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

标签:img   map   cli   注解   org   turn   地址   art   image   

原文地址:https://www.cnblogs.com/culture/p/9543882.html


评论


亲,登录后才可以留言!