SpringCloud学习第一天---Eureka和Nacos注册中心

SpringCloud学习第一天

一、微服务远程调用方式(RestTemplate)

更详细的对于RestTemplate的说明参考这篇博客
基本使用流程如下:

1、将RestTemplate注册成bean使用
@Configuration
public class RestTemplateConfig {
    @Bean
    @LoadBalanced  // 负载均衡
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
    //Todo 将负载均衡策略改为随机  全局修改了
//    @Bean
//    public IRule randomRule(){
//        return new RandomRule();
//    }

//    @Bean
//    public IRule nacosRule(){
//        return new NacosRule();
//    }
}
2、远程调用
  public Order queryOrderById(Long orderId) {
        // 1.查询订单
        Order order = orderMapper.findById(orderId);
        // 2、查询订单相关用户
        User user = restTemplate.getForObject("http://localhost:8081/user/" + order.getUserId(), User.class);
        order.setUser(user);     
        // 4.返回
        return order;
    }
3、微服务远程调用基本概念

一个服务,他即可能是服务提供者,也可能是服务消费者。
提供者和消费者

二、负载均衡过程

负载均衡基本流程
首先服务方需要完成注册,这样才可以在负载均衡时查询到所需要的服务具体地址,注册中心也会通过心跳检测注册的服务有没有挂掉,进行健康监控。
负载均衡基本流程
服务消费者请求来了之后,触发拦截器,获取其服务id,通过服务id去注册中心获取对应服务,在通过负载均衡策略,选择某个服务,与uri获取完整url路径发送请求。

三、Eureka注册中心

Eureka注册中心作用
在这里插入图片描述

1、构建Eureka服务端
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    <version>2.2.6.RELEASE</version>
</dependency>

可以复制上文,也可以直接上Maven repository查询所需要的版本

2、@EnableEurekaService开启服务,RestTemplate添加负载均衡@LoadBalance注释
3、配置application.yml文件
spring: #配置服务名称
  application:
    name: eurekaServer
eureka:
  client:
    service-url:  #配置eureka地址信息
      defaultZone: http://127.0.0.1:10086/eureka
4、构建Eureka客户端

与上述相同,在需要注册的微服务模块导入client模块,是指相应的服务名称,在发送请求的时候服务名称即为上述的服务id,注册中心以此来搜索对应的注册服务。
具体使用:
在这里插入图片描述

四、Nacos注册中心

1、与Eureka注册中心对比

个人感觉Nacos注册中心更加强大,有单独的客户端对注册服务进行管理,这里就不说怎么配置了,可以自己搜索安装Nacos。
1、相较于Eureka,Nacos有临时实例(默认)非临时实例,对于临时实例Nacos和Eureka一样通过心跳检测判断服务有没有宕机。而对于非临时实例,Nacos会主动询问检测服务是否宕机,速度要更快,并且检测到了也不会注销服务,只是将服务下线,下次服务启动时会在此开启。
2、Nacos有NacosRule负载均衡策略,可以设置就近集群服务,服务可以更迅速。

2、Nacos使用
  # 配置nacos服务器地址
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ
 userService:
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule  
    # NacosRule负载均衡策略,这个策略会优先选择同集群的服务

在这里插入图片描述
具体的使用逻辑是一样的


    public Order queryOrderById(Long orderId) {
        // 1.查询订单
        Order order = orderMapper.findById(orderId);
        // 2、查询订单相关用户
//        User user = restTemplate.getForObject("http://localhost:8081/user/" + order.getUserId(), User.class);
//        order.setUser(user);
        // 3、注册拉取
        String url = "http://userService/user/" + order.getUserId();
        User user = restTemplate.getForObject(url, User.class);
        order.setUser(user);
        // 4.返回
        return order;
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值