您现在的位置是:首页 > 正文

SpringCloud(一)注册中心

2024-04-01 02:27:27阅读 4

eureka

在这里插入图片描述
在这里插入图片描述

服务端

  1. 依赖
<!--        eureka注册中心服务端依赖-->
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>
  1. 配置项
server:
  port: 10086


spring:
  application:
    name: eurekaserver

eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka
  1. 启动项
@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class,args);
    }
}

客户端

  1. 依赖
<!--        eureka注册中心客户端依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
  1. 配置项
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka/

负载均衡

消费者该如何获取服务提供者具体信息?

  1. 服务提供者启动时向eureka注册自己的信息
  2. eureka保存这些信息
  3. 消费者根据服务名称向eureka拉取提供者信息

如果有多个服务提供者,消费者该如何选择

  1. 服务消费者利用负载均衡算法,从服务列表中挑选一个

消费者如何感知服务提供者健康状态?

  1. 服务提供者会每隔30秒向EurekaServer发送心跳请求,报告健康状态
  2. eureka会更新记录服务列表信息,心跳不正常会被剔除
  3. 消费者就可以拉取到最新的信息

nacos

在这里插入图片描述

在项目父依赖文件中引入

<!--            nacos依赖-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.5.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

服务端

  1. 服务端启动:nacos安装目录bin文件夹下,打开命令窗口:startup.cmd -m standalone
  2. 端口修改:修改nacos安装目录conf中的application.properties中的server.port

客户端

  1. 引入依赖
        <!--        nacos注册中心依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
  1. 配置项
spring:
  cloud:
    #nacos端口配置
    nacos:
      server-addr: localhost:8840

nacos分级存储模型

服务->集群->实例

配置集群属性

  1. 修改服务生产者配置文件
spring:
  cloud:
    #nacos端口配置
    nacos:
      server-addr: localhost:8840
      discovery: #集群属性
        cluster-name: HZ
  1. 优先访问集群:修改消费者者配置文件,同时修改负载均衡规则为:com.alibaba.cloud.nacos.ribbon.NacosRule
spring:
  cloud:
    #nacos端口配置
    nacos:
      server-addr: localhost:8840
      discovery:
        cluster-name: HZ #集群名称
  1. 设置负载均衡权重(nacos特有)

在这里插入图片描述

nacos环境隔离-namespace

nacos中服务存储和数据存储最外层都是namespace的东西,用来做最外层隔离
概念

  1. namespace用来做环境隔离
  2. 每个namespace都有唯一id
  3. 不同namespace下的服务不可见

实现:
4. 在nacos控制台命名空间中可以创建namespace,用来隔离不同环境
5. 修改消费者的application.yml配置,添加namespace

spring:
	cloud:
		nacos:
			discover:
				namespace: #命名空间ID

临时实例和非临时实例

spring:
	cloud:
		nacos:
			discover:
				ephemeral: false # 设置为非临时实例

Eureka和Nacos的异同

同:

  1. 支持服务注册和拉取
  2. 支持服务提供者心跳方式做健康监测

异:

  1. nacos服务端支持主动检测提供者健康状态,临时实例采取心跳模式,非临时实例采取主动检测模式
  2. Nacos临时实例心跳不正常会被剔除,非临时实例不会
  3. Nacos支持服务列表变更的消息推送模式,服务列表更新更及时
  4. Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka采用AP模式

负载均衡策略

  1. 方案一:在客户端启动类中添加
/*修改负载均衡策略写法,方案一,适用于全局*/
    @Bean
    public IRule randomRule(){
        return new RandomRule();
    }
  1. 方案二:客户端配置项中添加
#      修改负载均衡策略写法,方案二
userservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

饥饿加载


#       饥饿加载
ribbon:
  eager-load:
    enabled: true # 开启饥饿加载
    clients:
    - userservice #指定饥饿加载名称,是数组
    #    - xxxxservice
    #    - xxxxservice
    #    - xxxxservice

在这里插入图片描述

网站文章

  • 【js前台获取服务器控件RadComboBox的值】

    【js前台获取服务器控件RadComboBox的值】

    js前台获取服务器控件 RadComboBox的选中项(文本和值)服务器控件<telerik:RadComboBox ID="ddlMine" AutoPostBack="true" Enabled=...

    2024-04-01 02:27:19
  • IDEA控制台中文乱码

    IDEA控制台中文乱码

    IDEA控制台中文乱码解决方案步骤:关键在第4部,传统的javaweb项目需要重点关注,进行修改。步骤1:检查IDEA的设置步骤2:设置VM参数[-Dfile.encoding=UTF-8]步骤3:IDEA的配置文件中设置参数步骤4:修改Tomcat的日志配置参数提示 :部分系统和软件设置编码为UTF-8任然无效的话,可以尝试将第二步以后的编码设置为GBK即可解决问题。...

    2024-04-01 02:27:12
  • 水晶报表VS2008使用

    两种模式:PUSH,PULL,简单的说就是将字段确定好,具体的见:http://wenku.baidu.com/link?url=a4UND7yk_-q3gJklb0tMUh2KNxmQEuZPYsMB7JEnw-9yylITD0vLxKBWbe7CuWqo1WOHhQi6-ybpIhNYLHHuDXy4j1lPDqSmTRcE2NYFASq讲的很好,先要保证数据库能连接。

    2024-04-01 02:26:31
  • Java02 变量和运算符

    Java02 变量和运算符

    Java代码的基本格式-变量和运算符

    2024-04-01 02:26:23
  • (译)Effective Kotlin系列之遇到多个构造器参数要考虑使用Builder(二)

    (译)Effective Kotlin系列之遇到多个构造器参数要考虑使用Builder(二)

    翻译说明: 原标题: Effective Java in Kotlin, item 2: Consider a builder when faced with many constructor par...

    2024-04-01 02:26:15
  • Transformers from an Optimization Perspective

    Transformers from an Optimization Perspective

    Transformers from an Optimization Perspective

    2024-04-01 02:26:07
  • SpringBoot

    SpringBoot

    Spring 的诞生是为了简化 Java 程序的开发的,而 Spring Boot 的诞生是为了简化 Spring 程序开发的。Spring Boot 就是 Spring 框架的脚手架,它就是为了快速...

    2024-04-01 02:25:25
  • 项目阶段一:用户注册和登陆

    项目阶段一:用户注册和登陆

    项目阶段一:用户注册和登陆的实现。 需求 1:用户注册 需求如下: 1)访问注册页面 2)填写注册信息,提交给服务器 3)服务器应该保存用户 4)当用户已经存在----提示用户注册 失败,用户名已存在...

    2024-04-01 02:25:19
  • 浅析ARMv8体系结构:异常处理机制

    浅析ARMv8体系结构:异常处理机制

    异常处理指的是处理器在运行过程中发生了外部事件,导致处理器需要中断当前执行流程转而去处理异常事件的一种机制。在Intel处理器的术语中,中断与异常被分开来描述,但在ARMv8体系结构中,异常和中断统一被称为异常处理。

    2024-04-01 02:24:34
  • Python-pyinstaller:No such file or directory 解决方案

    Python-pyinstaller:No such file or directory 解决方案

    Python-pyinstaller:No such file or directory 解决方案

    2024-04-01 02:24:27