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

springcloud - 2021.0.3版本 - (一)服务注册nacos+feign

一,注册中心

最新版使用的是nacos,可替换为eureka,zookeeper,使用方式大同小异,这里不做扩展。

下载安装:(有机会重装时再补上)

管理页面:http://localhost:8848/nacos/index.html

二,搭建一个springcloud工程

1,创建一个maven 父工程,pom.xml如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.qi.study</groupId><artifactId>springcloud</artifactId><version>0.0.1-SNAPSHOT</version><packaging>pom</packaging><properties><java.version>18</java.version><spring-boot.version>2.7.3</spring-boot.version><spring-cloud.version>2021.0.3</spring-cloud.version><spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version></properties><dependencyManagement><dependencies><!-- spring boot 依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><!-- spring cloud 依赖 --><!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><!-- spring cloud alibaba 依赖 --><!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-alibaba-dependencies --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><modules><module>nacos-server</module><module>app-web</module><module>app-service</module></modules>
</project>

2,创建三个子工程

<module>nacos-server</module>
<module>app-web</module>
<module>app-service</module>

以nacos-server为例,添加以下配置代码

1)pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.qi.study</groupId><artifactId>springcloud</artifactId><version>0.0.1-SNAPSHOT</version></parent><artifactId>nacos-server</artifactId><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-nacos-discovery --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>		
</project>

2,application.yml

server:port: 8080spring:application:name: nacos-servercloud:nacos:discovery:server-addr:  127.0.0.1:8848

3,Application.java

package com.qi.study.springcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
@EnableDiscoveryClient
public class NacosServerApplication {public static void main(String[] args) {SpringApplication.run(NacosServerApplication.class, args);}}

其他两个工程,app-web 和 app-service 同上面一样,只是改一下application.yml配置文件中的端口号和服务名称

#app-web
===============================================================
server:port: 8081spring:application:name: app-webcloud:nacos:discovery:server-addr: 127.0.0.1:8848===============================================================#app-service
===============================================================
server:port: 8082spring:application:name: app-servicecloud:nacos:discovery:server-addr: 127.0.0.1:8848

分别启动三个项目,在nacos服务注册中心查看是否注册成功:

三,添加feign远程接口的调用测试

1,调用过程:app-web(controller) - feignClient - app-service(controller)

2,在工程app-web中添加feign依赖包:

    <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><!--引入openfeign,必须要引入loadbalancer,否则无法启动--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency>

3,在启动类Application.java中通过注解@EnableFeignClients开启feign功能

package com.qi.study.springcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class AppWebApplication {public static void main(String[] args) {SpringApplication.run(AppWebApplication.class, args);}
}

4,app-web 添加controller测试接口

package com.qi.study.springcloud.controller;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import com.qi.study.springcloud.feignClient.AppServiceClient;@RestController
public class HelloWorldController {private final static Logger LOGGER = LoggerFactory.getLogger(HelloWorldController.class);@Autowiredprivate AppServiceClient appServiceClient;@GetMapping("/helloWorld")public String helloWorld (@RequestParam(required = false) String msg) {LOGGER.info("app-web 访问helloWorld接口入参: {}", msg);return appServiceClient.helloWorld(msg);}
}

app-web 添加feignclient远程调用接口,重要注解@FeignClient(value = "app-service")

package com.qi.study.springcloud.feignClient;import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;/*** 通过feign远程调用服务app-service的http接口* 特别注意:@FeignClient这里的value要与app-service在nacos中注册的名称一致,否则无法找到* @author Admin**/
@FeignClient(value = "app-service")
public interface AppServiceClient {@GetMapping("/hello")String helloWorld(@RequestParam(value = "msg", defaultValue = "world",required = false) String msg);
}

app-service 添加逻辑实现接口

package com.qi.study.springcloud.controller;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {private final static Logger LOGGER = LoggerFactory.getLogger(HelloController.class);@GetMapping("/hello")public String hello(@RequestParam(value = "msg", defaultValue = "world" ,required = false) String msg) {LOGGER.info("app-service访问接口hello入参: {}", msg);return "say hello - ".concat(msg);}
}

同时启动app-web和app-service,访问测试:

 5,feign还支持负载均衡,无需额外配置,保持app-service服务开启,修改端口号为8083再次启动,可以看到app-service注册的服务变为了两个

多次调用上面的测试接口就能看到两个app-service服务轮流返回数据。 

四,源代码下载:https://download.csdn.net/download/MyNoteBlog/87447400

相关文章:

springcloud - 2021.0.3版本 - (一)服务注册nacos+feign

一&#xff0c;注册中心 最新版使用的是nacos&#xff0c;可替换为eureka&#xff0c;zookeeper&#xff0c;使用方式大同小异&#xff0c;这里不做扩展。 下载安装&#xff1a;&#xff08;有机会重装时再补上&#xff09; 管理页面&#xff1a;http://localhost:8848/naco…...

C++教程(初级,有基础)

C教程&#xff08;初级&#xff0c;有基础&#xff09; #include <iostream> using namespace std; int main() { /*对应printf("")*/cout << "Hello, world!" << endl;//cout << "Hello, world!" << "\n&q…...

字符编码及转换

什么是字符编码字符编码&#xff08;Character encoding&#xff09;也称字集码&#xff0c;是把字符集中的字符&#xff0c;编码为指定集合中的某一对象&#xff08;例如&#xff1a;比特模式、自然数序列、8位组或者电脉冲&#xff09;&#xff0c;以便文本在计算机中存储或者…...

redis原理

文章目录一、Redis数据结构1.1.动态字符串SDS1.2 intset1.3 Dict1.4 ZipList1.5 QuickList1.6 SkipList1.7 RedisObject二、Redis五大基本数据类型底层2.1.String2.2.List2.3.Set2.4.ZSet2.4.Hash三、Redis网络模型3.1.用户空间和内核空间3.2.阻塞IO3.3.非阻塞IO3.4.IO多路复用…...

kettle开发-Day37-SQ索引优化

前言&#xff1a;在上一个生产项目中&#xff0c;有个单表数据超249G了&#xff0c;里面存储的数据时间跨度就1年左右&#xff0c;那为啥会出现这种情况呢&#xff1f;数据来源为&#xff0c;一个生产基地所有电表的每分钟读数&#xff0c;一个基地大概500个电表左右&#xff0…...

【camera之3a】AE

文章目录sensorAEsensor 分辨率 常见分辨率的感性表述即30万、100万、200万&#xff0c;正确表述应为0.3M、1M、2M&#xff0c;其中M代表百万&#xff0c;是像素单位。sensor分辨率即指在单位面积上&#xff0c;像素的个数&#xff0c;数值越大 &#xff0c;则代表像素点越多&…...

Docker-Consul概述以及集群环境搭建

一、Docker consul概述容器服务更新与发现&#xff1a;先发现再更新&#xff0c;发现的是后端节点上容器的变化&#xff08;registrator&#xff09;&#xff0c;更新的是nginx配置文件&#xff08;agent&#xff09;egistrator&#xff1a;是consul安插在docker容器里的眼线&a…...

性能技术分享|Jmeter+InfluxDB+Grafana搭建性能平台(四)

四、Jmeter配置InfluxDB4.1 后端监听器(BackendListener)介绍1、什么是后端监听器(BackendListener)&#xff1f;源码给出的解释是&#xff1a;BackendListener是一种异步监听并获取到测试结果的实现类。也就是说发出的如http等响应请求的结果&#xff0c;都会被封装在SampleRe…...

图数据建模基础

Neo4j 图的组件 节点&#xff08;Nodes&#xff09;标签&#xff08;Labels&#xff09;关系&#xff08;Relationships&#xff09;属性&#xff08;Properties&#xff09;建模过程 了解领域并为应用程序定义特定用例&#xff08;问题&#xff09;。开发初始图形数据模型。 对…...

nodejs篇 process模块

目录 前言 监听回调 beforeExit 、exit、uncaughtException beforeExit exit uncaughtException Process常用属性 stdout stdin process方法 process.cwd()&#xff0c;process.chdir() process.nextTick() process.exit() process.kill() 前言 process是nodejs提…...

JavaScript高级程序设计读书分享之3章——3.4数据类型

JavaScript高级程序设计(第4版)读书分享笔记记录 适用于刚入门前端的同志 ECMAScript 有 6 种简单数据类型&#xff08;也称为原始类型&#xff09;&#xff1a;Undefined、Null、Boolean、Number、String 和 Symbol&#xff08;es6新增&#xff09;。 还有一种复杂数据类型叫…...

棱形打印--进阶2(Java)

棱形打印 问题 * *** ***** ******* ********* ******* ***** *** * * * …...

清除 git 所有历史提交记录,使其为新库

清除 git 所有历史提交记录&#xff0c;使其为新库需求方案需求 基于以前的仓库重新开发&#xff0c;这样可保留以前的配置等文件&#xff0c;但是需要删除全部的历史记录、tag、分支等。 方案 创建新的分支 使用 --orphan 选项&#xff0c;可创建1个干净的分支&#xff08;无…...

pyTorch下载和cuda下载以及学习笔记

pytorch官方网站&#xff0c;cuda官方网站 CUDA下载&#xff1a;https://developer.nvidia.com/cuda-toolkit-archive CUDNN下载&#xff1a;https://developer.nvidia.com/rdp/cudnn-download pytorch下载&#xff1a;pytorch.org 任务管理器中只显示CUDA占用的专用内存&#…...

【学习总结】IMU预积分推导

本文仅用于记录自己学习总结。记录IMU预积分推导过程&#xff0c;不包含具体原理。 符号表示 RRR: 表示旋转矩阵 vvv: 表示速度 ppp: 表示位移 ExpExpExp: 指数映射&#xff0c;将旋转向量映射为旋转矩阵 w~\widetilde{w}w: 角速度观测值 f~\widetilde{f}f​: 加速度观测值 bg…...

天猫商城自动化python脚本(仅供初学者学习使用)

作者&#xff1a;Eason_LYC 悲观者预言失败&#xff0c;十言九中。 乐观者创造奇迹&#xff0c;一次即可。 一个人的价值&#xff0c;在于他所拥有的。可以不学无术&#xff0c;但不能一无所有&#xff01; 技术领域&#xff1a;WEB安全、网络攻防 关注WEB安全、网络攻防。我的…...

代码随想录第十一天(459)

文章目录459. 重复的子字符串答案思路暴力破解移动匹配459. 重复的子字符串 也不知道为啥这个提示简单题…… 答案思路 暴力破解 例如&#xff1a;abcabc 移位一次&#xff1a;cabcab 移位两次&#xff1a;bcabca 移位三次&#xff1a;abcabc 现在字符串和原字符串匹配了…...

线程及线程池学习

1 线程和进程的区别&#xff1f;进程&#xff1a;进程指正在运行的程序。线程&#xff1a;线程是进程中的一个执行单元&#xff0c;负责当前进程中程序的执行&#xff0c;一个进程中至少有一个线程。同一个进程中的多个线程之间可以并发的执行。2 创建线程有哪几种方式&#xf…...

SpringBoot整合(四)整合Ehcache、Redis、Memcached、jetcache、j2cache缓存

​ 企业级应用主要作用是信息处理&#xff0c;当需要读取数据时&#xff0c;由于受限于数据库的访问效率&#xff0c;导致整体系统性能偏低。 ​ 为了改善上述现象&#xff0c;开发者通常会在应用程序与数据库之间建立一种临时的数据存储机制&#xff0c;该区域中的数据在内存…...

想要的古风女生头像让你快速get

如今我看到很多人都喜欢用古风女生当作头像&#xff0c;那么今天我就来教大家如何快速得到一张超美的古风女生头像~ 上图就是我使用 APISpace 的 AI作画(图像生成)服务 快速生成的古风女生头像&#xff0c;不仅可以限定颜色&#xff0c;还可以选择『宝石镶嵌』或『花卉造型』这…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA

浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求&#xff0c;本次涉及的主要是收费汇聚交换机的配置&#xff0c;浪潮网络设备在高速项目很少&#xff0c;通…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...

spring Security对RBAC及其ABAC的支持使用

RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型&#xff0c;它将权限分配给角色&#xff0c;再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...

【免费数据】2005-2019年我国272个地级市的旅游竞争力多指标数据(33个指标)

旅游业是一个城市的重要产业构成。旅游竞争力是一个城市竞争力的重要构成部分。一个城市的旅游竞争力反映了其在旅游市场竞争中的比较优势。 今日我们分享的是2005-2019年我国272个地级市的旅游竞争力多指标数据&#xff01;该数据集源自2025年4月发表于《地理学报》的论文成果…...