一、博客背景
本篇博客是搭建一个基于ribbon组件的服务调用的微服务,调用上一篇博客中写的数据服务做数据展示
二、新建ribbon子模块
三、修改pom文件
与上篇博客一样,pom文件中只需引入eureka-client依赖,spring-boot-starter-web依赖
spring-cloud-starter-netflix-eureka-client 表示这是个 eureka 客户端。
spring-boot-starter-web: 表示这是个web服务,会提供控制层
四、新建启动类
相比数据服务的启动类,ribbon服务的启动类,多了个 RestTemplate,用 restTemplate 这个工具来做负载均衡
package tp;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
/**
* @Package: com.tp
* @ClassName: RibbonServerApplication
* @Author: tanp
* @Description: ${description}
* @Date: 2020/7/20 15:46
*/
@SpringBootApplication
@EnableEurekaClient
public class RibbonServerApplication {
public static void main(String[] args) {
SpringApplication.run(RibbonServerApplication.class,args);
}
@Bean
// 标注此注解后,RestTemplate就具有了客户端负载均衡能力
@LoadBalanced
RestTemplate restTemplate() {
//用 restTemplate 请求数据服务
return new RestTemplate();
}
}
五、新建controller
在controller中直接通过restTemplate调用数据微服务
package tp;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import java.util.List;
/**
* @Package: com.tp
* @ClassName: ShowDataController
* @Author: tanp
* @Description: ${description}
* @Date: 2020/7/20 15:50
*/
@RestController
public class ShowDataController {
@Autowired
RestTemplate restTemplate;
@RequestMapping("/getdatas")
public List<String> listData() {
//data-server为数据服务的服务名,这样spring cloud便可以通过服务名查询到我们需要调用的服务
return restTemplate.getForObject("http://data-server/datas", List.class);
}
}
六、新建yml文件
spring:
application:
name: ribbon-server
server:
port: 8686
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8689/eureka/
七、启动项目并访问
启动后,首先可以发现注册中心中已经多了ribbon的微服务
然后访问http://127.0.0.1:8686/getdatas
从上面的图中可以看到,我们已经成功的调用了数据数据,并且是轮询访问两个数据服务,想要了解轮询机制的同学,可以额外去了相关知识