一、Eureka
搭建EurekaServer微服务注册中心服务端
第一步引入依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
第二步编写SpringBoot启动类添加注解:
@EnableEurekaServer/*自动装配注册中心服务端*/
第三步添加application.yml,添加下面的配置:
server:
port: 10010 #服务端口
spring:
application:
name: eurekaserver #eureka服务名称,先把自己注册到eureka上
eureka:
client:
service-url:
defaultZone: http://localhost:10010/eureka #eureka的地址信息
注册微服务到Eureka服务端
第一步在需要注册的微服务pom.xml文件中添加一下依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
第二步在该服务的yml配置文件的spring中添加一下内容:
application:
name: userservice #user服务名称
第三步在该服务的yml配置文件后面添加以下内容:
eureka:
client:
service-url:
defaultZone: http://localhost:10010/eureka #eureka的地址信息
一个服务启动多个实例
1.在Services找到启动服务的列表,在需要复制的服务右键选择Copy Configuration
2.下一步找到Environment展开
3.修改VM option 的值为:-Dserver.port=8085 (指定一个新的端口号)
使用负载均衡(服务的发现和拉取)
1.修改消费者服务的service代码
String url="http://userservice/user/"+order.getUserId();/*地址使用服务名称实现负载均衡*/
//发送http请求,实现远程调用获得User对象
User user = restTemplate.getForObject(url, User.class);
2.在消费者服务的启动类中的restTemplate方法上面加上负载均衡注解
/**
* 创建RestTemplate并注入Spring容器
* @return
*/
@Bean/*交给spring管理*/
@LoadBalanced/*负载均衡注解*/
public RestTemplate restTemplate(){
return new RestTemplate();
}
二、Ribbon负载均衡
修改负载均衡策略
1.方式一:在消费者服务的启动类中定义IRule实现方法可以修改负载均衡策略(作用范围是本服务消费所有的服务都生效)
@Bean
public IRule randomRule(){
return new RandomRule();/*将负载均衡的策略修改为随机,默认是轮询*/
}
2.方式二:修改消费者服务的application.yml配置文件添加以下内容(只对某个指定的提供者服务生效)
#提供者服务的名称
userservice:
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #负载均衡规则
饥饿加载(项目启动的时候进行加载)
1.修改消费者服务的application.yml配置文件添加以下内容
ribbon:
eager-load:
enabled: true #开启饥饿加载
clients: #指定饥饿加载的服务名称,可以指定多个服务
- userservice