Spring Cloud Eureka 单节点配置 服务提供者消费者Ribbon、Hystrix Demo

本文详细介绍如何使用Spring Boot和Eureka构建微服务架构,包括创建注册中心、服务提供者和服务消费者,实现服务发现、负载均衡及熔断机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建父工程parent

注册中心 Eureka

单节点 创建子项目spring initiater ——》Eureka Server

启动类添加


@EnableEurekaServer

配置文件

添加认证security后需要在defaultUrl添加认证信息

server:
  port: 8888
spring:
  application:
    name: eureka-server-center
#  security:
#    basic:
#      enable:true
#    user:
#      name: root
#      password: 842234092
eureka:
  instance:
    hostname: eureka-server
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      defaultZone: http://eureka-server:8888/eureka/
#  server:
#    enable-self-preservation: false

单节点启动

 服务提供者 Eureka Client

创建子项目 spring initiater ——》Eureka Client

启动类添加注解

@EnableEurekaClient
@ComponentScan(basePackages = {"com.wxl"})

创建服务提供接口,Rest服务调用所以需要使用SpringMVC

@RestController
public class ProviderController {


    @RequestMapping(value = "/learn" , method = RequestMethod.GET)
    public String learnService(){

        return "成功访问服务";
    }
}

配置文件,当注册中心使用认证的话,需要在defaultZone添加认证信息

server:
  port: 8081
spring:
  application:
    name: provider
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8888/eureka/
    register-with-eureka: true
    fetch-registry: true

重复以上操作,修改接口返回信息,提供两个相同服务,以便后面测试服务调用负载均衡

启动服务提供者

 测试两个服务通信

                         

服务消费者 Ribbon+RestTemplate 负载和远程调用

创建子项目 spring initiater ——》Eureka Client + Ribbon 因为服务消费者同时也能注册服务被消费

启动类添加

@EnableEurekaClient
@ComponentScan(basePackages = {"com.wxl"})

启动类中添加bean实例,以供自动注入

// 获取远程服务 的实例
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();

    }

创建消费者接口

其中url规则为http://服务名/服务提供者路由

@RestController
public class RibbonController {
    @Autowired
    RestTemplate restTemplate;

    @GetMapping("/consumer")
    public String getMsg() {
        return restTemplate.getForObject("http://provider/learn", String.class);
    }
}

配置文件,如果注册中心使用认证,defaultZone需要添加认证信息

spring:
  application:
    name: ribbon-consumer
server:
  port: 8090
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8888/eureka/
    register-with-eureka: false
    fetch-registry: true

启动ribbon消费者,测试负载,连续请求接口,访问的是不同服务提供者

                     

 Ribbon 策略配置

配置文件配置:在消费者YML中胚子和服务名


provider:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

 

使用注解自定义类配置@RibbonClient

public class MyIRule {
    @Bean
    public IRule rule() {
        return new RandomRule();
    }
}

// 在消费者启动类上添加注解
// name是服务提供者名,configuration是我们配置的负载均衡策略
@RibbonClient(name="provider",configuration = MyIRule.class)

Hystrix 熔断

调用远程服务方法上加注解

@HystrixCommand(fallbackMethod = "fallBackMethod")

并且添加返回方法

// 参数和返回值要和原方法一致
public String fallBackMethod() {
    return "出错出错";
}

在启动类中添加注解

@EnableHystrix

关闭服务,测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值