微服务之Eureka-Server、Eureka-Client结合Ribbon负载均衡的本机简单搭建

此文章适合初学者简单搭建,更多的业务需求增加更多的配置和注解
搭建微服务项目以及pom文件就不说了,
参照 从零开始搭建微服务项目

第一步 新建Eureka Server项目

1、启动类

/**
 * 注册中心
 */

@SpringBootApplication
@EnableEurekaServer
public class ServiceEurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServiceEurekaApplication.class, args);
    }
}

2、配置文件application-eureka.yml

spring:
  application:
    name: eureka
server:
  port: 9000 (端口号自己设置,只要不冲突)
eureka:
  instance:
    hostname: eureka
  client:
    service-url:
      defaultZone: http://eureka:9000/eureka/

注意: http://eureka:9000/eureka/这个地址第一个eureka要去本机C盘下的
C:\Windows\System32\drivers\etc下面的hosts文件添加
127.0.0.1 eureka

第二步 新建Eureka Client项目(案例是service-user)

1、启动类


@SpringBootApplication
@EnableDiscoveryClient
public class ServiceUserApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServiceUserApplication.class, args);
    }
}

2、配置文件application.yml

配置多个方便测试负载均衡
application-user01.yml

spring:
  application:
    name: service-user(两个名字要一直)
server:
  port: 9002
eureka:
  client:
    service-url:
      defaultZone: http://eureka:9000/eureka/

application-user02.yml

spring:
  application:
    name: service-user(两个名字要一直)
server:
  port: 9003
eureka:
  client:
    service-url:
      defaultZone: http://eureka:9000/eureka/

3、新建个控制器controller

@RestController
public class UserController {
    @Value("${server.port}")
    private String port;

    @RequestMapping("/hi")
    public String hi(String name){
        String str="hi "+name+" 端口号为:"+port;
        return str;
    }
}

第三步 新建Eureka Ribbon Client项目

1、重写RibbonConfig 中的RestTemplate加上注解@LoadBalanced

@SpringBootApplication
@EnableEurekaClient
public class EurekaRibbonClientApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaRibbonClientApplication.class, args);
    }
}

2、重写RibbonConfig 中的RestTemplate加上注解@LoadBalanced

@Configuration
public class RibbonConfig {
    @Bean
    @LoadBalanced
    RestTemplate restTemplate(){
       return new RestTemplate();
    }
}

3、新建个控制器controller

@RestController
public class RibbonController {
    @Autowired
    private UserService userService;
    @RequestMapping("/hi")
    public String hi(String name){
        return userService.hi(name);
    }
    @Autowired
    private LoadBalancerClient loadBalancerClient;
    @RequestMapping("/testRibbon")
    public String testRibbon(){
        ServiceInstance instance = loadBalancerClient.choose("service-user");
        return instance.getHost() + ":" + instance.getPort();
    }
}

4、.新建个service


@Service
public class myService {
    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping
    public String hi(String name){
       return restTemplate.getForObject("http://service-user/hi?name=" + name, String.class);
    }
}

第四步 测试

打开浏览器输入:http://eureka:9004/hi?name=xiaowang
结果:hi xiaowang 端口号为:9002
重新加载后观察端口变化:hi xiaowang 端口号为:9002
打开浏览器输入http://eureka:9004/testRibbon 测试一样

注意:调用远程服务应该在service层,例如上面

@Service
public class myService {
    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping
    public String hi(String name){
       return restTemplate.getForObject("http://service-user/hi?name=" + name, String.class);
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值