SpringCloud微服务:Nacos的集群、负载均衡、环境隔离

目录

集群

在user-service的yml文件配置集群

启动服务

负载均衡

order-service配置集群

设置负载均衡

当本地集群的服务挂掉时

访问权重

环境隔离

1、Nacos服务分级存储模型
        一级是服务,例如userservice

        二级是集群,例如杭州或上海
        三级是实例,例如杭州机房的某台部署了userservice的服务器
2、如何设置实例的集群属性
        修改application.yml文件,添加
        spring.cloud.nacos.discovery.cluster-name属性即可
3、NacosRule负载均衡策略
        优先选择同集群服务实例列表
        本地集群找不到提供者,才去其它集群寻找,并且会报警告
        确定了可用实例列表后,再采用随机负载均衡挑选实例

4、实例的权重控制
      Nacos控制台可以设置实例的权重值,0~1之间

      同集群内的多个实例,权重越高被访问的频率越高

      权重设置为0则完全不会被访问

5、Nacos环境隔离
      namespace用来做环境隔离

      每个namespace都有唯一id

      不同namespace下的服务不可见

集群

在user-service的yml文件配置集群

spring:
    cloud :
        nacos:
            server-addr: localhost:8848 # nacos服务端地址
            discovery:
                cluster-name: HZ #配置集群名称,也就是机房位置
server:
  port: 8080
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/cloud_order?useSSL=false
    username: root
    password: 1234
    driver-class-name: com.mysql.jdbc.Driver
  application:
    name: orderservice #order的微服务名称
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ #集群名称
#        namespace: 8279562b-ce89-420a-b765-f8b2adfdbe49 #命名空间id
mybatis:
  type-aliases-package: cn.itcast.user.pojo
  configuration:
    map-underscore-to-camel-case: true
logging:
  level:
    cn.itcast: debug
  pattern:
    dateformat: MM-dd HH:mm:ss:SSS
#eureka:
#  client:
#    service-url: #eureka地址信息1
#      defaultZone: http://127.0.0.1:10086/eureka
userservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule #负载均衡规则:随机。范围:userservice服务
ribbon:
  eager-load:
    enabled: true #开启饥饿加载
    clients:  #指定饥饿加载的服务
      - userservice

启动服务

启动两个user-service 

把集群名改成:SH

再启动第三个user-service

在nacos提供的网址中,可以看到集群名和在集群下的服务

负载均衡

order-service配置集群

这里我们选择配置HZ

cloud:
  nacos:
    server-addr: localhost:8848
    discovery:
      cluster-name: HZ #集群名称
server:
  port: 8080
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/cloud_order?useSSL=false
    username: root
    password: 1234
    driver-class-name: com.mysql.jdbc.Driver
  application:
    name: orderservice #order的微服务名称
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ #集群名称
#        namespace: 8279562b-ce89-420a-b765-f8b2adfdbe49 #命名空间id
mybatis:
  type-aliases-package: cn.itcast.user.pojo
  configuration:
    map-underscore-to-camel-case: true
logging:
  level:
    cn.itcast: debug
  pattern:
    dateformat: MM-dd HH:mm:ss:SSS
#eureka:
#  client:
#    service-url: #eureka地址信息1
#      defaultZone: http://127.0.0.1:10086/eureka
userservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule #负载均衡规则:随机。范围:userservice服务

启动服务,并通过网页请求数据

会发现通过order-service访问的user-service是轮循的方式

设置负载均衡

在order-service中设置负载均衡的IRule为NacosRule,这个规则优先会寻找与自己同集群的服务:

userservice:
ribbon :
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule #负载均衡规则

server:
  port: 8080
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/cloud_order?useSSL=false
    username: root
    password: 1234
    driver-class-name: com.mysql.jdbc.Driver
  application:
    name: orderservice #order的微服务名称
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ #集群名称
#        namespace: 8279562b-ce89-420a-b765-f8b2adfdbe49 #命名空间id
mybatis:
  type-aliases-package: cn.itcast.user.pojo
  configuration:
    map-underscore-to-camel-case: true
logging:
  level:
    cn.itcast: debug
  pattern:
    dateformat: MM-dd HH:mm:ss:SSS
#eureka:
#  client:
#    service-url: #eureka地址信息1
#      defaultZone: http://127.0.0.1:10086/eureka
userservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule #负载均衡规则:随机。范围:userservice服务

 启动服务,并通过网页请求数据

会发现只有user1和user2会访问数据,因为他们是本地集群(与order一样的集群)。并且它们两个会随机访问。

当本地集群的服务挂掉时

 通过网页进行访问时,仍然成功,但是order-service会出现警告,提示是通过非本地集群(user3)访问的数据。

访问权重

在nacos提供的网站中,调节同一个集群的某个服务的权重,可以改变它访问的次数。

这里改成0.1后,再进行网页的数据请求。

会发现,user2请求10次,而user1才会请求一次。这符合0.1:1的权重

当权重改为0时,将不再访问该服务

环境隔离

在nacos提供的网页中,点击命名空间,点击新建空间,但是改变环境需要再代码里修改

修改order-service的application.yml,添加namespace

spring:
datasource:
url: jdbc:mysql://localhost:3306/ heima?useSSL=falseusername: root
password: 123
driver-class-name: com.mysql.jdbc.Drivercloud :
nacos:
server-addr: localhost:8848discovery:
cluster-name: SH#上海
namespace: 492a7d5d-237b-46a1-a99a-fa8e98e4b0f9 #命名空间,填ID

server:
  port: 8080
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/cloud_order?useSSL=false
    username: root
    password: 1234
    driver-class-name: com.mysql.jdbc.Driver
  application:
    name: orderservice #order的微服务名称
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ #集群名称
        namespace: 8279562b-ce89-420a-b765-f8b2adfdbe49 #命名空间id
mybatis:
  type-aliases-package: cn.itcast.user.pojo
  configuration:
    map-underscore-to-camel-case: true
logging:
  level:
    cn.itcast: debug
  pattern:
    dateformat: MM-dd HH:mm:ss:SSS
#eureka:
#  client:
#    service-url: #eureka地址信息1
#      defaultZone: http://127.0.0.1:10086/eureka
userservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule #负载均衡规则:随机。范围:userservice服务
ribbon:
  eager-load:
    enabled: true #开启饥饿加载
    clients:  #指定饥饿加载的服务
      - userservice

运行代码后,在nacos网站观察

可以发现order-service已经不在了

点击上放的dev跳转到dev空间

可以看到order-service服务到了这个空间

这时我们再访问网页数据

发现报错

因为已经不是同一个空间了,order已经无法访问不同空间的user

代码文件点击下载icon-default.png?t=N7T8https://pan.baidu.com/s/1AzOYfkotUYA_vNNR6BlZrw?pwd=5vu5

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/154067.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【AI视野·今日Sound 声学论文速览 第三十三期】Wed, 25 Oct 2023

AI视野今日CS.Sound 声学论文速览 Wed, 25 Oct 2023 Totally 8 papers 👉上期速览✈更多精彩请移步主页 Daily Sound Papers CDSD: Chinese Dysarthria Speech Database Authors Mengyi Sun, Ming Gao, Xinchen Kang, Shiru Wang, Jun Du, Dengfeng Yao, Su Jing W…

jQuery【事件处理器、鼠标事件、表单事件、键盘事件、浏览器事件、事件对象、jQuery遍历】(三)-全面详解(学习总结---从入门到深化)

目录 事件之绑定事件处理器 事件之鼠标事件 事件之表单事件 事件之键盘事件 事件之浏览器事件 事件对象 jQuery遍历 事件之绑定事件处理器 1、 .on() 在选定的元素上绑定一个或多个事件处理函数 $("#button").on("click", function(event){console…

Android---网络编程优化

网络请求操作是一个 App 的重要组成部分,程序大多数问题都是和网络请求有关。使用 OkHttp 框架后,可以通过 EventListener 来查看一次网络请求的详细情况。一次完整的网络请求会包含以下几个步骤。 也就是说,一次网络请求的操作是从 DNS 解析…

第四代智能井盖传感器:万宾科技智能井盖位移监测方式一览

现在城市化水平不断提高,每个城市的井盖遍布在城市的街道上,是否能够实现常态化和系统化的管理,反映了一个城市治理现代化水平。而且近些年来住建部曾多次要求全国各个城市加强相关的井盖管理工作,作为基础设施重要的一个组成部分…

Python windows安装Python3环境

程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一份大厂面试资料《史上最全大厂面试题》,Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等 …

Vue3 自定义hook函数

这个hook函数并不是Vue3 自带的,而是为了方便我们书写和复用代码。 当我们在setup函数中写了很多内容过后,就会变得很乱,所以我们将实现相同功能的数据、方法和生命周期等等打包单独放在一个文件中,就会整洁很多。 例如&#xf…

Linux友人帐之网络编程基础邮件服务器与DHCP服务器

一、邮件服务器概述 1.1邮件服务基础 邮件服务器是一种计算机程序,它通过电子邮件协议接收、存储、处理和发送电子邮件。邮件服务器可以与电子邮件客户端程序(如Outlook、Thunderbird等)或Web邮件界面(如Gmail、Outlook.com等&am…

操作系统OS/存储管理/内存管理/内存管理的主要功能_基本原理_要求

基本概念 内存管理的主要功能/基本原理/要求 **内存管理的主要功能: ** 内存空间的分配与回收。由操作系统完成主存储器空间的分配和管理,使程序员摆脱存储分配的麻烦,提高编程效率。地址转换。在多道程序环境下,程序中的逻辑地…

数字档案室建设评价

数字档案室建设评价应考虑以下几个方面: 1. 安全性:数字档案室的主要目的是确保档案资料的安全性。评价应考虑数字档案室的物理安全性、防火措施、保密措施、网络安全等方面。 2. 可访问性:数字档案室应该易于访问和使用。评价应考虑数字档案…

OCC教学:预备基础

预备基础:1.概览 什么是Open CASCADE Technology? Open CASCADE Technology (OCCT) 是一个功能强大的开源 C 库,由数千个类组 成,并提供以下领域的解决方案: 表面和实体建模:对任何对象进行建模。3D 和 …

制造业数据标准化的优势分析

之前我们介绍过>>数据驱动工作效率提升的5个层次——以PreMaint设备数字化平台为例,这次我们将深入分析数据标准化在制造业中的优势。 从持续的供应链中断和疯狂的通货膨胀,到日益昂贵和难以采购的原材料,制造企业正面对越来越多的挑战…

APM/PX4/betaflight/inav开源飞控之IMU方向

APM/PX4/betaflight/inav开源飞控之IMU方向 1. 源由2. 坐标系2.1 APM/PX4:机体坐标 右手系规则2.2 betaflight/inav:xEast-yNorth-zUp yaw反向 右手系规则 3. 转向定义3.1 APM/PX43.2 betaflight/inav 4. 实例4.1 I C M 42688 P ICM42688P ICM42688P…

把jar包打到本地仓库然后上传到私服

1.首先把需要打成maven的包放到本地 2.然后本地配置maven的环境变量 没有配置的话可以看看下面这个,教程很详细 Windows系统配置maven环境_windows配置maven环境变量-CSDN博客 3.WinR cmd 输入如下的指令: mvn install:install-file -Dfile.\device…

unity shaderGraph实例-扫描效果

文章目录 效果展示整体结构各区域内容区域1区域2区域3区域4区域5区域6GraphSetttings注意事项使用方法 效果展示 整体结构 各区域内容 区域1 用场景深度减去顶点的View空间的视野深度(Z值),这里Z值需要乘-1是因为从相机看到的物体顶点的视野…

Kontakt Factory Library 2(Kontakt原厂音色库2)

Kontakt Factory Library 2是一款由Native Instruments开发的音乐采样库。它是Kontakt采样器软件的官方库之一,提供了丰富的音色和音乐资源,可用于制作各种类型的音乐。 Kontakt Factory Library 2包含了数千个高质量的乐器采样,涵盖了各种乐…

不会英语能学编程吗?0基础学编程什么软件好?

不会英语能学编程吗?0基础学编程什么软件好? 给大家分享一款中文编程工具,零基础轻松学编程,不需英语基础,编程工具可下载。 这款工具不但可以连接部分硬件,而且可以开发大型的软件,象如图这个…

【数据分享】1961—2022年全国范围的逐日降水栅格数据

降水数据是我们在各项研究中最常用的气象指标之一!之前我们给大家分享过来源于国家青藏高原科学数据中心发布的1901-2022年1km分辨率逐月降水栅格数据以及1901-2022年1km分辨率逐年降水栅格数据(均可戳我跳转)!很多小伙伴拿到数据…

OpenCV基础应用(4)— 如何改变图像的透明度

前言:Hello大家好,我是小哥谈。本节课就手把手教你如何改变图像的透明度,希望大家学习之后能够有所收获~!🌈 目录 🚀1.技术介绍 🚀2.实现代码 🚀1.技术介绍 改变图像透明度的实…

Linux C 线程间同步机制

线程间同步机制 概述保护机制互斥锁创建互斥锁  pthread_mutex_init加锁  pthread_mutex_lock解锁  pthread_mutex_unlock删除锁  pthread_mutex_destroy 条件变量创建条件变量  pthread_cond_init激活条件变量  pthread_cond_signal等待条件变量  pthread_cond_…

媒体行业的3D建模:在影视中创造特效纹理

在线工具推荐: 三维数字孪生场景工具 - GLTF/GLB在线编辑器 - Three.js AI自动纹理化开发 - YOLO 虚幻合成数据生成器 - 3D模型在线转换 - 3D模型预览图生成服务 在本文中,我们将探讨 3D 建模在媒体行业中的作用,特别是它在影视特效创作…