java进阶(2)之Eureka集群配置以及Ribbon负载均衡浅析

本文是基于上一篇Euraka和Feign的结合使用来的,请先看下上一篇的内容。

Eureka集群配置

先对eureka-feign进行build,生成jar在这里插入图片描述
然后在命令行的两个窗口分别执行:

java12 -Dserver.port=8761 -Deureka.instance.hostname=peer1 -Deureka.server.responseCacheUpdateIntervalMs=3000 -Deureka.server.eviction-interval-timer-in-ms=3000 -Deureka.instance.leaseRenewalIntervalInSeconds=3 -Deureka.instance.leaseExpirationDurationInSeconds=9 -Deureka.client.service-url.defaultZone=http://peer2:8762/eureka/ -jar /Users/luoxiaohui/eureka-feign-demo/eureka-feign/target/eureka-feign-0.0.1-SNAPSHOT.jar
java12 -Dserver.port=8762 -Deureka.instance.hostname=peer2 -Deureka.server.responseCacheUpdateIntervalMs=3000 -Deureka.server.eviction-interval-timer-in-ms=3000 -Deureka.instance.leaseRenewalIntervalInSeconds=3 -Deureka.instance.leaseExpirationDurationInSeconds=9 -Deureka.client.service-url.defaultZone=http://peer1:8761/eureka/ -jar /Users/luoxiaohui/eureka-feign-demo/eureka-feign/target/eureka-feign-0.0.1-SNAPSHOT.jar

java12是我这边java12版本的别名,读者可以根据自己本地jdk版本进行设置。
EurekaServer自带集群配置,只需要在application.properties文件中将这两个参数设置为true:

#是否把自己注册到Eureka
eureka.client.register-with-eureka=true
#是否从Eureka获取注册信息(单Eureka为false)
eureka.client.fetch-registry=true

并对defaultZone进行互相注册:

eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

在这里插入图片描述
在这里插入图片描述

Ribbon负载均衡

默认配置

ribbon也是netflix公司出品,主要用于对Eureka的负载均衡,默认的Ribbon参数如下:

Bean TypeBean NameClass Name
IClientConfigribbonClientConfigDefaultClientConfigImpl
IRuleribbonRuleZoneAvoidanceRule
IPingribbonPingDummyPing
ServerListribbonServerListConfigurationBasedServerList
ServerListFilterribbonServerListFilterZonePreferenceServerListFilter
ILoadBalancerribbonLoadBalancerZoneAwareLoadBalancer
ServerListUpdaterribbonServerListUpdaterPollingServerListUpdater

默认配置均在org.springframework.cloud.netflix.ribbon.RibbonClientConfiguration可找到。

自定义配置

@Configuration
@Import({ PropertyPlaceholderAutoConfiguration.class, ArchaiusAutoConfiguration.class,
		UtilAutoConfiguration.class, RibbonAutoConfiguration.class, HttpClientConfiguration.class })
// tag::sample_default_ribbon_config[]
@RibbonClients(defaultConfiguration = DefaultRibbonConfig.class)
public class RibbonClientDefaultConfigurationTestsConfig {

	public static class BazServiceList extends ConfigurationBasedServerList {
		public BazServiceList(IClientConfig config) {
			super.initWithNiwsConfig(config);
		}
	}
}
@Configuration
class DefaultRibbonConfig {
	@Bean
	public IRule ribbonRule() {
		return new BestAvailableRule();
	}
	@Bean
	public IPing ribbonPing() {
		return new PingUrl();
	}
	@Bean
	public ServerList<Server> ribbonServerList(IClientConfig config) {
		return new RibbonClientDefaultConfigurationTestsConfig.BazServiceList(config);
	}

	@Bean
	public ServerListSubsetFilter serverListFilter() {
		ServerListSubsetFilter filter = new ServerListSubsetFilter();
		return filter;
	}
}

自定义配置的测试代码在org.springframework.cloud.netflix.ribbon.test.RibbonClientDefaultConfigurationTestsConfig可找到。

本人阅读源码能力有限,Eureka/Ribbon暂时告一段落,后续再啃!

参考文献

eureka缓存细节以及生产环境的最佳配置
Ribbon实现客户端侧负载均衡-自定义Ribbon配置
Working with load balancers
spring-cloud-ribbon官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值