栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringCloud之整合ribbon

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringCloud之整合ribbon

前面学习了IDEA之搭建SpringCloud项目,只是大概知道分布式的项目是什么搭建的。
分布式项目只是简单的将一个系统根据功能切割吗?
如果单个功能的服务器宕机了,那是不是只能等这个功能的服务重新启动?

如果我单个功能的服务器有多个,那不就可以在对应服务宕机的时候还能用吗?而且平时还可以分摊用户。

就好比你去银行柜台办理业务,有几个柜台能办理一样的业务,这个柜台人多,那就去其他的柜台


目录

一、ribbon的作用二、设计

2.1 注册中心2.2 服务提供者2.3 服务消费者 三、测试四、源码

一、ribbon的作用

实现负载均衡通过服务名称,消费者就能使用服务 二、设计 2.1 注册中心

这个只需要按照IDEA之搭建SpringCloud项目创建即可

2.2 服务提供者

这里为了体现负载均衡,我创建了两个服务提供者:

    使用一样的服务名称提供一样的接口去请求同一数据库数据
2.3 服务消费者
    将RestTemplate交给Spring容器管理,同时通过注解整合Ribbon使RestTemplate具备负载均衡
@SpringBootApplication
@EnableDiscoveryClient
public class DemoApplication {

    @Bean
    @LoadBalanced//添加LoadBalanced注解来整合Ribbon使其具有负载均衡的能力
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}
    RestTemplate通过服务名称去调用对应的服务
@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private RestTemplate restTemplate;//使用restTemplate请求User服务
    

    private static final String REST_URL_PREFIX ="http://SERVICE-PROVIDER-USER";

    @RequestMapping("/findAll")
    @ResponseBody
    public List queryAll() {
        String url = REST_URL_PREFIX+"/user/findAll";
        UserBean[] userBeans = restTemplate.getForObject(url,UserBean[].class);
        return Arrays.asList(userBeans);
    }
}
三、测试

将服务提供者(UserService-Provider1、UserService-Provider2)、服务消费者(UserService-Customer)注册到注册中心

通过服务消费者发起请求,系统调用了UserService-Provider1的接口

再次发起请求,系统调用了UserService-Provider2的接口

四、源码

SpringCloud整合RibbonDemo

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/778876.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号