码迷,mamicode.com
首页 > 编程语言 > 详细

spring-cloud: eureka之:ribbon负载均衡自定义配置(二)

时间:2018-08-16 00:38:52      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:pad   类型   localhost   rac   组件   bubuko   启动   extractor   文档   

spring-cloud: eureka之:ribbon负载均衡自定义配置(二)

有默认配置的话基本上就是轮询接口,现在我们改用自定义配置,同时支持:轮询,随机接口读取

准备工作:

1.eureka服务

2.两个user服务: 项目名:spring-cloud-user接口:7900/7901

3.两个user服务:项目名:spring-cloud-user2接口:8800/8801

4.movie服务,读取/调用user信息接口

 

eureka启动文件加入@EnableEurekaServer注解

@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {

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

 

user服务:

spring-cloud-user配置文件:

#port
server.port=7901/7900
#data
spring.jpa.generate-ddl=false
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=none
spring.datasource.platform=h2
spring.datasource.schema=classpath:schema.sql
spring.datasource.data=classpath:data.sql
spring.application.name=spring-cloud-user
#log
logging.level.root=INFO
logging.level.org.org.hibernate=INFO
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
logging.level.org.hibernate.type.descriptor.sql.BasicExtractor=TRACE
logging.level.com.muyang=debug
#eureka
eureka.client.serviceurl.defaultzone=http://localhost:8761/eureka
eureka.instance.preferIpAddress=true

 

spring-cloud-user启动文件加入@EnableEurekaClient注解

@EnableEurekaClient
@SpringBootApplication
public class BootUserApplication {

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

 

spring-cloud-user的接口文件代码

@RestController
public class UserController {

	@Autowired
	private UserRepository userRepository;
	
	@GetMapping("/simple/{id}")
	public User findById(@PathVariable Long id)
	{
		return userRepository.findOne(id);
	}
	
}

 

spring-cloud-user2的配置同上,请注意相应的端口号的修改.

 

movie服务:

新建一个testConfiguration.java配置文件,跟启动文件目录同级

然后再新建一个@interface的ExcludeFromComponentScan注解文件,作为testConfiguration.java的componetscan注解

技术分享图片

 

ExcludeFromComponentScan.java

public @interface ExcludeFromComponentScan {

}

 

TestConfiguration.java配置文件

引入componetScan,和随机接口读取

@Configuration
@ExcludeFromComponentScan
public class TestConfiguration {

	//@Autowired
	//IClientConfig config;
	
	//随机
	@Bean
	public IRule ribbonIRule()
	{
		return new RandomRule();
	}
	
}

 

Application.java启动文件

再启动文件加入,@EnableEurekaClient注解,

同时设置spring-cloud-user接口为随机读取:@RibbonClient(name = "spring-cloud-user", configuration = TestConfiguration.class)

排除不合适的组件类型:excludeFilters:指定不适合组件扫描的类型

@ComponentScan(excludeFilters = { @ComponentScan.Filter(type = FilterType.ANNOTATION, value = ExcludeFromComponentScan.class) })

@EnableEurekaClient
@SpringBootApplication
@RibbonClient(name = "spring-boot-user", configuration = TestConfiguration.class)
@ComponentScan(excludeFilters = { @ComponentScan.Filter(type = FilterType.ANNOTATION, value = ExcludeFromComponentScan.class) })
public class Application {
	
	@Bean
	@LoadBalanced
	public RestTemplate restTemplate() {
		return new RestTemplate();
	}

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

 

 

movieController.java文档

以/test为例,spring-cloud-user为随机读取接口,spring-cloud-user2位轮询读取接口

@RestController
public class MovieController {

	@Autowired
	private RestTemplate restTemplate;
	
	@Autowired
	LoadBalancerClient loadBalancerClient;
	
	@GetMapping("/movie/{id}")
	public User findById(@PathVariable Long id)
	{
		//http://localhost:7900/simple/
		return restTemplate.getForObject("http://spring-boot-user/simple/" + id, User.class);
	}
	
	
	@GetMapping("/test")
	public String testUser()
	{
		ServiceInstance serviceInstance = this.loadBalancerClient.choose("spring-boot-user");
		System.out.println("111:"+serviceInstance.getServiceId() + ":" + serviceInstance.getHost() + ":" + serviceInstance.getPort());
		
		ServiceInstance serviceInstance2 = this.loadBalancerClient.choose("spring-boot-user2");
		System.out.println("222:" + serviceInstance2.getServiceId() + ":" + serviceInstance2.getHost() + ":" + serviceInstance2.getPort());
		
		return "1";
		
	}
}

 

spring-cloud: eureka之:ribbon负载均衡自定义配置(二)

标签:pad   类型   localhost   rac   组件   bubuko   启动   extractor   文档   

原文地址:https://www.cnblogs.com/achengmu/p/9484437.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!