Spring Cloud应用框架:Nacos作为服务注册中心和配置中心

Nacos 是阿里巴巴开源的一个动态服务发现、配置管理和服务管理平台。在Spring Cloud生态系统中,Nacos可以替代Eureka作为服务注册中心,同时也可以作为配置中心。所以我们这里使用Nacos作为Spring Cloud应用的服务注册中心和配置中心。

使用Nacos的好处
  1. 统一管理

    • Nacos集成了服务发现和配置管理,减少了运维复杂度。
  2. 动态配置管理

    • 支持动态配置更新,减少系统重启成本。
  3. 易用性

    • 提供了简洁的用户界面和丰富的API,方便操作和管理。
  4. 高可用性

    • 支持集群部署,提供高可用性和稳定性。
使用Nacos的具体步骤

下面,我们将创建一个简单的Spring Cloud应用,使用Nacos作为服务注册中心和配置中心。

1. 下载并启动Nacos

下载Nacos的最新版本并启动。可以从Nacos官网下载。

解压后,进入Nacos目录并启动:

sh startup.sh -m standalone

访问Nacos控制台:http://localhost:8848/nacos

默认用户名和密码都是nacos

2. 创建Spring Boot项目

使用Spring Initializr创建一个Spring Boot项目,添加以下依赖:

  • Spring Web
  • Spring Boot Actuator
  • Nacos Discovery
  • Nacos Config
3. 配置Nacos

在项目的application.properties文件中配置Nacos。

application.properties:

spring.application.name=my-service
server.port=8080# Nacos 配置
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
4. 服务注册与发现

创建一个简单的微服务,并将其注册到Nacos。

MyServiceApplication.java:

@SpringBootApplication
@RestController
@EnableDiscoveryClient
public class MyServiceApplication {public static void main(String[] args) {SpringApplication.run(MyServiceApplication.class, args);}@GetMapping("/hello")public String sayHello() {return "Hello from MyService!";}
}

启动微服务:

mvn spring-boot:run
5. 使用Nacos作为配置中心

在Nacos控制台中,添加配置。在Config Management中创建一个配置文件,Data ID为my-service.yaml,内容如下:

server:port: 8080spring:application:name: my-servicecloud:nacos:discovery:server-addr: 127.0.0.1:8848config:server-addr: 127.0.0.1:8848

在项目的bootstrap.properties中添加如下配置,使应用启动时加载Nacos配置:

bootstrap.properties:

spring.application.name=my-service
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.file-extension=yaml
6. 创建客户端服务

创建一个负载均衡客户端,并使用RestTemplate进行服务调用。

application.properties:

spring.application.name=client-service
server.port=8081spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

ClientServiceApplication.java:

@SpringBootApplication
@EnableDiscoveryClient
@RestController
public class ClientServiceApplication {@Autowiredprivate RestTemplate restTemplate;public static void main(String[] args) {SpringApplication.run(ClientServiceApplication.class, args);}@Bean@LoadBalancedpublic RestTemplate restTemplate() {return new RestTemplate();}@GetMapping("/call")public String callService() {return restTemplate.getForObject("http://my-service/hello", String.class);}
}

启动客户端服务:

mvn spring-boot:run
7. 测试微服务

现在,我们可以通过以下URL测试各个微服务:

  • Nacos控制台:http://localhost:8848/nacos
  • MyService服务:http://localhost:8080/hello
  • ClientService服务:http://localhost:8081/call

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

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

相关文章

3.location的写法

location的写法 一、location的写法1、 精确匹配2、~ 以正则表达式匹配请求,区分大小写3、~* 以正则匹配请求,不区分大小写4、^~ 不以正则的方式匹配请求 二、stub_status模块显示工作状态三、url地址重写 rewrite模块1、语法2、针对项目结构有变化3、网…

LeetCode374猜数字大小

题目描述 我们正在玩猜数字游戏。猜数字游戏的规则如下:我会从 1 到 n 随机选择一个数字。 请你猜选出的是哪个数字。如果你猜错了,我会告诉你,我选出的数字比你猜测的数字大了还是小了。你可以通过调用一个预先定义好的接口 int guess(int n…

民国漫画杂志《时代漫画》第33期.PDF

时代漫画33.PDF: https://url03.ctfile.com/f/1779803-1248635648-d8235b?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了,截止1937年6月战争来临被迫停刊共发行了39期。 ps: 资源来源网络!

JVM优化之垃圾收集器

JVM优化之垃圾收集器 Serial收集器Parallel Scavenge收集器ParNew收集器 如果说垃圾收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。 没有最好的垃圾收集器,只有根据具体应用场景选择适合自己的垃圾收集器。 Serial收集器 #使用方…

apache大数据各组件部署搭建(超级详细)

apache大数据数仓各组件部署搭建 第一章 环境准备 1. 机器规划 准备3台服务器用于集群部署,系统建议CentOS7+,2核8G内存 172.19.195.228 hadoop101 172.19.195.229 hadoop102 172.19.195.230 hadoop103 [root@hadoop101 ~]# cat /etc/redhat-release CentOS Linux rele…

飞腾+FPGA多U多串全国产工控主机

飞腾多U多串工控主机基于国产化飞腾高性能8核D2000处理器平台的国产自主可控解决方案,搭载国产化固件,支持UOS、银河麒麟等国产操作系统,满足金融系统安全运算需求,实现从硬件、操作系统到应用的完全国产、自主、可控,是国产金融信…

基于51单片机多功能防盗报警proteus仿真( proteus仿真+程序+设计报告+原理图+讲解视频)

基于51单片机多功能防盗报警系统 1. 主要功能:2. 讲解视频:3. 仿真4. 程序代码5. 设计报告6. 原理图7. 设计资料内容清单&&下载链接 基于51单片机多功能防盗报警系统( proteus仿真程序设计报告原理图讲解视频) 仿真图proteus8.9及以上…

Spring boot 随笔 1 DatasourceInitializer

0. 为啥感觉升级了 win11 之后,电脑像是刚买回来的,很快 这篇加餐完全是一个意外:时隔两年半,再看 Springboot-quartz-starter 集成实现的时候,不知道为啥我的h2 在应用启动的时候,不能自动创建quartz相关…

智能化改造给企业带来的实际效果

1. 提高生产效率:通过自动化和智能化的生产线,减少人工操作,显著提升单位时间内的生产量。 2. 提升产品质量:智能化改造通过精确控制生产过程,减少人为错误,提高产品的一致性和可靠性。 3. 降低生产成本&am…

设计师竞品分析全攻略:高效指南!

在我们的设计工作中,竞争产品的分析非常重要。通过对市场上竞争产品的分析,设计师可以在短时间内快速了解其产品在整个市场中的定位。 同时,竞争产品分析也为设计师提供了可量化的评价标准,避免了过于主观的观点,帮助…

管道液位传感器怎么接线

如今,随着科技智能化的发展,检测液位的方法也越来越多,管道液位传感器是检测水管缺水的传感器,利用光学原理,通过液体在水和空气中的折射不同来判断传感器位置液位的变化,管道液位传感器怎么接线&#xff1…

计算机组成原理-----实验1

实 验 报 告 实验一 基本运算器实验 1、实验目的 (一)了解运算器的组成结构; (二) 掌握运算器的工作原理; (三)熟悉运算器的数据传送通路; (四)按…

如何搭建B2B2C商城系统?开发语言、功能扩展、优势分析

如今,越来越多的企业意识到单靠第三方电商平台不足以快速实现品牌曝光和销售增加,相反还有诸多限制。 因此,搭建一个B2B2C商城也就成为企业发展业务的首选,既可以满足自营和商家入驻的需求,功能操作又灵活&#xff0c…

IDEA 安装BPMN插件-Activiti BPMN visualizer

IDEA安装BPMN插件 idea 18版本之前idea 18版本之后安装插件 推荐使用 Activiti BPMN visualizer插件注意 创建bpmn文件使用可视化面板 在可视化面板中右键可创建各种节点每个节点上都有连线 删除 设置的按钮 保存图片 idea 18版本之前 可以通过搜索插件actiBPMN直接安装 idea…

【LeetCode算法】第101题:对称二叉树

目录 一、题目描述 二、初次解答 三、官方解法 四、总结 一、题目描述 二、初次解答 1. 思路:递归判定左子树和右子树是否对称。用一个新函数sym来递归判定左子树和右子树是否对称。该函数细节:判定当前传入的两个根节点是否为空,若均为空…

C/S模型测试

1 1.1代码示例 #include<stdio.h> #include<stdio.h>#include <sys/types.h> /* See NOTES */ #include <sys/socket.h>#include <netinet/in.h> #include <netinet/ip.h> /* superset of previous */ #include <arpa/inet.…

ubuntu 20.04安装桌面并远程连接

参考&#xff1a; https://www.zmy6.com/archives/234 https://blog.csdn.net/weixin_42068573/article/details/131227544 https://blog.csdn.net/LoongEmbedded/article/details/132434219 sudo apt install ubuntu-desktopsudo apt install xrdpsudo systemctl status xrdpp…

推荐系统三十六式学习笔记:02|个性化推荐系统有哪些绕不开的经典问题?

目录 推荐系统的问题模式评分预测行为预测 几个常见顽疾1、冷启动问题2、探索与利用问题安全问题 总结 推荐系统的问题模式 推荐系统的使命是为用户和物品建立连接&#xff0c;建立的方式是提前找出哪些隐藏的连接呈现给用户&#xff0c;这是一个预测问题&#xff1b;所以推荐…

IMU状态预积分代码实现 —— IMU状态预积分类

IMU状态预积分代码实现 —— IMU状态预积分类 实现IMU状态预积分类 实现IMU状态预积分类 首先&#xff0c;实现预积分自身的结构。一个预积分类应该存储一下数据&#xff1a; 预积分的观测量 △ R ~ i j , △ v ~ i j , △ p ~ i j \bigtriangleup \tilde{R} _{ij},\bigtrian…

2024年5月个人工作生活总结

本文为 2024年5月工作生活总结。 研发编码 golang 多个defer函数执行顺序 golang 函数中如有多个defer&#xff0c;倒序执行。示例代码&#xff1a; func foo() {defer func() {fmt.Println("111")}()defer func() {fmt.Println("2222")}()defer func()…