简单的Eureka负载均衡可以分为三部分
第一部分创建一个Eureka Server 端
第二部分创建俩个Eureka Client 端 生产者(两个作用是负载均衡到两个Client上)
第三部分创建一个消费者(多次请求同一个请求)
第一步创建一个Eureka Server端
1.1:application.yml配置文件
server:
port: 8081 #端口号
eureka:
server:
eviction-interval-timer-in-ms: 30000 #清理无效信息时间 30秒 * 1000毫秒
instance:
hostname: localhost #服务注册中心IP地址
appname: Eureka_Server #Eureka application 显示名称
client:
registerWithEureka: true #是否向服务注册中心注册自己 server端可以不用注册自己
fetchRegistry: false #是否检索服务
serviceUrl: #服务注册中心的配置内容,指定服务注册中心的位置
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
1.2:@EnableEurekaServer注解,作用是将当前项目设置为一个Eureka Server端
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
1.3:验证是否Server端创建成功,localhost:post 。
这里为了查看方便,我将server本身也注册了进去。
第二步:创建一个Eureka Client 端 (生产者1号)
1.1:application.yml
server:
port: 8082 #端口号
eureka:
instance:
prefer-ip-address: true #客户端在注册时使用自己的IP而不是主机名
client:
service-url:
defaultZone: http://localhost:8081/eureka/ #注册中心地址
spring:
application:
name: eureka-client #服务名称--调用的时候根据名称来调用该服务的方法
spring.application.name 作用是后期请求的时候根据这个‘服务器名称’来进行请求
1.2:随便写一个Controller 来接受请求,注意@EnableEurekaClient 含义就是字面意思 设置成Eureka Client 端
********@RestController 注解不是SpringBoot的注解 是Spirngd 注解 ************************** 就是将@Controller和@ResponseBody和在一起的作用
@RestController
@EnableEurekaClient
@SpringBootApplication
public class EurekaClientApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaClientApplication.class, args);
}
@GetMapping("/index")
public Map<String,String> index(){
Map<String, String> map = new HashMap<>();
map.put("Id","client_One_8082");
map.put("name","Eureka Client 端口号:8082");
return map;
}
}
1.3:查看注册中心 和 Controller
第三步:创建一个消费者
1.1:application.yml
eureka:
client:
serviceUrl: #注册中心的注册地址
defaultZone: http://127.0.0.1:8081/eureka/
server:
port: 8888 #服务端口号
spring:
application:
name: service-consumer #服务名称--调用的时候根据名称来调用该服务的方法
restUrl: http://eureka-client/index #请求url
1.2:RestTemplate 和Controller
1.2.1:创建一个RestTemplate 的Bean @LoadBalanced很重要
1.2.2:创建一个Controller 调取 http://eureka-client/index
@RestController
@EnableEurekaClient
@SpringBootApplication
public class EurekaConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaConsumerApplication.class, args);
}
@Autowired
private RestTemplate restTemplate;
@Value("${restUrl}")
private String restUrl;
@LoadBalanced //负载均衡
@Bean
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
@GetMapping("/index")
public Map<String,String> index() {
return restTemplate.getForObject(restUrl, Map.class);
}
}
1.3调取这个消费者的 Controller 地址,返回成功刚才第一个Client端口号8082的返回值
这样就调通了 ,剩下在创建第二个 Client的生产者,来实现负载均衡的效果就可以了,和第二部分一样这里就省去了,只需要注意的是,更改端口号,剩下配置文件都一样
两个Client
第一次请求
第二次请求