当前位置: 首页 > 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;还可以选择『宝石镶嵌』或『花卉造型』这…...

5个Zutilo技巧让你成为Zotero文献管理高手

5个Zutilo技巧让你成为Zotero文献管理高手 【免费下载链接】Zutilo Zotero plugin providing some additional editing features 项目地址: https://gitcode.com/gh_mirrors/zu/Zutilo 还在为Zotero的批量操作烦恼吗&#xff1f;每天面对成百上千的文献条目&#xff0c;…...

构建毫秒级实时传输系统:基于flv.js的低延迟架构优化方案

构建毫秒级实时传输系统&#xff1a;基于flv.js的低延迟架构优化方案 【免费下载链接】flv.js HTML5 FLV Player 项目地址: https://gitcode.com/gh_mirrors/fl/flv.js flv.js作为HTML5 FLV播放器的核心技术方案&#xff0c;通过Media Source Extensions实现浏览器端FLV…...

超长上下文处理能力翻倍,响应速度提升47%,API成本下降22%:Claude 3.5 Sonnet新功能落地实战手册,仅限本周内有效

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Claude 3.5 Sonnet新功能概览与核心突破 Anthropic 正式发布的 Claude 3.5 Sonnet 在推理效率、多模态理解边界与开发者集成体验上实现了显著跃迁。相比前代&#xff0c;其上下文窗口稳定支持 200K tok…...

硬核架构拆解:指纹浏览器底座+FSM状态机,如何重塑高容错的店群RPA自动化?

大家好&#xff0c;我是林焱&#xff0c;一名专注电商底层自动化架构与定制开发的独立开发者。 在 CSDN 以及各大技术社区&#xff0c;我看到很多开发者在尝试为拼多多、TEMU 等电商平台编写自动化脚本时&#xff0c;都会经历一个“崩溃期”&#xff1a;明明在本地测试时无比丝…...

3步解决Dell G15散热难题:TCC-G15开源散热控制工具完全指南

3步解决Dell G15散热难题&#xff1a;TCC-G15开源散热控制工具完全指南 【免费下载链接】tcc-g15 Thermal Control Center for Dell G15 - open source alternative to AWCC 项目地址: https://gitcode.com/gh_mirrors/tc/tcc-g15 你是否正在为Dell G15笔记本的过热问题…...

别再死记硬背了!用这三个二极管等效模型,轻松搞定电路分析(附典型例题)

二极管电路分析的三大黄金法则&#xff1a;从理论到实战的思维跃迁 在电子工程领域&#xff0c;二极管就像电路世界里的"单向阀门"&#xff0c;看似简单却暗藏玄机。许多初学者面对复杂二极管电路时&#xff0c;往往陷入盲目试错的困境——要么死记硬背公式&#xff…...

车载以太网调试‘直连’方案揭秘:不用MCU,如何用两颗PHY芯片搞定100M转换?

车载以太网调试直连方案&#xff1a;两颗PHY芯片实现100M转换的技术解析 在车载电子系统日益复杂的今天&#xff0c;以太网技术凭借其高带宽和可靠性优势&#xff0c;正逐步取代传统的CAN总线成为车载网络的主流选择。然而&#xff0c;当工程师需要调试这些车载以太网设备时&am…...

【云原生问题集】容器内存监控避坑:90%工程师踩过的“free命令雷区”

你有没有遇到过这种怪事&#xff1f;压测跑得好好的&#xff0c;容器突然被 OOM Kill 了。你赶紧进容器敲了个 free -h&#xff0c;一看内存快吃满了&#xff0c;心想“资源不够&#xff0c;加&#xff01;” 加完内存&#xff0c;跑一会儿又被杀了。坑爹的是&#xff0c;你明明…...

CTF出题人视角:我是如何设计ctfshow F5杯那些“脑洞大开”的MISC题的

CTF出题人视角&#xff1a;如何设计令人拍案叫绝的MISC赛题 在CTF竞赛中&#xff0c;MISC&#xff08;杂项&#xff09;题目往往是最能体现创意与思维碰撞的领域。作为F5杯的核心出题人之一&#xff0c;我想分享几个设计"脑洞题"的底层逻辑——这些题目后来被参赛选手…...

Switch大气层系统完整教程:从零开始打造稳定自制系统环境

Switch大气层系统完整教程&#xff1a;从零开始打造稳定自制系统环境 【免费下载链接】Atmosphere-stable 大气层整合包系统稳定版 项目地址: https://gitcode.com/gh_mirrors/at/Atmosphere-stable 大气层系统&#xff08;Atmosphere&#xff09;是任天堂Switch平台上最…...