服务治理Spring Cloud Eureka

初识Eureka

  • Spring Cloud Eureka是Spring Cloud Netflix套件的一个组件,基于Netflix Eureka做了二次开发
  • 为什么需要服务治理?微服务会越来越多,集群规模、服务位置、服务命名都会发生变化,很难通过静态配置来手工维护大量的微服务实例(想想Zookeeper是怎么配置实例的),我们需要解决微服务架构中的服务实例维护问题。
  • Eureka包含了服务端组件(注册中心)和客户端组件(生产者、消费者),也是通过心跳来更新服务

本章核心内容

  • 搭建注册中心
  • 服务注册和发现
  • Eureka的基础架构(后续)
  • Eureka的服务治理机制(后续)
  • Eureka的配置(后续)

搭建注册中心

  1. 引入依赖spring-cloud-starter-eureka-server
  2. 在SpringBoot启动类上贴上@EnableEurekaServer,表明这是一个服务注册中心
  3. 配置application.properties
    # 应用名
    spring.application.name=eureka-server
    # 主机名
    eureka.instance.hostname=peer1
    # 启动端口
    server.port=1111
    # 不向注册中心注册自己
    eureka.client.register-with-eureka=false
    # 不需要检索
    eureka.client.fetch-registry=false
    # 注册中心地址
    eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka
    # 本地调试时关闭保护机制
    eureka.server.enable-self-preservation=false
    

服务注册

创建一个生产者

  1. 引入spring-cloud-starter-eureka
  2. 在SpringBoot启动类上贴上@EnableDiscoveryClient,表明这是一个客户端
  3. 配置application.properties
    # 应用名
    spring.application.name=hello-service
    # 端口
    server.port=8081
    # 注册中心地址
    eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka
    
  4. 创建一个Controller
        @Autowired
        private DiscoveryClient discoveryClient;
        
    	/** 注意,如果是POST方式且形参是对象,那么需要在参数列表内添加@ResponseBody */
        @PostMapping("/hello")
        public String hello(String message) {
            ServiceInstance instance = discoveryClient.getLocalServiceInstance();
            logger.info("message:{}, instance:{}", message, instance.toString());
            return "Hi";
        }
    

服务注册注册成功后,控制台会输出status 204
这里写图片描述
以及注册中心显示服务实例
这里写图片描述

创建一个消费者

  1. 与服务注册的1,2,3相同,注意修改应用名和端口,区分

  2. 在启动类里注册一个Bean

        @Bean@LoadBalanced
        public RestTemplate restTemplate() {return new RestTemplate();}
    
  3. 创建一个Controller

        @Autowired
        RestTemplate restTemplate;
        
        @GetMapping("/demo")
        public String hello(String message) {
            String result = restTemplate.postForObject(
                    "http://HELLO-SERVICE/hello?message={1}",
                    "hello",
                    String.class,
                    message);
            return result;
        }
    

附:eureka实例

拓展
高可用注册中心
Eureka配置

下一篇客户端负载均衡Spring Cloud Ribbon

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

火车站卖橘子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值