其他分享
首页 > 其他分享> > 微服务:服务注册

微服务:服务注册

作者:互联网

将一个服务注册给eureka

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
spring: 
 application:
    name: userservice #orderservice
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka

修改OrderService的代码

//原来
String url="http://localhost:8081/user/"+order.getUserId();
//现在
String url="http://userservice/user/"+order.getUserId();
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
    return new RestTemplate();
}

原理:

public <T> T execute(String serviceId, LoadBalancerRequest<T> request, Object hint)
    throws IOException {
    ILoadBalancer loadBalancer = getLoadBalancer(serviceId);//获取serviceList
    Server server = getServer(loadBalancer, hint);
    if (server == null) {
        throw new IllegalStateException("No instances available for " + serviceId);
    }
    RibbonServer ribbonServer = new RibbonServer(serviceId, server,
                                                 isSecure(server, serviceId),
                                                 serverIntrospector(serviceId).getMetadata(server));

    return execute(serviceId, ribbonServer, request);
}

自定义负载均衡策略

  1. 通过代码方式

    通过配置类,往IOC容器中添加一个IRole组件,可以将任何一个它的实现作为返回值返回。

@Bean
public IRule setIRule(){
    return new RandomRule();
}
  1. 配置文件方式(不推荐,优先级低且只能指定一个服务)
userservice: # 给某个微服务配置负载均衡规则,这里是userservice服务
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则 

rebbin的饥饿加载模式

ribbon:
  eager-load:
    enabled: true #默认值为false,为懒加载。
    clients: userservice #指定对谁进行饥饿加载
    # clients是一个List集合,如果需要对多个服务进行饥饿加载使用yaml的写法,即,
    # clients:
    #  - userservice
    #  - userservice

标签:负载,服务,server,serviceId,注册,userservice,eureka,加载
来源: https://www.cnblogs.com/Boerk/p/15938364.html