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

news2024/11/27 12:46:01

目录

一、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)单体架构与分布式架构(微服务)。

(1.2)微服务技术对比。

(1.3)SpringCloud。

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

(2.1)服务拆分。

 

(2.2)远程调用。

(3)提供者与消费者。

(4)Eureka注册中心。

(4.1)Eureka的作用。 

(4.2)搭建注册中心 。

eureka注册中心服务端坐标: 

        <dependency>
            <!--eureka服务端-->
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>

添加启动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

(4.3)服务注册。

eureka注册中心客户端坐标:  

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

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

当服务实例向 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();
    }
}

(4.5)Eureka注册中心总结。

(5)Ribbon负载均衡。

(5.1)负载均衡流程。

(5.2)负载均衡策略。

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

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

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

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

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

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

(5.5)总结。

(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、下载安装包后,解压就可以了。 

 打开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依赖后不需要写版本(这里就是定义版本) 

<dependencyManagement>
    <dependencies>
        <!--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>
    </dependencies>
</dependencyManagement>

1.2导入nacos依赖。

    <!--nacos客户端依赖包-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(6.9)Nacos与Eureka的区别。

获取服务:

eureka:pull(拉取)

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

监测服务健康状态:

 eureka:心跳模式

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


 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux创建静态库

创建一个目录&#xff0c;比如今天是6月13号&#xff0c;就mkdir 0613(创建目录0613),然后cd 0613&#xff08;进入0613目录&#xff09; 1.创建C语言库函数文件myheight.c vi myhight.c 2.创建C语言函数文件myweight.c vi myweight.c 3.创建C语言函数文件age.c vi myage.c 4…

代码审计-Java项目JDBCMybatisHibernate注入预编译写法

文章目录 Javaweb-数据库操作-模式&写法&预编译等环境搭建JDBC 注入分析关于预编译 Mybatis 注入分析Hibernate 注入分析总结&#xff1a; Javaweb-代码审计SQL注入-INXEDU在线网校 Javaweb-数据库操作-模式&写法&预编译等 环境搭建 VulDemo审计源码百度云 在…

深入理解深度学习——Transformer:解码器(Decoder)部分

分类目录&#xff1a;《深入理解深度学习》总目录 相关文章&#xff1a; 注意力机制&#xff08;Attention Mechanism&#xff09;&#xff1a;基础知识 注意力机制&#xff08;Attention Mechanism&#xff09;&#xff1a;注意力汇聚与Nadaraya-Watson核回归 注意力机制&…

微信小程序分享到微信,公众号h5分享到微信,微信小程序跳转h5页面

一&#xff1a;微信小程序分享到微信 1&#xff1a;需求 分享微信小程序中某个详情页&#xff0c;可以分享到群&#xff0c;个人&#xff0c;朋友圈&#xff0c;好友点击分享页&#xff0c;能跳转到对应详情页阅读。 2&#xff1a;分析问题 如何实现分享&#xff1f;分享时如…

Nvidia 3060显卡 CUDA环境搭建(Ubuntu22.04+Nvidia 510+Cuda11.6+cudnn8.8)

写在前面 工作中遇到&#xff0c;简单整理理解不足小伙伴帮忙指正 对每个人而言&#xff0c;真正的职责只有一个&#xff1a;找到自我。然后在心中坚守其一生&#xff0c;全心全意&#xff0c;永不停息。所有其它的路都是不完整的&#xff0c;是人的逃避方式&#xff0c;是对大…

【踩坑记录】STC8H8K64U硬件PWM使用小结

快速导航 写在前面库配置时钟配置GPIO配置定时器配置串口配置硬件PWM特殊功能同步功能 总结 写在前面 不出意外这是我第一次也是最后一次使用STC的芯片&#xff0c;写这篇博的目的纯粹记录下前段时间调试的痛苦经历&#xff0c;所有目前打算选或是已经开始调试这款芯片的朋友&…

Ubuntu16.04部署BEVformer 实时记录

一 配置依赖 a. Create a conda virtual environment and activate it. conda create -n open-mmlab python3.8 -y conda activate open-mmlabb. Install PyTorch and torchvision following the official instructions. pip install torch1.9.1cu111 torchvision0.10.1cu11…

【Linux】面试重点:死锁和生产消费模型原理

面试要点来了~ 文章目录 前言一、死锁的一系列问题二、生产者消费者模型原理总结 前言 上一篇的互斥量原理中我们讲解了锁的原理&#xff0c;我们知道每次线程申请锁的时候一旦申请成功这个线程自己就把锁带在自己身上了&#xff0c;这就保证了锁的原子性&#xff08;因为只有…

备忘录模式(二十二)

相信自己&#xff0c;请一定要相信自己 上一章简单介绍了中介者模式(二十一), 如果没有看过, 请观看上一章 一. 备忘录模式 引用 菜鸟教程里面备忘录模式介绍: https://www.runoob.com/design-pattern/memento-pattern.html 备忘录模式&#xff08;Memento Pattern&#xff…

基于Java单位人事管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

大面积无线WIFI覆盖 H3C WX3010E(AC+PoE三层交换机)+ H3C WA2620E、WA4320无线AP +华为USG6310S防火墙

一、适用场景&#xff1a; 1、跨复杂区域覆盖WIFI。支持多房间、多栋、多层复式楼、别墅、自建房的无线WIFI覆盖。 2、强大的漫游功能。楼上楼下移动使用WIFI时&#xff0c;需要支持WIFI的信号漫游&#xff0c;更换地理位置不掉线、不中断。 3、用户量或网络流量的负载均衡功…

IMX6ULL的官方SDK和官方BSP下载

买了块IMX6ULL的开发板&#xff0c;但是不想直接用开发板跟的程序&#xff0c;还有比如后面移植uboot和kernel的时候也想基于IMX6ULL官方的uboot和kernel做移植工作&#xff0c;所以自己先找一下怎么在官网下载这些东西。 1 官方SDK下载 百度搜索NXP官网&#xff0c;进去之后…

HotSpot虚拟机参数配置及优化

目录 一、JVM配置参数 二、GC回收日志分析 三、虚拟机性能监控和故障处理工具 1.命令工具 1)&#xff1a;基础工具 2)&#xff1a;性能监控和故障处理 2.可视化工具 四、JVM常出现问题 五、参考资料 一、JVM配置参数 HotSpot直到JDK9才提供统一的日志处理框架&#xff…

【k8s系列】使用MicroK8s 5分钟搭建k8s集群含踩坑经验

文章目录 MicrosK8s介绍版本选择准备三台虚拟机搭建MicroK8s环境安装Microk8s把当前用户加入Admin Group访问K8s启动和停止MicroK8s服务 搭建MicroK8s集群把Worker节点分别加入到MicroK8s集群在Master节点检查节点运行情况在Master节点打开存储插件在Master节点打开DNS插件查看…

低转速压榨,充分保留营养,用蓝宝原汁机每天轻享新鲜果汁

现在大家都特别重视健康&#xff0c;像是蔬菜、水果都是每天必需的&#xff0c;而且为了充分获取营养&#xff0c;很多人都会使用破壁机之类的工具&#xff0c;我觉得原汁机效果更好一些&#xff0c;它能够用慢速研磨技术来提取果汁&#xff0c;使用时不需要加水&#xff0c;能…

el-date-picker 结合dayjs 快速实现周选择、月选择,并设置控件的显示格式

目录 情况需求思路&#xff1a;使用el-date-picker 配置type属性&#xff0c;结合dayjsdayjs的安装以及常用api实现效果图 实现代码其他配置设置周选择控件显示一行为星期一 至 星期日 情况需求 在传递查询条件时&#xff0c;要求时间参数需要为 一周 或 一个月 思路&#xf…

系统移植 编译uboot和linux源码及驱动配置

写在前面&#xff1a;若是有些命令执行失败&#xff0c;前面添加sudo后再执行 目录 写在前面&#xff1a;若是有些命令执行失败&#xff0c;前面添加sudo后再执行 uboot源码获取和编译&#xff1a; Linux源码获取和编译 关于驱动配置 uboot源码获取和编译&#xff1a; 获…

驾驶安全、便捷,尽在车载Notification开发的掌握

Notification 概述 通知&#xff08;Notification&#xff09;是移动应用中常用的一种交互方式&#xff0c;用于向用户展示重要的信息、提醒事件或提供即时反馈等。通知可以以弹出窗口、图标或声音等形式呈现给用户。 以下是关于通知的一些基本概念和要点&#xff1a; 通知栏…

React基础教程(三):JSX语法

React基础教程(三)&#xff1a;JSX语法 1、JSX简介 全称&#xff1a;JavaScript XMLreact定义的一种类似于XML的JS扩展语法&#xff1a;JSXML本质是React.createElement(component, props, ...children)方法的语法糖作用&#xff1a;用来简化创建虚拟DOM&#xff08;注意&…

【数据库三】MySQL事务

MySQL事务 1.事务的概念2.事务的ACID特点3.知识点总结 1.事务的概念 事务是一种机制、一个操作序列&#xff0c;包含了一组数据库操作命令&#xff0c;并且把所有的命令作为一个整体&#xff0c;一起向系统提交或撤销操作请求&#xff0c;即这一组数据库命令要么都执行&#x…