javascript
springcloud教程-尊龙游戏旗舰厅官网
文章目录
- 一、ribbon介绍
- 二、启动两个实例
- 三、建一个服务消费者(ribbon)
- 四、 ribbon调用总结
代码地址:github-spring-cloud地址
前言:在上一篇文章,讲了服务的注册和发现。在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于http
restful的。spring
cloud有两种服务调用方式,一种是ribbon resttemplate,另一种是feign。在这一篇文章首先讲解下ribbon rest。
一、ribbon介绍
官方文档简介
ribbon is a client side load balancer which gives you a lot of control over the behaviour of http and tcp clients. feign already uses ribbon, so if you are using @feignclient then this section also applies.
ribbon是客户端负载平衡器,它使您可以对http和tcp客户端的行为进行大量控制。
feign已经使用了ribbon,因此如果您使用@feignclient,则本节也适用。
ribbon是一个负载均衡客户端,可以很好的控制htt和tcp的一些行为。feign默认集成了ribbon。
二、启动两个实例
这篇文章基于上一篇文章启动eureka-server 工程;启动service-hello工程,它的端口为8081;将service-hello的配置文件的端口改为8083,并启动:service-hello在eureka-server注册了2个实例,这就相当于一个小的集群。
三、建一个服务消费者(ribbon)
新建一个工程server-ribbon,引入pom文件
<?xml version="1.0" encoding="utf-8"?> <project xmlns="http://maven.apache.org/pom/4.0.0"xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactid>spring-cloud-learn</artifactid><groupid>com.sl.learn.cloud</groupid><version>1.0-snapshot</version><relativepath>..</relativepath></parent><modelversion>4.0.0</modelversion><groupid>com.sl.learn.cloud</groupid><artifactid>server-ribbon</artifactid><version>1.0-snapshot</version><dependencies><dependency><groupid>org.springframework.cloud</groupid><artifactid>spring-cloud-starter-netflix-eureka-client</artifactid></dependency><dependency><groupid>org.springframework.boot</groupid><artifactid>spring-boot-starter-web</artifactid></dependency><dependency><groupid>org.springframework.boot</groupid><artifactid>spring-boot-starter-actuator</artifactid></dependency><dependency><groupid>org.springframework.cloud</groupid><artifactid>spring-cloud-starter-netflix-ribbon</artifactid></dependency></dependencies></project>修改配置文件
server:port: 8082spring:application:name: server-ribboneureka:client:serviceurl:defaultzone: http://localhost:8080/eureka/management:endpoints:web:exposure:include: '*'endpoint:health:show-details: alwaysshutdown:enabled: true在工程的启动类中,通过@enablediscoveryclient向服务中心注册;注入一个bean: resttemplate;并通过@loadbalanced注解表明这个restremplate开启负载均衡的功能。
package com.sl.cloud.learn;import org.springframework.boot.springapplication; import org.springframework.boot.autoconfigure.springbootapplication; import org.springframework.cloud.client.discovery.enablediscoveryclient; import org.springframework.cloud.client.loadbalancer.loadbalanced; import org.springframework.context.annotation.bean; import org.springframework.web.client.resttemplate;/*** @author shuliangzhao* @title: serverribbonapplication* @projectname spring-cloud-learn* @description: todo* @date 2019/11/24 15:59*/ @springbootapplication @enablediscoveryclient public class serverribbonapplication {public static void main(string[] args) {springapplication.run( serverribbonapplication.class, args );}@bean@loadbalancedresttemplate resttemplate() {`在这里插入代码片`return new resttemplate();}}写一个测试类helloservice
@service public class helloservice {@autowiredprivate resttemplate resttemplate;public string helloservice(string name) {return resttemplate.getforobject("http://eureka-hello/hi?name="name,string.class);} }写一个controller调用类
@restcontroller public class hellocontroller {@autowiredprivate helloservice helloservice;@getmapping(value = "/hi")public string helloservice(string name) {return helloservice.helloservice(name);}}在浏览器上多次访问http://localhost:8082/hi?name=zhansan,浏览器交替显示
hi zhansan ,my port is:8083
hi zhansan ,my port is:8081
四、 ribbon调用总结
服务注册中心,eureka server,端口为8080
eureka-hello工程跑了两个实例,端口分别为8081,8983,分别向服务注册中心注册
sercvice-ribbon端口为8082,向服务注册中心注册
当sercvice-ribbon通过resttemplate调用eureka-hello的hi接口时,因为用ribbon进行了负载均衡,会轮流的调用eureka-hello:8081,8983 两个端口的hi接口;
总结
以上是尊龙游戏旗舰厅官网为你收集整理的springcloud教程- 服务消费者(rest ribbon)(springcloud版本finchley)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇:
- 下一篇: durid数据库连接池设置connect