注册中心技术Eureka、Nacos

news2024/10/7 18:28:10

说明:在微服务框架中,各个服务之间都是独立的。理论上来说,各个服务之间是可以直接通信的,但实际上因为服务之间通信需要管理和规划,如请求怎么负载均衡、请求怎么降级处理等等,所以就需要使用一个技术,对这些服务做到统一管理,称为注册中心,Eureka、Nacos就是这类技术。

在这里插入图片描述

环境搭建:

在center_module模块下,创建两个子模块:订单模块(端口8081)、用户模块(端口8082),两个模块之间没有联系,现在需要查询订单,根据订单中的用户ID,查询该订单对应的用户信息。详细参考(http://t.csdn.cn/gwnXI)

订单服务配置文件(application.properties)

mybatis.configuration.map-underscore-to-camel-case=true
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/db_spring_cloud
spring.datasource.username=root
spring.datasource.password=123456

# 设置端口号
server.port=8081

# 设置微服务名称
spring.application.name=orderservice

用户服务配置文件(application.properties)

mybatis.configuration.map-underscore-to-camel-case=true
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/db_spring_cloud
spring.datasource.username=root
spring.datasource.password=123456

# 设置端口号
server.port=8082

# 设置微服务名称
spring.application.name=userservice

# 关联eureka的地址
eureka.client.serviceUrl.defaultZone=http://localhost:8083/eureka/

Eureka

在微服务之上创建一个Eureka模块,里面只有启动类、pom.xm文件、application配置文件,不写业务代码;

(启动类,需加@EnableEurekaServer注解)

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

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

(pom.xml文件依赖)

	<dependencies>
	    <dependency>
	        <groupId>org.springframework.cloud</groupId>
	        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
	        <version>2.2.5.RELEASE</version>
	    </dependency>
	</dependencies>

(application.yml配置文件)

# 配置端口号
server.port=8083

# 如果当前Eureka服务器只有一台 写自己的地址即可
eureka.client.serviceUrl.defaultZone=http://localhost:8083/eureka/

# 配置Eureka不抓取自己的服务
eureka.client.fetch-registry=false

# 配置Eureka不注册自己
eureka.client.register-with-eureka=false

关联的订单服务、用户服务需要添加对应的依赖

        <!--添加eureka服务依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

并在配置文件中关联注册中心

# 关联eureka的地址
eureka.client.serviceUrl.defaultZone=http://localhost:8083/eureka/

启动所有服务,打开注册中心(http://localhost:8083,注意不要加eureka),可以看到两个服务已经上线

在这里插入图片描述

此时,就可以直接用对应的服务名对微服务发送请求
在这里插入图片描述


在这里插入图片描述

负载均衡策略参考(http://t.csdn.cn/neb3n)

Nacos

安装&启动

可在官网(https://nacos.io/zh-cn/)提供的下载链接(https://github.com/alibaba/nacos/releases)中下载,下载后解压到一个没有中文、没有数字的路径下。打开目录的bin文件夹,在此目录下打开CMD,输入startup.cmd -m standalone 命令,启动Nacos,这种方式为单级模式、非集群模式启动,直接双击startup.exe为集群模式。
在这里插入图片描述
出现下面界面,为启动成功

在这里插入图片描述

此时,可以打开浏览器,输入:http://localhost:8848/nacos/,进入nacos平台,首次登录需要账号密码,都是nacos。

在这里插入图片描述

使用

在发起请求的一方(订单服务)添加nacos注册依赖、配置依赖

        <!--nacos配置管理依赖【注册】-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <!--nacos配置管理依赖【配置】-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

在接收请求的一方(用户服务)添加注册依赖

        <!--nacos配置管理依赖【注册】-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

订单服务配置(application.yml)

# 配置服务器端口
server:
  port: 8081

# 1.spring配置
spring:
  # 1.1 配置数据库连接池
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/db_spring_cloud
    username: root
    password: 123456

  # 1.2 配置微服务名称
  application:
    name: orderservice

  # 1.3 配置Nacos注册中心地址
  cloud:
    nacos:
      discovery:
        server-add: localhost:8848

# 2. feign配置
feign:
  # 微服务保护组件 熔断器
  hystrix:
    enabled: true

# 3. mybatis配置
mybatis:
  configuration:
    map-underscore-to-camel-case: true

用户服务配置(application.yml)

# 配置服务器端口
server:
  port: 8082

# 1.spring配置
spring:
  # 1.1 配置数据库连接池
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/db_spring_cloud
    username: root
    password: 123456

  # 1.2 配置微服务名称
  application:
    name: userservice

  # 1.3 配置Nacos注册中心地址
  cloud:
    nacos:
      discovery:
        server-add: localhost:8848

# 2. feign配置
feign:
  # 微服务保护组件 熔断器
  hystrix:
    enabled: true

# 3. mybatis配置
mybatis:
  configuration:
    map-underscore-to-camel-case: true

启动这两个服务,打开nacos平台,可以看到这两个服务

在这里插入图片描述

此时,使用Feign技术,可以使用服务名,直接访问到其他服务

在这里插入图片描述

在这里插入图片描述

降级处理方案参考(http://t.csdn.cn/BaYEe)

总结

目前市面上,微服务框架开发,注册中心和微服务通信有这两套,Eureka+Ribbon、Nacos+Feign(因为都是阿里巴巴的,称为alibaba springcloud),一般后者使用较多。

而注册中心技术Eureka、Nacos,在使用上的两点区别如下:

(1)服务名;

  • Eureka服务名称区分大小写;

  • Nacos服务名称不区分大小写;

(2)注册中心;

  • Eureka需要另外创建一个模块

  • Nacos不需要另外创建模块,但需要在配置的服务端,另外添加一个依赖

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

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

相关文章

企业绿色发展关键环节:产品碳足迹管理

近年来&#xff0c;产品生产消费对环境造成的影响越来越受到重视。“产品碳足迹”作为衡量产品对环境影响的重要指标&#xff0c;已成为企业在产品生命周期管理中不可忽视的元素。“产品碳足迹”&#xff08;Product Carbon Footprint, PCF&#xff09;是指产品在生产、制造、运…

【剧前爆米花--前端三剑客】JavaScript(WebAPI)中的相关方法和实例

作者&#xff1a;困了电视剧 专栏&#xff1a;《JavaEE初阶》 文章分布&#xff1a;这是一篇关于JavaScript&#xff08;WebAPI&#xff09;的文章&#xff0c;在这篇文章中我会简单介绍一些常用的js方法&#xff0c;并给出他们的应用实例&#xff0c;希望对你有所帮助&#xf…

代码随想录day2 | 977.有序数组的平方 209.长度最小的子数组 59.螺旋矩阵II

文章目录 一、977.有序数组的平方二、209.长度最小的子数组三、59.螺旋矩阵II 一、977.有序数组的平方 977.有序数组的平方 暴力法&#xff1a;O(NlogN) 先所有数字平方&#xff0c;然后再快排&#xff0c;时间复杂度取决于快排 class Solution { public:vector<int> s…

Openlayers实战:加载天地图

国家地理信息公共服务平台“天地图”(以下简称“天地图“)是国家基础地理信息中心建设的网络化地理信息共享与服务门户。 其属于国家队的,有一定的权威性。 在Openlayers中如何加载天地图呢,方法很简单,用XYZ的形式。 它分为底图和标注,可以灵活的做配合使用。 效果图 源…

java学习路程之篇三、知识点、类、模块、项目、操作、下载、安装、IDEA

文章目录 1、IDEA开发工具2、IDEA的下载和安装3、IDEA中的第一个代码4、IDEAZ中的类、模块、项目的操作 1、IDEA开发工具 2、IDEA的下载和安装 3、IDEA中的第一个代码 4、IDEAZ中的类、模块、项目的操作

PX4实战 各种问题的参数调整解决方案

桨叶旋转频率引起的噪声 比较好的震动 不好的震动 一般好的振动特性时&#xff0c;三轴加速度的原始数据值都会在很小的范围内波动&#xff0c;在3范围内就是非常好的振动环境了。 分析飞行器的幅频特性&#xff0c;一方面除了查看飞行器的振动特性好坏&#xff0c;另一方面…

技术架构的演进-八大架构

目录&#xff1a; 常见概念评价指标单机架构应用数据分离架构应用服务集群架构读写分离 / 主从分离架构引入缓存 —— 冷热分离架构垂直分库业务拆分 —— 微服务容器化引入——容器编排架构总结 1.常见概念&#xff1a; 应用&#xff08;Application&#xff09; / 系统&am…

安卓日志~

文章目录 bugreport获取报告设备模拟器adb命令用户 报告目录 阅读错误报告logcat定义日志记录抓取日志过滤优先级输出格式格式修饰符日志缓冲区 ANR触发ANR避免ANR工作线程 ANR日志定位无响应应用查看堆栈跟踪 死锁 activity内存内存不足内存快照 广播显示器争用后台编译叙述电…

linux终端前面显示base和不显示base

问题描述&#xff1a;前提是系统里装了anaconda3&#xff0c;有时候两个服务器之间相连长时间没使用或者访问时候前面没显示base。。 解决&#xff1a;我们在做深度学习时需要一个环境&#xff0c;如果前面没显示base的话&#xff0c;你直接conda activate是激活不了我们需要跑…

QT打开和保存文件对话框的操作笔记

QT打开和保存文件对话框的操作&#xff0c;需要先包含头文件QFileDialog&#xff0c;一般通过按钮实现打开和保存文件对话框的操作。 代码如下&#xff1a; #include <QDebug> #include <QFileDialog>void Form::on_pushButton_clicked() {QString fileName;fileN…

基于Javaweb实现ATM机系统开发实战(八)实时查询余额功能实现

老规矩&#xff0c;先看前端页面&#xff0c;把前端页面上没有的表达式都删掉&#xff1a; 创建servlet接受和处理请求&#xff1a; package com.atm.servlet;import com.atm.pojo.User; import com.atm.service.UserService; import com.atm.service.impl.UserServiceImpl;im…

HarmonyOS元服务开发

一、什么是HarmonyOS系统 HarmonyOS是华为开发的一款面向未来的全场景分布式智慧操作系统&#xff0c;将逐步覆盖18N全场景终端设备&#xff0c;用一个软件系统解决大量智能终端体验割裂的问题 1&#xff1a;智能手机 …

Freertos任务的管理是何物?

Freertos任务的管理 提示&#xff1a;文章来自正点原子和野火 文章目录 Freertos任务的管理前言一、任务的四种状态二、 四种状态的关系图三、函数vTaskSuspend();挂起vTaskResume() ;解挂函数 四、代码示例总结 前言 使用Freertos&#xff0c;创建任务&#xff0c;运行任务&a…

【1】Spring手写模拟-ApplicationContext获取对象

ApplicationContext获取对象 阶段目标 当前阶段任务&#xff0c;实现ApplicationContext 加载配置文件&#xff0c;实现对配置的包扫描&#xff0c;获取其字节码文件&#xff0c;查看是否包含注需要Spring管理&#xff0c;以及实现单例或者多例获取Bean对象 实现配置文件con…

实现虚拟机(VM15.5.0)与本机相互通信

目录 1、如果虚拟机一打开请先关机 2、进入“控制面板”-“网络和Internet”-“网络连接”&#xff0c;可以看到有两个虚拟网口&#xff0c;关闭虚拟网口VMnet1和VMnet8&#xff0c;如图所示&#xff1a; 3、选择需要通信的虚拟机&#xff0c;点击“编辑虚拟机设置”&#x…

力扣刷题 - 数组篇

这里写目录标题 数组的遍历485495414628 统计数组中的元素64569744844241数组的改变与移动453665---283 二维数组以及滚动数组118119661419--- 数组的旋转189396 特定顺序遍历二维数组5459498 二维数组的变换5664873--- 前缀和数组303238506 数组的遍历 485 https://leetcode.…

【HCIA】07.OSPF

动态路由的协议分类 按工作区域分&#xff1a; IGP&#xff08;内部网关协议 interior gateway protocols&#xff09;&#xff1a;OSPF、IS-IS、RIPEGP&#xff08;外部网关协议 exterior gateway protocols&#xff09;&#xff1a;BGP 按工作机制及算法分类&#xff1a; 距离…

机器学习(12)--K-Means

目录 一、聚类 二、机器学习中的距离 三、sklearn中的聚类算法 四、KMeans簇内平方和和时间复杂度 五、sklearn中的KMeans 1、建立一个数据集 2、使用K-Means进行聚类操作 3、根据上面的模型绘散点图观察分类效果。 4、评估指标 4.1对于真实标签已知情况 4.2当真实标…

[RocketMQ] Broker 消息重放服务源码解析 (十三)

构建消息文件ConsumeQueue和IndexFile。 ConsumeQueue: 看作是CommitLog的消息偏移量索引文件, 存储了它所属Topic的消息在Commit Log中的偏移量。消费者拉取消息的时候, 可以从Consume Queue中快速的根据偏移量定位消息在Commit Log中的位置。IndexFile索引文件: 看作是Commi…

【bash:xxx:command not found问题,在英伟达nvidia的jetson-orin-nx上遇到的>>>解决方式之一】

【bash:xxx:command not found问题,在英伟达nvidia的jetson-orin-nx上遇到的>>>解决方式之一】 1、概述2、实验环境3、问题描述&#xff1a;bash:xxx:command not found问题4、我的努力第一种方式&#xff1a;加入指令方式第二种方式&#xff1a;使用echo $PATH命令查…