注册中心技术Eureka、Nacos

说明:在微服务框架中,各个服务之间都是独立的。理论上来说,各个服务之间是可以直接通信的,但实际上因为服务之间通信需要管理和规划,如请求怎么负载均衡、请求怎么降级处理等等,所以就需要使用一个技术,对这些服务做到统一管理,称为注册中心,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.Driverurl: jdbc:mysql://localhost:3306/db_spring_cloudusername: rootpassword: 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.Driverurl: jdbc:mysql://localhost:3306/db_spring_cloudusername: rootpassword: 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.hqwc.cn/news/21556.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql-windows 安装

今天&#xff0c;由于一个功能要用到mysql&#xff0c;所以下载了 mysql-8.0.33-winx64 的版本&#xff0c;突然发现&#xff0c;以前都是安装的Linux 版本&#xff0c;windows版本不会安装了&#xff0c;查看官网试着装了一次&#xff0c;记录本次经历&#xff1a; 软件下载 …

【Hello mysql】 mysql的基本查询

Mysql专栏&#xff1a;Mysql 本篇博客简介&#xff1a;介绍mysql的基本查询 mysql的基本查询 create单行插入全列插入多行查询指定列查询插入否则更新 &#xff08;不常用&#xff09;替换 Retrieveselect列全列查询指定列查询查询字段为表达式结果去重 where条件找到英语小于6…

Yocto系列讲解[技巧篇]92 - armv8 aarch64兼容armv7 32位程序运行环境

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 概述使能Multilib支持32位的helloworld程序执行出现No such file or directorylibc.so.6 cannot open shared object file修改内容固化…

手把手教你落地大模型应用创意!全新AI达人创造营限时招募

AI进入大模型时代&#xff0c;智能应用和产品的构建开始发生天翻地覆的变化。想把你的AI创意落地&#xff0c;解决实际问题&#xff1f;想让更多人看到你的AI应用的价值与意义&#xff1f; 飞桨领航团AI达人创造营第4期学员招募正式启动&#xff01; AI达人创造营是百度飞桨领…

图像处理之高斯滤波

文章目录 高斯函数1.一维高斯函数2. 二维高斯函数 高斯滤波1.高斯核生成2.滤波过程 高斯函数 高斯函数广泛应用于统计学领域&#xff0c;用于表述正态分布&#xff0c;在信号处理领域&#xff0c;用于定义高斯滤波器&#xff0c;在图像处理领域&#xff0c;二维高斯核函数常用…

1.5 纹理

这次笔记时间有点久&#xff0c;主要是这节课讲的东西需要很多基础来铺垫&#xff0c;看完了后感觉缺失信息很多&#xff0c;又去补了GAMES 101 3~10节内容。 强烈建议看不懂的先去学习GMAES101 网址Lecture 08 Shading 2 (Shading, Pipeline and Texture Mapping)_哔哩哔哩_bi…

APP开发中的数据安全:你需要知道的一切

APP开发中的数据安全&#xff0c;是指 APP开发过程中&#xff0c;所有的数据都会经过严格的安全处理。因为目前 APP开发公司的技术、资质良莠不齐&#xff0c;很多企业在开发过程中不注重对数据安全的保护。 在如今大数据时代&#xff0c; APP开发过程中&#xff0c;会产生大量…

unidbg或者java层解密方法IDEA中打包成jar包供python调用方法

一、导出jar包方法 &#xff08;1&#xff09;配置jar包参数 &#xff08;2&#xff09;创建生成jar包 成功生成&#xff01; 二、Python代码调用 import jpypejvmPath jpype.getDefaultJVMPath() d unidbg-android.jar # 对应jar地址 jpype.startJVM(jvmPath, "-ea&q…

Docker 运行花生壳实现内外网穿透

Docker 运行花生壳实现内外网穿透 1、docker安装centos2、进入centos容器安装花生壳客户端3、花生壳绑定设备4、测试外网穿透 1、docker安装centos 使用命令行安装centos7 docker run --privilegedtrue --restartalways -e TZ"Asia/Shanghai" -d --nethost --nam…

vue生命周期四个阶段(created和mount)

1.四个阶段 1&#xff09;必经阶段 2&#xff09;非必经阶段 提示&#xff1a;主动调用 vm.$destroy() 函数销毁后&#xff0c;可用 vm.$mount("#app") 将断开的 new Vue() 和页面重新建立虚拟 DOM 树&#xff0c;重新绑定起来挂载界面。 2. 生命周期钩子函数&…

利用python绘制二三维曲面和矢量流线图

为了实现不同数据的可视化&#xff0c;最近研究了python环境下的可视化方案&#xff0c;为后续的流体运动仿真模拟做好储备&#xff0c;由于python处理数据的便利性&#xff0c;导致目前很多后端处理或者可视化成图操作都在python中实现&#xff0c;比如前端是vue&#xff0c;加…

2023-07-11力扣每日一题

链接&#xff1a; https://leetcode.cn/problems/maximum-alternating-subsequence-sum/ 题意&#xff1a; 给定一个数组&#xff0c;求一个子序列&#xff0c;使这个子序列的奇数位和-偶数位和最大&#xff08;下标从1开始的话|反正第一个数是&#xff09; 解&#xff1a;…