服务注册发现 配置中心 springcloud alibaba nacos

news2024/12/28 20:10:32

文章目录

  • 0100 系统环境
  • 0200 nacos安装
    • 0201 下载
    • 0202 安装
  • 0300 工程说明
    • 0301 结构说明
    • 0302 运行效果
  • 0400 代码说明
    • 0401 服务提供者(Provider Service)
    • 0402 服务消费者(Consumer Service)
    • 服务提供者SDK(Provider Service sdk)
  • 0500 负载均衡
  • 0600 源码地址

0100 系统环境

	JDK: jdk-20.0.2
	spring cloud alibaba: 2022.0.0.0
	spring cloud: 2022.0.4
	spring boot: 3.1.5
	nacos: 2.3.0-BETA

0200 nacos安装

0201 下载

官网:https://nacos.io/zh-cn/index.html
github:https://github.com/alibaba/nacos
当前最新版本:https://github.com/alibaba/nacos/releases/download/2.3.0-BETA/nacos-server-2.3.0-BETA.zip
在这里插入图片描述

0202 安装

  • 导入数据库脚本:./conf/mysql-schema.sql,如下:
mysql> show tables;
+----------------------+
| Tables_in_nacos      |
+----------------------+
| config_info          |
| config_info_aggr     |
| config_info_beta     |
| config_info_tag      |
| config_tags_relation |
| group_capacity       |
| his_config_info      |
| permissions          |
| roles                |
| tenant_capacity      |
| tenant_info          |
| users                |
+----------------------+
12 rows in set (0.00 sec)
  • 配置数据库
    修改./conf/application.properties
#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
### Deprecated configuration property, it is recommended to use `spring.sql.init.platform` replaced.
spring.datasource.platform=mysql
spring.sql.init.platform=mysql

### Count of DB:
db.num=1

### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=123456

### Connection pool configuration: hikariCP
db.pool.config.connectionTimeout=30000
db.pool.config.validationTimeout=10000
db.pool.config.maximumPoolSize=20
db.pool.config.minimumIdle=2
  • 启动服务
# 默认是集群模式
./startup.sh -m standalone

访问地址:http://192.168.1.200:8848/nacos
在这里插入图片描述先做个基础设置
创建namespace:prod
在这里插入图片描述创建个配置文件
在这里插入图片描述在这里插入图片描述

0300 工程说明

0301 结构说明

demo-springcloud-alibaba-nacos (父工程)
├── demo-springcloud-alibaba-nacos-consumer (服务消费者,端口:8000,未使用配置中心)
├── demo-springcloud-alibaba-nacos-provider1 (服务提供者,端口:9001,已使用配置中心)
├── demo-springcloud-alibaba-nacos-provider2 (服务提供者,端口:9002,已使用配置中心)
└── demo-springcloud-alibaba-nacos-provider-sdk(服务端,SDK)

注意: 示例中,为了方便看效果,服务提供者分别提供两个工程,内部代码都一样,只是端口不同。

0302 运行效果

在这里插入图片描述
访问这个地址,将随机返回结果:http://localhost:8000/echo2/a

我的端口是:9001, 配置中心的值是:abc, 传过来的值是:a
我的端口是:9002, 配置中心的值是:abc, 传过来的值是:a

修改配置中心配置项,可立即得到最新结果;

0400 代码说明

0401 服务提供者(Provider Service)

demo-springcloud-alibaba-nacos-provider1,端口:9001

关键依赖(pom.xml)

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

关键配置(application.properties)

spring.config.import=optional:nacos:demo-springcloud-alibaba-nacos-config

spring.application.name=demo-springcloud-alibaba-nacos-provider
spring.profiles.active=test

server.port=9001

spring.cloud.nacos.server-addr=192.168.1.200:8848
spring.cloud.nacos.discovery.server-addr=192.168.1.200:8848
spring.cloud.nacos.discovery.namespace=prod
spring.cloud.nacos.discovery.group=demo
spring.cloud.nacos.discovery.weight=5
spring.cloud.nacos.config.server-addr=192.168.1.200:8848
spring.cloud.nacos.config.file-extension=properties
spring.cloud.nacos.config.namespace=prod
spring.cloud.nacos.config.group=demo

management.endpoints.web.exposure.include=*

启动类:

@SpringBootApplication
@EnableDiscoveryClient
public class SpringcloudAlibabaNacosProvider1 {

    public static void main(String[] args) {
        SpringApplication.run(SpringcloudAlibabaNacosProvider1.class, args);
    }
}

demo-springcloud-alibaba-nacos-provider1,端口:9002
demo-springcloud-alibaba-nacos-provider1代码完全一样,只是application.properties中的server.port=9002

spring.application.name=demo-springcloud-alibaba-nacos-provider
spring.profiles.active=test

server.port=9002
....

0402 服务消费者(Consumer Service)

demo-springcloud-alibaba-nacos-consumer,端口:8000

关键依赖(pom.xml)

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

关键配置(application.properties)

spring.application.name=demo-springcloud-alibaba-nacos-consumer
server.port=8000

spring.cloud.nacos.discovery.server-addr=192.168.1.200:8848
spring.cloud.nacos.discovery.namespace=prod
spring.cloud.nacos.discovery.group=demo
spring.cloud.loadbalancer.nacos.enabled=true

management.endpoints.web.exposure.include=*

启动类:

@SpringBootApplication
@EnableDiscoveryClient
public class SpringcloudAlibabaNacosConsumer {

    public static void main(String[] args) {
        SpringApplication.run(SpringCloudNetflixEurekaConsumer.class, args);
    }
}

服务提供者SDK(Provider Service sdk)

实际工作中,该工程应该由服务提供者开发团队开发,供服务消费者依赖调用,来实现远程调用。本实例使用openfeign。

关键依赖(pom.xml)

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

关键代码(demo-springcloud-alibaba-nacos-provider-sdk工程ProviderService类):

// 接口,无需手写实现类
@Component
@FeignClient(name = ProviderConstants.SERVICE_ID)
public interface ProviderService {

    @RequestMapping(value = "/echo/{str}")
    String echo(@RequestParam("str") String str);
}

服务提供者依赖后使用(demo-springcloud-alibaba-nacos-provider1工程)

服务消费者依赖后使用(demo-springcloud-alibaba-nacos-consumer工程)


@Autowired
private ProviderService providerService;

@ResponseBody
@RequestMapping(value = "/echo2/{str}")
public String echo2(@PathVariable String str) {
    return providerService.test(name);
}

0500 负载均衡

客户端负载,按服务端权重负载:(demo-springcloud-alibaba-nacos-consumer工程)

@Configuration(proxyBeanMethods = false)
public class CustomLoadBalancerConfig {

    @Resource
    private NacosDiscoveryProperties nacosDiscoveryProperties;

    @Bean
    public ReactorLoadBalancer<ServiceInstance> nacosLoadBalancer(Environment environment, LoadBalancerClientFactory loadBalancerClientFactory) {

        var name = ProviderConstants.SERVICE_ID;
        return new NacosLoadBalancer(loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class), name,
                nacosDiscoveryProperties);
    }
}

0600 源码地址

https://gitee.com/xiaojianhx/demo-springcloud-alibaba-nacos

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

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

相关文章

应用商店优化之利用季节性提高应用曝光

在应用商店中利用季节性优化&#xff0c;是提高应用和游戏的曝光度以及应用商店转化率的最有效策略之一。 1、季节性的影响。 用户消费来自许多不同渠道的新闻和信息&#xff0c;这会影响他们做出决策的方式。比如在节日期间&#xff0c;当用户寻找购物类型的应用时&#xff0…

springboot数据格式验证——自定义日期格式验证及list验证

我们在工作中经常需要对日期格式进行定义&#xff0c;如果客户端传来的日期字符串不符合要求&#xff0c;那么根本无法保存&#xff0c;但是已有的注解并没有日期格式的验证&#xff0c;那我们就自己实现一个 一、自定义日期格式验证的注解DateFormat import javax.validatio…

Linux--初识和基本的指令(3)

目录 1.前言 1.指令 1.1 cat指令 1.2 echo指令 1.3 more 指令 1.4 less指令 1.5 什么时候使用less和more 1.6 head指令 1.7 tail指令 1.8 wc指令 1.9 与时间相关的指令 1.9.1 date指令 1.9.2 cal指令 1.10 16.find指令&#xff1a;&#xff08;灰常重要&#x…

熬夜会秃头——beta冲刺Day7

这个作业属于哪个课程2301-计算机学院-软件工程社区-CSDN社区云这个作业要求在哪里团队作业—beta冲刺事后诸葛亮-CSDN社区这个作业的目标记录beta冲刺Day7团队名称熬夜会秃头团队置顶集合随笔链接熬夜会秃头——Beta冲刺置顶随笔-CSDN社区 一、团队成员会议总结 1、成员工作…

蓝桥杯算法心得——小郑躲太阳(思维推导)

大家好&#xff0c;我是晴天学长&#xff0c;一道与平时的题型截然不同的题型&#xff0c;需要的小伙伴可以关注支持一下哦&#xff01;后续会继续更新的。&#x1f4aa;&#x1f4aa;&#x1f4aa; 1) .小郑躲太阳 问题描述 小郑一觉醒来发现起晚啦!现在需要从家里飞速前往公司…

服装行业中小企业零售数字化转型的工作目标和主要实施路径|徐礼昭

目标1&#xff1a;实现“人、货、场”的在线化和经营数字化 实施路径&#xff1a;中小企业可以选择商派的微信小程序商城系统&#xff0c;结合导购助手小程序&#xff0c;实现业务在线化&#xff0c;导购在线化&#xff0c;通过微信公众号、企微社群和视频号&#xff0c;开展私…

synchronized和volatile的区别是什么?

synchronized和volatile是Java中的两个关键词&#xff0c;分别用于实现线程同步和线程间的可见性。 synchronized用于实现线程之间的互斥同步&#xff0c;即同一时刻只能有一个线程访问被synchronized修饰的代码块或方法&#xff0c;其他线程需要等待。synchronized确保了线程…

在Android上搭建一个NDK项目

首先New Project&#xff0c;选择Native C&#xff0c;点击Next。 填入项目名称和包名&#xff0c;点击Next。 这里我们选择Cmake默认的C版本。 创建好的项目目录&#xff0c;里面比我们正常的Android项目多了一个cpp目录 打开MainActivity。里面定义了一个jni方法stringFromJN…

SOCKET、TCP、HTTP之间的区别与联系

SOCKET、TCP、HTTP之间的区别与联系 一、 Socket 1、什么是socket2、为什么需要socket3、建立socket连接 二、HTTP(基于TCP) 1、HTTP的概念2、HTTP连接的特点 连接请求&#xff1a;一次连接连接请求&#xff1a;短连接(socket是长连接) 三、TCP/IP协议簇 四、HTTP、Socket…

Linux中shell的运行原理

在Linux中&#xff0c;每次输入命令时&#xff0c;前面都会出现一串字母&#xff0c;我们称之为命令行提示符 实际上&#xff0c;命令行提示符是一种外壳程序 外壳程序的概念&#xff1a; 前面我们提到过&#xff0c;在Linux中&#xff0c;一切皆文件&#xff0c;所谓的命令就…

linux设置权限_setfacl_getfacl

3.2 设置权限ACL&#xff08;access control list&#xff09; 假设&#xff1a;/data所有者与所属组均为root&#xff0c;在不改变所有者的前提下&#xff0c;要求用户tom对该目录有完全访问权限&#xff08;rwx&#xff09;。只能考虑&#xff1a; 方法一&#xff1a;给/dat…

Spring AOP记录接口访问日志

Spring AOP记录接口访问日志 介绍应用范围组成通知&#xff08;Advice&#xff09;连接点&#xff08;JoinPoint&#xff09;切点&#xff08;Pointcut&#xff09;切面&#xff08;Aspect&#xff09;引入&#xff08;Introduction&#xff09;织入&#xff08;Weaving&#x…

003、应用程序框架-UIAbility

之——UIAbility 目录 之——UIAbility 杂谈 正文 1.UIAbility 2.基本使用 2.1 创建Ability工程 2.2 添加基础功能 2.3 新建页面 2.4 页面间的跳转 3.生命周期 总结 杂谈 UIAbility&#xff0c;其中的页面创建、页面间的跳转、数据传递、生命周期。 正文 1.UIAbil…

BUUCTF-WEB-刷题记录(2)

[网鼎杯 2018]Fakebook 注册一个账户&#xff0c;进去之后查看源代码&#xff0c;感觉存在注入点 是数字型注入&#xff0c;payload&#xff1a; 1%20and(false) 1%20and(true)判断列数 1 order by 5改为4的时候则页面正常 判断显示位&#xff0c;可以看见第二列存在数据回…

C语言每日一题(43)旋转链表

力扣 61 旋转链表 题目描述 给你一个链表的头节点 head &#xff0c;旋转链表&#xff0c;将链表每个节点向右移动 k 个位置。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], k 2 输出&#xff1a;[4,5,1,2,3]示例 2&#xff1a; 输入&#xff1a;head [0,1,2], …

Matlab 自适应选择搜索半径

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 通常我们计算某一点邻域的信息使用的都是固定搜索半径,然而,这取决于局部特征规模以及不包括代表性的几何信息。但如果存在三维噪声,固定的半径对最终的结果往往有着很大的影响。因此,要找到一个唯一的半径在所…

【网络安全技术】实体认证技术Kerberos

一、什么是Kerberos Kerberos解决的是客户端与服务器通信场景中&#xff0c;确保客户端服务器双方的身份可信&#xff0c;并提供对称密钥的分发来加密传输。是一个应用层的协议。 二、一个简单的模型 1.看这个基础的模型&#xff0c;客户端要和服务器通信&#xff0c;他先将自…

(使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))

使用vite搭建vue3项目&#xff08;vite vue3 vue router pinia element plus&#xff09; 初始化项目安装依赖&#xff0c;运行项目初始配置 初始化项目 1.需要在创建项目的位置cmd目录下执行 2. npm init vitelatest 回车 npm init vitelatest3.填上自己的项目名称 回车…

Rocket-核心编程模型

RocketMQ的消息模型 深入理解RocketMQ的消息模型 RocketMQ客户端基本流程 RocketMQ基于Maven提供了客户端的核心依赖&#xff1a; <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-client</artifactId><version&…

Overflow Aware Quantization

Overflow Aware Quantization Framework N o _o o​是 amount of arithmetic overflow 辅助信息 作者未提供代码