38.SpringCloud—注册中心(eureka/nacos)、负载均衡Ribbon

目录

一、SpringCloud。

(1)认识微服务。

(1.1)单体架构与分布式架构(微服务)。

(1.2)微服务技术对比。

(1.3)SpringCloud。

(2)服务拆分及远程调用。

(2.1)服务拆分。

(2.2)远程调用。

(3)提供者与消费者。

(4)Eureka注册中心。

(4.1)Eureka的作用。 

(4.2)搭建注册中心 。

(4.3)服务注册。

(4.4)服务发现。

(4.5)Eureka注册中心总结。

(5)Ribbon负载均衡。

(5.1)负载均衡流程。

(5.2)负载均衡策略。

(5.3)修改负载均衡规则(两种方式)。

(5.4)饥饿加载(负载均衡默认:懒加载)。

(5.5)总结。

(6)Nacos注册中心。

(6.1)安装Nacos并登录(windows版)。

(6.2)服务注册(将服务注册到nacos中)。

(6.3)Nacos服务分级存储模型。

(6.4)服务集群属性(为服务设置集群名称)。

(6.5)根据集群负载均衡。

(6.6)根据权重负载均衡。

(6.7)Nacos环境隔离(根据namespace隔离)。

(6.8)临时实例和非临时实例。

(6.9)Nacos与Eureka的区别。


一、SpringCloud。

(1)认识微服务。

(1.1)单体架构与分布式架构(微服务)。

38.SpringCloud—注册中心(eureka/nacos)、负载均衡Ribbon_第1张图片

(1.2)微服务技术对比。

38.SpringCloud—注册中心(eureka/nacos)、负载均衡Ribbon_第2张图片

(1.3)SpringCloud。

38.SpringCloud—注册中心(eureka/nacos)、负载均衡Ribbon_第3张图片

(2)服务拆分及远程调用。

(2.1)服务拆分。

 

38.SpringCloud—注册中心(eureka/nacos)、负载均衡Ribbon_第4张图片

(2.2)远程调用。

38.SpringCloud—注册中心(eureka/nacos)、负载均衡Ribbon_第5张图片

(3)提供者与消费者。

38.SpringCloud—注册中心(eureka/nacos)、负载均衡Ribbon_第6张图片

(4)Eureka注册中心。

(4.1)Eureka的作用。 

38.SpringCloud—注册中心(eureka/nacos)、负载均衡Ribbon_第7张图片

(4.2)搭建注册中心 。

eureka注册中心服务端坐标: 

        
            
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-server
        

添加启动eureka的注解:

@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class,args);
    }
}

配置eureka的服务名称及服务地址(其实就是将eureka服务注册到注册中心): 

server:
  port: 10086 # 服务端口
spring:
  application:
    name: eurekaserver # eureka的服务名称
eureka:  # 如果启动这个微服务出现错误(访问http://localhost:10086/发现这个没有实例注册到服务注册)
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka

38.SpringCloud—注册中心(eureka/nacos)、负载均衡Ribbon_第8张图片

(4.3)服务注册。

eureka注册中心客户端坐标:  

        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
        

给服务起名字,并且将服务注册到注册中心:

当服务实例向 Eureka 服务注册中心注册时,也需要指定该注册中心的根路径/eureka。

如果您使用的是默认的 Eureka 服务注册中心,则应该将注册 URL 设为 http://注册中心的IP地址:注册中心的端口号/eureka。 

server:
  port: 8080
spring:
  application:
    name: orderservice # order服务的服务名称
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka/

查看是否注册到注册中心:

http://localhost:10086/访问:http://localhost:10086/

说明:localhost为eureka的ip地址,而10086则为eureka的端口。

(4.4)服务发现。

//2.1:url地址
原本URL:String url = "http://localhost:8081/user/" + order.getUserId();
注册后的URL:String url = "http://userservice/user/" + order.getUserId();

注意:userservice是服务的名称。这是在4.3中定义的配置。

@LoadBalanced:使用负载均衡 

@MapperScan("cn.itcast.order.mapper")
@SpringBootApplication
public class OrderApplication {
    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class, args);
    }
    @LoadBalanced
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

38.SpringCloud—注册中心(eureka/nacos)、负载均衡Ribbon_第9张图片

(4.5)Eureka注册中心总结。

38.SpringCloud—注册中心(eureka/nacos)、负载均衡Ribbon_第10张图片

(5)Ribbon负载均衡。

(5.1)负载均衡流程。

38.SpringCloud—注册中心(eureka/nacos)、负载均衡Ribbon_第11张图片

(5.2)负载均衡策略。

38.SpringCloud—注册中心(eureka/nacos)、负载均衡Ribbon_第12张图片

(5.3)修改负载均衡规则(两种方式)。

代码方式:全局配置,该服务远程访问其他服务都用这种策略。

配置方式: 局部配置,指定远程访问其他服务,它的使用规则。(单个服务)

userservice: #这个是服务名称,没有提示
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则

38.SpringCloud—注册中心(eureka/nacos)、负载均衡Ribbon_第13张图片

(5.4)饥饿加载(负载均衡默认:懒加载)。

指定一个服务:
ribbon:
  eager-load:
    enabled: true # 开启饥饿加载
    clients: userservice # 指定饥饿加载的服务名称
指定多个服务:
ribbon:
  eager-load:
    enabled: true # 开启饥饿加载
    clients:  # 指定饥饿加载的服务名称(指定服务超过一个时的写法)
      - userservice
      - myservice
      - youservice
      - orservice

38.SpringCloud—注册中心(eureka/nacos)、负载均衡Ribbon_第14张图片

(5.5)总结。

38.SpringCloud—注册中心(eureka/nacos)、负载均衡Ribbon_第15张图片

(6)Nacos注册中心。

(6.1)安装Nacos并登录(windows版)。

Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高 。

在Nacos的GitHub页面,提供有下载链接,可以下载编译好的Nacos服务端或者源代码:

GitHub主页:https://github.com/alibaba/nacos

GitHub的Release下载页:Releases · alibaba/nacos · GitHub

1、下载安装包后,解压就可以了。 

38.SpringCloud—注册中心(eureka/nacos)、负载均衡Ribbon_第16张图片

 打开cmd命令行:进入bin目录启动nacos

 startup.cmd -m standalone

在浏览器输入下面的地址进行登录nacos:账户与密码默认为nacos

http://127.0.0.1:8848/nacos

(6.2)服务注册(将服务注册到nacos中)。

注意:除了依赖和注册到nacos的地址,其它跟eureka一样使用(如负载均衡、服务发现

1、导入nacos依赖管理、导入nacos依赖(替代掉eureka)。

1.1先导入nacos依赖管理。

作用:写了这个之后,导入nacos依赖后不需要写版本(这里就是定义版本) 


    
        
        
            com.alibaba.cloud
            spring-cloud-alibaba-dependencies
            2.2.5.RELEASE
            pom
            import
        
    

1.2导入nacos依赖。

    
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        

 2、添加nacos注册中心地址(替代掉eureka)。

作用:因为这个服务需要加到注册中心,所以需要写注册中心的地址。

spring:
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos服务地址

38.SpringCloud—注册中心(eureka/nacos)、负载均衡Ribbon_第17张图片

(6.3)Nacos服务分级存储模型。

服务调用尽可能选择本地集群的服务,跨集群调用延迟较高 本地集群不可访问时,再去访问其它集群。

38.SpringCloud—注册中心(eureka/nacos)、负载均衡Ribbon_第18张图片

(6.4)服务集群属性(为服务设置集群名称)。

spring:
  application:
    name: userservice
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos服务地址
      discovery:
        cluster-name: HZ # 集群名称,这里HZ代指杭州

38.SpringCloud—注册中心(eureka/nacos)、负载均衡Ribbon_第19张图片

(6.5)根据集群负载均衡。

38.SpringCloud—注册中心(eureka/nacos)、负载均衡Ribbon_第20张图片

(6.6)根据权重负载均衡。

注意:先找到集群的实例(使用集群规则),然后根据权重进行负载均衡(与集群不冲突) 

权重值:设置到10000也生效(实测) 

38.SpringCloud—注册中心(eureka/nacos)、负载均衡Ribbon_第21张图片

(6.7)Nacos环境隔离(根据namespace隔离)。

1、添加命名空间。(在nacos控制台(登录的地方)添加命名空间)

2、配置服务所属命名空间。(在配置文件中选择要添加到哪个命名空间中 )

注意:a服务想要远程调用其他服务,只能从注册中心获取a服务命名空间的服务。

(6.8)临时实例和非临时实例。

38.SpringCloud—注册中心(eureka/nacos)、负载均衡Ribbon_第22张图片

(6.9)Nacos与Eureka的区别。

获取服务:

eureka:pull(拉取)

nacos:pull(拉取)、push(主动推送)

监测服务健康状态:

 eureka:心跳模式

nacos:心跳模式、主动监测模式


38.SpringCloud—注册中心(eureka/nacos)、负载均衡Ribbon_第23张图片

 

你可能感兴趣的:(web技术,spring,cloud,spring,java)