SpringCloud Aliba-Nacos-从入门到学废【1】

🥚今日鸡汤🥚

                          当你最倒霉地时候一定要扛住。

                                                           因为,那正是你运气该上升的时候。

                                                                                                 ——《一人之下》

目录

🧈1.Nacos介绍

🧂2.Nacos服务提供者注册

🥓3.Nacos服务消费者

🌭4.Nacos作为配置中心 

🍿5.命名空间+Group+Data  Id


1.Nacos介绍

  • Nacos是阿里巴巴开源的一个动态服务发现配置管理服务管理平台。
  • 实现微服务架构中的服务注册与发现动态配置管理服务健康监测等功能。
  • Nacos就是注册中心+配置中心的组合
  • 替代Eureka做服务注册中心
  • 替代Config做服务配置中心

2.Nacos服务提供者注册

2.1.建工程

  • 1.在父工程下创建cloudalibaba-provider-payment9001
  • 2.注意jdk和maven版本号
  • 另外创建cloudalibaba-provider-payment9002

2.2.加pom

父工程添加pom:

            <!--spring cloud alibaba 2.1.0.RELEASE--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.2.0.RELEASE</version><type>pom</type><scope>import</scope></dependency>

 子工程pom: 

     <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!--springCloud alibaba Naocs--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency></dependencies>

2.3.改yml

server:port: 9002spring:application:name: ncaos-payment-providercloud:nacos:discovery:server-addr: localhost:8848management:endpoints:web:exposure:include: '*'

2.4.主启动类

@SpringBootApplication
@EnableDiscoveryClient
public class PaymentMain9002 {public static void main(String[] args) {SpringApplication.run(PaymentMain9002.class);}
}

2.5.测试 

启动9001,9002,web端访问Nacos,说明访问成功

3.Nacos服务消费者

3.1.建工程

  • 1.在父工程下创建cloudalibaba-consumer-nacos-order83作为消费者
  • 2.注意jdk和maven版本号

3.2.加pom

 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.example</groupId><artifactId>cloud-api-commons</artifactId><version>1.0-SNAPSHOT</version></dependency><!--springCloud alibaba Naocs--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency></dependencies>

3.3.改yml

server:port: 83spring:application:name: nacos-order-consumercloud:nacos:discovery:server-addr: localhost:8848

3.4.主启动类

@SpringBootApplication
@EnableDiscoveryClient
public class OrderNacosMain83 {public static void main(String[] args) {SpringApplication.run(OrderNacosMain83.class);}
}

3.5添加配置类

  • 1.注入RestTemplate
  • 2.添加@LoadBalanced(负载均衡)
@Configuration
public class MyConfig {@Bean@LoadBalancedpublic RestTemplate getRestTemplate() {return new RestTemplate();}}

3.6业务类

  • 1.定义常量
  • 2.引入restTemplate
  • 3.直接调用
@RestController
public class OrderNacosController {private static final String SERVER_URL="http://nacos-payment-provider";@Autowiredprivate RestTemplate restTemplate;@GetMapping("/consumer/order/{id}")public String getPayment(@PathVariable("id")Integer id){return restTemplate.getForObject(SERVER_URL+"/payment/nacos/"+id,String.class);}
}

3.7测试

  • 1.浏览器访问Nacos客户端,查看服务列表

  • 2.浏览器访问83消费端 

4.Nacos作为配置中心 

4.1.建工程

  • 1.在父工程下创建cloudalibaba-config-nacos-client3377
  • 2.注意jdk和maven版本

4.2.加pom

     <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.example</groupId><artifactId>cloud-api-commons</artifactId><version>1.0-SNAPSHOT</version></dependency><!--springCloud alibaba Naocs--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--nacos-config--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency></dependencies>

4.3.改yml

1.要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动。

2.springboot中配置文件的加载是存在优先级顺序的, bootstrap优先级高于application

  • bootstrap.yml: 
server:port: 3377spring:application:name: nacos-config-clientcloud:nacos:discovery:server-addr: localhost:8848 #Nacos注册中心地址config:server-addr: localhost:8848 #Nacos作为配置中心地址file-extension: yml   #指定yml格式的配置#${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
#nacos-config-client-dev.yml
  • application.yml 
spring:profiles:active: dev #表示开发环境

4.4Nacos新增配置 

根据公式,配置Data ID

${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}

4.5.主启动类

@SpringBootApplication
@EnableDiscoveryClient
public class NacosConfigClientMain3377 {public static void main(String[] args) {SpringApplication.run(NacosConfigClientMain3377.class);}
}

4.6业务类

@RestController
@RefreshScope//保持动态刷新
public class ConfigClientController {@Value("${config.info}")private String configInfo;@GetMapping("/config/info")public String getConfigInfo(){return configInfo;}
}

4.7测试

浏览器访问controller接口

与Nacos配置里一样,说明成功~ 

5.命名空间+Group+Data  Id

5.1三者关系

这三者的关系类似于Java里面的package名和类名,最外层的Namespace是可以用于区分部署环境的,Group和DataID逻辑上区分两个目标对象

5.2默认情况

Namespace=public,Group=DEFAULT_GROUP,默认Cluster是DEFAULT

 

5.3Data Id 方案 

  • 1.Nacos测试新增

  • 2.application.yml配置 
spring:profiles:#active: dev #表示开发环境active: test #表示测试环境
  •  3.测试重启

5.4Group方案 

  • 1.Navos创建相同的DataID,但GROIP不同

  • 2.bootstrap添加group配置 

  • 3.重启测试 

5.5Namespace方案 

  • 1.查看命名空间

  • 2.新增命名空间 

  • 3.切换命名空间

  • 4.bootstrap.yml配置 
server:port: 3377spring:application:name: nacos-config-clientcloud:nacos:discovery:server-addr: localhost:8848 #Nacos注册中心地址config:server-addr: localhost:8848 #Nacos作为配置中心地址file-extension: yml   #指定yml格式的配置group: TEST_GROUP  #分组namespace: 277386e3-b431-4b12-a73e-222f61304889 #命名空间
  • 5.application.yml配置
spring:profiles:active: dev #表示开发环境#active: test #表示测试环境#active: info #表示测试环境

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

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

相关文章

瑞幸黑金鹿王者霸屏尊享权益的技术实现方式探讨

上周六&#xff0c;公司加班举办技术专场招聘活动&#xff0c;在忙碌的下午茶歇时间&#xff0c;我尊敬的伟大的韩百万老师提议带着我去瑞幸装了个 BI&#xff0c;扫码领取咖啡的那一个瞬间&#xff0c;瑞幸店内的电视大屏上赫然显示了&#xff1a;韩百万。回来的路上我虚心请教…

SpringCloud:微服务

文章目录 微服务服务架构演变单例架构&#xff08;集中式架构&#xff09;分布式架构 微服务SpringCloud 微服务 服务架构演变 单例架构&#xff08;集中式架构&#xff09; 单例架构&#xff1a; 将业务的所有功能集中在一个项目中开发&#xff0c;打成一个包部署 优点&…

redis(14):缓存雪崩、击穿、穿透及其处理方式

1 Redis 缓存过程 通常后端会采用Mysql等磁盘数据库,可以持久化但是访问慢,高并发时性能差,需要设置Nosql内存型数据库缓存:Redis等; Redis 数据库运行在内存中,因此他的查询速度比 MySql 快的多。所以我们会把一些用户经常查询的数据放在 Redis 中,当 Redis 有的时候…

TCP之三次握手四次挥手与UDP区别

文章目录 1 TCP三次握手四次挥手1.1 数据包说明1.1.1 TCP数据包1.1.2 UDP数据包1.1.3 TCP和UDP差异1.1.4 TCP可靠性传输机制 1.2 三次握手1.2.1 三次握手定义1.2.2 三次握手问题1.2.2.1 问题引入分析1.2.2.2 历史连接1.2.2.3 同步双方初始序列号1.2.2.4 避免资源浪费 1.3 四次挥…

Java项目:07 Springboot的客户管理系统

作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 springboot客户管理系统 功能模块&#xff1a;登录修改密码客户列表充值列表消费记录客户类型 环境&#xff1a;IDEAjdk1.8Tomcat9MySQL5.7maven3.6…

排序之基数排序

基数排序是一种非比较型整数排序算法&#xff0c;其原理是将整数按位数切割成不同的数字&#xff0c;然后按每个位数分别比较。这种排序算法的主要优点是在处理大量数据时&#xff0c;其时间复杂度为O(nlogn)&#xff0c;空间复杂度为O(1)。 代码实现 下面是基数排序的Java实…

【个人记录】ceph修改osd池副本数

执行ceph -s时提示&#xff1a; health: HEALTH_WARN3 pool(s) have no replicas configured显示有3个池没有配置副本。 在 Ceph 中&#xff0c;可以使用 ceph osd pool set 命令来配置 pool 的副本规则。要配置 pool 的副本规则为双副本&#xff0c;可以按照以下步骤进行操作…

POI-tl 知识整理:整理2 -> 标签

1 文本标签 {{var}} 数据模型&#xff1a; String &#xff1a;文本 TextRenderData &#xff1a;有样式的文本 HyperlinkTextRenderData &#xff1a;超链接和锚点文本 Object &#xff1a;调用 toString() 方法转化为文本 代码示例&#xff1a; Testpublic void testText…

Jenkins 问题

从gitlab 仓库拉去代码到Jenkins本地报错 ERROR: Couldn’t find any revision to build. Verify the repository and branch configuration for this job. 问题原因&#xff1a; 创建条目》配置的时候&#xff0c;gitlab仓库不存在master分支 修复后&#xff1a;

【学习】FPGA verilog 编程使用vscode,资源占用多 卡顿 卡死 内存占用多解决方案

问题描述 FPGA verilog 编程使用vscode&#xff0c;资源占用多 卡顿 卡死 内存占用多解决方案。 32G内存&#xff0c;动不动就暂用50%&#xff01;&#xff01; 解决方案 1.打开设置 文件->首选项->设置 或者点击软件界面的左下角的齿轮按钮 2.进入如下【设置】界面 …

django中的models.ManyToManyField 字段如何新增,通过Category,如何反向查询Product

在Django中&#xff0c;可以通过以下步骤向models.ManyToManyField字段添加新条目&#xff1a; 在models.py文件中定义包含ManyToManyField字段的模型类&#xff0c;例如&#xff1a; from django.db import modelsclass Category(models.Model):name models.CharField(max_…

网络安全B模块(笔记详解)- 网络渗透测试

LAND网络渗透测试 1.进入虚拟机操作系统:BT5中的/root目录,完善该目录下的land.py文件,填写该文件当中空缺的Flag1字符串,将该字符串作为Flag值(形式:Flag1字符串)提交;(land.py脚本功能见该任务第6题) 输入flag sendp(packet) Flag:sendp(packet) 2.进入虚拟机操作…

JavaScript-3

Web API 基本认知 作用和分类 作用&#xff1a;就是使用 JS 去操作 html 和 浏览器分类&#xff1a;DOM ( 文档对象模型 )、BOM ( 浏览器对象模型 ) DOM 是什么 DOM ( Document Object Model —— 文档对象模型 )它是用来呈现以及与任意 HTML 或 XML 文档交互的 API通俗的说…

MongoDB认证考试小题库

Free MongoDB C100DBA Exam Actual Questions 关于MongoDB C100 DBA 考试真题知识点零散整理 分片架构 应用程序 --> mongos --> 多个mongod对于应用来说&#xff0c;连接分片集群跟连接一台单机mongod服务器一样分片好处&#xff0c; 增加可用RAM、增加可用磁盘空间、…

缓存和数据库一致性

前言&#xff1a; 项目的难点是如何保证缓存和数据库的一致性。无论我们是先更新数据库&#xff0c;后更新缓存还是先更新数据库&#xff0c;然后删除缓存&#xff0c;在并发场景之下&#xff0c;仍然会存在数据不一致的情况&#xff08;也存在删除失败的情况&#xff0c;删除…

如何高效进行项目文档的编制及管理?

“做完一个项目到底会产出多少份文档&#xff1f;” 今天看到这样一个吐槽贴&#xff1a;小李作为刚入行的项目经理&#xff0c;每天上班期间电话、会议、邮件各种不停歇&#xff0c;晚上还要加班做各种文档&#xff1b;由于经验不足&#xff0c;熬到十一二点还做不完是常态。…

iOS block以及变量捕获

不同类型变量的捕获方式 1、局部变量和block 使用局部变量的block int main(int argc, const char * argv[]) {autoreleasepool {int age 10;block ^{// age的值捕获进来&#xff08;capture&#xff09;NSLog("age is %d, ", age);};age 20;block();}return 0…

Vue学习笔记五--路由

1、什么是路由 2、VueRouter 2、1VueRouter介绍 2、2使用步骤 2、3路由封装 3、router-link 3.1两个类名 3.2声明式导航传参 4、路由重定向、404 当找不到路由时&#xff0c;跳转配置到404页面 5、路由模式 6、通过代码跳转路由---编程式导航&传参 路由跳转时传参 跳转方式…

Java 并发之《深入理解 JVM》关于 volatile 累加示例的思考

在周志明老师的 《深入理解 JVM》一书中关于 volatile 关键字线程安全性有一个示例代码&#xff08;代码有些许改动&#xff0c;语义一样&#xff09;&#xff1a; public class MyTest3 {private static volatile int race 0;private static void increase() {race;}public …

亚马逊时尚如何运用人工智能帮助您找到合适的尺码

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…