当前位置: 首页 > news >正文

SpringCloud 微服务nacos和eureka

Spring是微服务架构,是一种经过良好架构设计的分布式架构方案。

微服务架构有如下特性

单一:微服务拆分粒度小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发

面向服务:微服务对外暴漏业务接口

自己治理:独立团队,对立技术,独立数据,部署独立

隔离性强:服务调用做好隔离/容错/降级/避免出现级联问题

Eureka注册中心

提供者与消费者,提供者与消费者角色是相对的

服务提供者:一次业务中,被其它微服务调用的服务{提供接口给其它微服务}

服务消费者:一次业务中,调用其它的微服务服务{调用其它微服务提供的接口}

原理分析,服务调用中出现的问题,以及Eureka的作用:

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

①服务提供者启动时向eureka注册自己的信息

②eureka保存这些信息

③消费者根据服务名称向eureka拉取提供者信息

如何有多个服务提供者?服务消费者利用负载均衡算法,从服务列表中挑选一个

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

①服务提供者会每隔30秒向eurekaServer发送心跳请求,报告健康状态

②eureka会更新记录服务列表信息,心跳不正常会剔除

③消费者可以拉去到更新的信息

Ribbon负载均衡

规则是一个叫IRule的接口来定义的,默认实现是ZoneAvoidanceRule,根据zone选择服务列表

然后进行轮询

加载策略

Ribbon采用懒加载,即第一次访问时才会去创建LoadBalanceClient,请求时间会很长

而饥饿加载则会项目启动时创建,降低第一次访问的耗时,

可以通过配置开启饥饿加载:

ribbon:
    eager-Load:
        enabled:true # 开启饥饿加载
        clients:userservice # 指定xuserservice这个服务饥饿加载


Nacos注册中心

1,在cloud 父工程中添加spring-cloud-alilbaba的管理依赖

2,注释掉原有的eureka的依赖

3,添加nacos的客户端依赖

4,配置文件,查看nacos控制台,默认的账户密码均为nacos

5,如果连接云服务器需要在配置安全组中配置放开8848端口。

spring:
    application:
        name: userservice # 服务名称
    profile:
        active: dev #开发环境,这里是dev
    cloud
        nacos:
            server-addr: localhost:8848 # Nacos地址
            config:
                file-extension: yaml #文件后缀名

nacos配置自动刷新

修改nacos中的配置后,微服务中无需重启即可让配置生效,

也就是配置热更新。

一种是@Value注入的变量所在类上添加注解@RefreshScope

另一种是@ConfigurationProperties 注解代替@Value注解

Nacos集群搭建

  • 搭建数据库,初始化数据库表结构

nacos-mysql.sql是mysql数据库初始化脚本。

schema.sql是Derby 数据库初始化脚本。

Nacos默认数据存储在内嵌数据库Derby中,不属于生产可用的数据库。

官方推荐的最佳实践是使用带有主从的高可用数据库集群,这里我们以单点的数据库为例来讲解。

创建一个数据库,名为nacos,导入nacos中自带的mysql.sql

  • 配置Nacos

进入nacos的conf目录,修改配置文件cluster.conf.example,重命名为cluster.conf:

 然后添加内容:

127.0.0.1:8845
127.0.0.1.8846
127.0.0.1.8847

 然后修改application.properties文件,添加数据库配置

  • 启动nacos
  • nginx反向代理
  • upstream nacos-cluster {
        server 127.0.0.1:8841;
        server 127.0.0.1:8842;
        server 127.0.0.1:8843;
    }

    server {
        listen       80;
        server_name  localhost;

        location /nacos {
            proxy_pass http://nacos-cluster;
        }
    }
    服务配置文件中设置spring:
      cloud:
        nacos:
          server-addr: localhost:80 # Nacos地址

    Nacos与eureka的共同点

    都支持服务注册和服务拉取

    都支持服务提供者心跳方式做健康检测

    Nacos与Eureka的区别

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

相关文章:

SpringCloud 微服务nacos和eureka

Spring是微服务架构,是一种经过良好架构设计的分布式架构方案。 微服务架构有如下特性 单一:微服务拆分粒度小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发 面向服务:微服务对外暴漏…...

Java学习篇(一)| 如何生成分布式全局唯一ID

Java学习篇(一)| 如何生成分布式全局唯一ID 一、使用场景二、常用方法1、UUID (尽量不要用)2、数据库自增 (用的最多-但不适合做分布式ID)3、Redis 生成ID (可用)1、原因2、通过代码…...

c++ 弹窗办法

在C中,创建弹窗的方法有多种。下面我会逐一介绍几种常见的方法,并提供相应的代码示例。 使用Windows API创建弹窗 使用Windows API可以创建原生的Windows弹窗。前面已经提供了一个示例代码,下面我会逐步解释该代码的关键部分: …...

小程序使用this.animate实现3维动画切换

小程序使用this.animate实现3维动画切换 这里以三张图片为例 话不多说&#xff0c;直接上代码 wxml <view class"container"><view class"carousel" id"carousel_id"><view class"box" wx:for"{{items}}"…...

【区块链+社会公益】第一反应互助急救链 | FISCO BCOS应用案例

第一反应互助急救链将现有业务体系和系统与 FISCO BCOS 的区块链底层技术相结合&#xff0c;使得公益行为及其证据、 积分、奖励过程以区块链的方式进行记录&#xff0c;确保公正、透明、不可篡改。此外&#xff0c;项目将赛事保障、公益急救培训、 社区互助急救、AED 勘察等社…...

leetcode 136. 只出现一次的数字

https://leetcode.cn/problems/single-number/description/?envTypestudy-plan-v2&envIdtop-interview-150 136. 只出现一次的数字 已解答 简单 相关标签 相关企业 提示 给你一个 非空 整数数组 nums &#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出…...

可扩展架构设计:策略与最佳实践

在快速变化的数字世界中&#xff0c;构建可扩展的架构设计已经成为企业成功的关键因素之一。随着业务规模的不断扩大&#xff0c;系统需求也随之增加&#xff0c;因此&#xff0c;能够灵活适应变化的系统架构变得尤为重要。本文将详细介绍可扩展架构设计的核心概念、重要性以及…...

一图胜千言|图解Pandas常用操作!

Pandas 展示 请看下表: 它描述了一个在线商店的不同产品线&#xff0c;共有四种不同的产品。与前面的例子不同&#xff0c;它可以用NumPy数组或Pandas DataFrame表示。但让我们看一下它的一些常见操作。 1. 排序 使用Pandas按列排序更具可读性&#xff0c;如下所示: 这里arg…...

ue5正确导入资源 content(内容),content只能有一个

把资源content下的东西&#xff0c;全部拷贝&#xff0c;放在项目的content下 content只能有一个...

HTTP协议基础知识【后端 4】

HTTP协议基础知识 HTTP&#xff08;Hyper Text Transfer Protocol&#xff0c;超文本传输协议&#xff09;是互联网上应用最为广泛的一种网络协议&#xff0c;它定义了客户端&#xff08;如浏览器&#xff09;与服务器之间数据传输的格式和规则。无论是浏览网页、在线购物还是使…...

2024/8/10 英语每日一段

Microsoft, Meta Platforms and Alphabet have spent billions on generative AI, spurred on by the release of startup OpenAI’s ChatGPT software released in late 2022. The world’s biggest technology companies have yet to unveil a strategy that points to relia…...

深入探索 Wireshark——网络封包分析的利器

一、引言 在当今数字化的时代&#xff0c;网络通信变得日益复杂和关键。无论是企业的网络运维&#xff0c;还是网络安全研究&#xff0c;都需要深入了解网络中传输的数据。Wireshark 作为一款强大的网络封包分析工具&#xff0c;成为了网络工程师、安全研究人员和技术爱好者不…...

VS2022使用.Net Framework4.0方法

从安装了低版本VS的电脑中 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework \ 目录下 复制.Net Framework 4.0 等需要的目标包 如果打开项目仍然需要升级目标包的&#xff0c;先升级&#xff0c;加载项目后仍可更改目标包为.Net Framework 4…...

创建一个简单的贪吃蛇游戏:HTML、CSS和JavaScript教程

在本教程中&#xff0c;我们将逐步构建一个简单的贪吃蛇游戏。这个项目适合初学者&#xff0c;可以帮助你理解HTML、CSS和JavaScript的基础知识&#xff0c;并掌握如何将它们结合起来创建一个完整的游戏。 准备工作 在开始之前&#xff0c;请确保你已经安装了一个代码编辑器&…...

全面讲解电子齿轮比与脉冲数计算

一、什么是编码器分辨率 编码器&#xff08;encoder&#xff09;是将信号&#xff08;如比特流&#xff09;或数据进行编制、转换为可用以通讯、传输和存储的信号形式的设备。编码器把角位移或直线位移转换为电信号&#xff0c;按照读出方式编码器可以分为接触式和非接触式两种…...

音频进阶学习一——模拟信号和数字信号

文章目录 前言|版本声明&#xff1a;山河君&#xff0c;未经博主允许&#xff0c;禁止转载 一、什么是模拟信号和数字信号信号模拟信号数字信号数字和模拟信号的区别一览 二、信号处理系统总结 前言 所有软件的运行都得益于硬件上的突破&#xff0c;数字信号是从40年前就开始高…...

SpringBoot企业人事管理系统-附源码与配套论文

1.1引言 随着计算机技术的飞速发展&#xff0c;计算机在各种单位机构管理中应用的普及﹐管理信息系统的开发在强调管理、强调信息的现代社会中也显得越来越重要。因此,利用计算机高效率地完成人事管理的日常事务&#xff0c;是适应现代各种单位机构制度要求、推动各种单位机构…...

用window计算器实现定点数的十进制和二进制之间相互转换

目录 前言 已知十进制定点数,求二进制定点数 正数 整数部分 小数部分 负数 已知二进制定点数,求十进制定点数 正数 负数 前言 windows 10自带的计算器,具有程序员模式,可以方便的进行进制的转换,但是由于二进制模式下,无法输入十进制的小数,所以无法直接实现定…...

搬砖人2024年的智能工作伙伴 —— 4款思维导图软件种草集!

幕布思维导图这玩意儿特别厉害&#xff0c;成了很多学生学习的好帮手&#xff0c;在学习中经常觉得信息太多太乱&#xff0c;不好理清楚。这时候用幕布思维导图&#xff0c;我们可以把那些复杂的知识点整理得有条有理。每个主题、每个小点都清清楚楚&#xff0c;学习的时候一眼…...

【Python第三方库】Requests全面解析

文章目录 安装基本用法测试网站发送GET请求发送POST请求更多请求请求参数请求头其他常用请求属性处理响应响应状态码响应内容 处理超时处理异常 requests 是一个非常流行的 Python HTTP 库&#xff0c;用于发送所有类型的 HTTP 请求。它简洁易用&#xff0c;能够处理复杂的请求…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...