标签:获取 control template 推荐 sim 请求方式 字符 项目 png
我们在前面创建了EreukaClient ,注解为@EnableEurekaClient
现在我们将这个client引入ribbon变成负载均衡,首先把它变为可发现的,@EnableDiscoveryClient
关于两者的区别:
SpringCLoud中的“Discovery Service”有多种实现,比如:eureka, consul, zookeeper。
1,@EnableDiscoveryClient注解是基于spring-cloud-commons依赖,并且在classpath中实现;
2,@EnableEurekaClient注解是基于spring-cloud-netflix依赖,只能为eureka作用;
如果你的classpath中添加了eureka,则它们的作用是一样的。
其实用更简单的话来说,就是如果选用的注册中心是eureka,那么就推荐@EnableEurekaClient,如果是其他的注册中心,那么推荐使用@EnableDiscoveryClient。
为了让它变成负载均衡,先创建一个兄弟服务。两者端口号,分别为8762和8763,并拥有同一个应用名称:cloud-service。
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
server:
port: 8762
spring:
application:
name: cloud-service
两者都提供一个请求接口,返回的字符串显示各自的端口号。
@RestController @RequestMapping(value = "/ribbon") public class RibbonTestApi { /** * 获取博客名称API * * @return 相关信息 */ @RequestMapping(value = "name", method = RequestMethod.GET) public String getMyBlogNameApi() { return "111111111111111"+"该服务器端口号:8762"; // or 8763 } }
Another Client:8092
接下来创建一个服务端,调用这个/ribbon/name请求。
@SpringBootApplication @EnableDiscoveryClient public class CloudRibbonApplication { private static final Logger logger = LogManager.getLogger(CloudRibbonApplication.class.getName()); public static void main(String[] args) { SpringApplication.run(CloudRibbonApplication.class, args); } /** * Spring提供的用于访问Rest服务的客户端 * @return */ @Bean @LoadBalanced RestTemplate restTemplate() { logger.info("LoadBalanced restTemplate from ribbon client"); return new RestTemplate(); } }
创建一个TestRibbonApi类:
@RestController @RequestMapping(value = "/test") public class TestRibbonApi { /** * 注入RestTemplate */ @Autowired RestTemplate restTemplate; @RequestMapping(value = "/name" ,method = RequestMethod.GET) public String testGetNameOfBlog(){ String url="http://CLOUD-SERVICE/ribbon/name"; return restTemplate.getForObject(url,String.class); } }
将它们分别启动可以看到:
访问8092这台服务器的端口可以看到
刷新一下:
1.第一次使用服务器名调用。
http://CLOUD-SERVICE/ribbon/name
2.ribbon没有特殊的gradle或maven包引入。没有spring-cloud-starter-ribbon这样子的引入,和普通client一样。重点全在 RestTemplate类 和 @LoadBalanced
RestTemplate是Spring提供的用于访问Rest服务的客户端。RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。
调用RestTemplate的默认构造函数,RestTemplate对象在底层通过使用java.net包下的实现创建HTTP 请求,可以通过使用ClientHttpRequestFactory指定不同的HTTP请求方式。
ClientHttpRequestFactory接口主要提供了两种实现方式,一种是SimpleClientHttpRequestFactory,
使用J2SE提供的方式(既java.net包提供的方式)创建底层的Http请求连接,
还有一种方式是使用HttpComponentsClientHttpRequestFactory方式,
底层使用HttpClient访问远程的Http服务,使用HttpClient可以配置连接池和证书等信息。
@LoadBalanced 注解加在RestTemplate上面,这个注解会自动构造LoadBalancerClient接口的实现类并注册到Spring容器中。
SpringCloud:ribbon项目搭建(Gradle项目)
标签:获取 control template 推荐 sim 请求方式 字符 项目 png
原文地址:https://www.cnblogs.com/bensonlim/p/10330334.html