springcloud3 Nacos的服务搭建和生产消费案例

news2025/1/18 18:49:29

一 nacos

1.1 nacos概念

Nacos是服务注册发现中心+配置中心的组合。比eurka实现的功能更加强大。

nacos默认均有负载均衡的功能,集成了netflix的ribbon代码包。

1.2 nacos与其他进行对别

 1.3 nacos的配置

1.4  namespace和group和dataid之间的关系

二  nacos的安装搭建

2.1 软件包下载

1.软件包下载地址 :home

2.找到对应版本,进行下载 

2.2 nacos的安装

2.2.1 附件数据库

1.加压软件包后,进入到目录 nacos/conf/nacos-mysql.sql  找到这个sql文件进行附件。

2.先创建一个数据库,名字为nacos,将sql脚本进行附件数据库

 2.2.2 修改启动脚本

进入bin目录下,修改 startup.cmd文件,在本地运行是需要改成standalone模式

 2.2.3 修改数据库连接配置文件

 2.2.4 启动服务

2.3 nacos页面访问

页面进行访问:  http://localhost:8848/nacos

用户名和密码为: nacos/nacos

进入页面

1.添加一条数据

2.在mysql数据库中查看 

 

三  nacos的生产消费案例

3.1 架构

3.2  生产提供服务模块7001

3.2.1 生产提供模块结构

在主工程新建一个模块,如下图

 3.2.2 pom文件

配置pom文件的依赖

<!--SpringCloud ailibaba nacos -->
<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- SpringBoot整合Web组件 -->
<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>
<!--日常通用jar包配置-->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-devtools</artifactId>
  <scope>runtime</scope>
  <optional>true</optional>
</dependency>
<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <optional>true</optional>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-test</artifactId>
  <scope>test</scope>
</dependency>

3.2.3 配置文件

server:
  port: 7001
#服务名称
spring:
  application:
    name: nacos-payment-provider
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置Nacos地址
#暴露所有监控信息为HTTP
management:
  endpoints:
    web:
      exposure:
        include: '*'

3.2.4 启动类

@EnableDiscoveryClient
@SpringBootApplication
public class App 
{
    public static void main( String[] args )
    {
        //System.out.println( "Hello World!" );
        SpringApplication.run(App.class, args);
        System.out.println("================nacos7001服务启动成功!!!!");
    }
}

3.2.5 业务类

/**
 * @auther zzyy
 * @create 2020-02-23 14:13
 */
@RestController
public class PaymentController
{
    @Value("${server.port}")
    private String serverPort;

    @GetMapping(value = "/payment/nacos/{id}")
    public String getPayment(@PathVariable("id") Integer id)
    {
        return "nacos registry, serverPort: "+ serverPort+"\t id"+id;
    }
}

3.2.6 启动查看结果

1.服务启动

 2.nacos页面

3.3  生产提供服务模块7002

3.3.1 复制一份服务

将服务模块7001复制一份变为7001,如下

2.需要将此7002服务添加到主服务中

3.主工程的pom文件中添加此模块的声明

 3.3.2 修改一些配置

1.端口号

 2.配置文件中端口

 3.3.3 将服务均启动

可以看到两个服务提供者:7001和7002

 3.4  消费模块7000

3.4.1 新建消费模块

3.4.2 pom文件修改

  <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13</version>
      <scope>test</scope>
    </dependency>
    <!--SpringCloud ailibaba nacos -->
    <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    <!-- 引入自己定义的api通用包,可以使用Payment支付Entity -->

    <!-- SpringBoot整合Web组件 -->
    <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>
    <!--日常通用jar包配置-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
      <scope>runtime</scope>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>

3.4.3 配置文件的修改

server:
  port: 7000


spring:
  application:
    name: nacos-order-consumer
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848


#消费者将要去访问的微服务名称(注册成功进nacos的微服务提供者)
service-url:
  nacos-user-service: http://nacos-payment-provider

3.4.4 controller的业务

@RestController
@Slf4j
public class OrderController {
    @Resource
    private RestTemplate restTemplate;

    @Value("${service-url.nacos-user-service}")
    private String serverURL;

    @GetMapping(value = "/consumer/payment/nacos/{id}")
    public String paymentInfo(@PathVariable("id") Long id)
    {
        return restTemplate.getForObject(serverURL+"/payment/nacos/"+id,String.class);
    }
}

3.4.5 负载均衡

@Configuration
public class ApplicationContextConfig
{
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate()
    {
        return new RestTemplate();
    }
}

3.4.6 启动服务查看

首先确保nacos启动,7001提供者服务启动,7002服务提供者启动;最后启动7000消费者

 页面进行访问

 再次刷新:

 

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

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

相关文章

2023年网络工程师必备10大软件,最新安装包分享

常听人说&#xff1a;拳头再硬&#xff0c;也比不上锤子&#xff01;同样的&#xff0c;作为一个网络工程师只有满腹的技术而不会使用对应的软件工具&#xff0c;是完全不行的。那作为一个2023年的网络工程师必备的软件有哪些呢&#xff1f;以下10大网工必备软件都已整理好安装…

smsalarm怎么读取intouch系统平台的点

有两种方式&#xff0c;分别是DDE和OPC方式 DDE方式 在SMC里面添加SIDIR驱动&#xff0c;连接到1200PLC 在IDE中创建对象DT01并绑定到驱动上 可看到已经可以读取到值了 打开smsalarm 8.26 创建一个DDE连接 创建一个DDE逻辑组 创建一个tag. 名称可以填任意字符串&#xff0c;…

SpringBoot在使用测试的时候是否需要@RunWith?

我们在使用SpringBoot进行测试的时候一般是需要加两个注解&#xff1a; SpringBootTest 目的是加载ApplicationContext&#xff0c;启动spring容器。 RunWith 是一个测试启动器&#xff0c;可以加载SpringBoot测试注解让测试在Spring容器环境下执行。如测试类中无此注解&#…

ORACLE中的行列转换(行转列,列转行)

行转列&#xff1a; 源表&#xff1a; 方法1&#xff1a;case when select y, sum(case when q1 then amt end) q1, sum(case when q2 then amt end) q2, sum(case when q3 then amt end) q3, sum(case when q4 then amt end) q4 from test04 group by y; 效果&#xff1a; …

详解动态库静态库、动态链接静态链接

目录 静态库&&动态库 举例 注意 动态链接 静态链接 静态库&&动态库 静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了。其后缀名一般为“.a” libXXXXXXX.a (windows下是.lib) 动态…

韩国网民钟爱的国内电商平台商品详情响应示例

一、中国电商业的发展&#xff0c;已经超过了欧美等过&#xff0c;大家都喜欢中国的商品&#xff0c;中国商品的特点个人总结有以下几点&#xff1a; 1、款式新颖多样 2、价格实惠 3、品种齐全 二、常用接口响应示例说明 公共参数 展开请求参数 三、返回响应示例 {"…

LeetCode 128. 最长连续序列

&#x1f308;&#x1f308;&#x1f604;&#x1f604; 欢迎来到茶色岛独家岛屿&#xff0c;本期将为大家揭晓LeetCode 128. 最长连续序列&#xff0c;做好准备了么&#xff0c;那么开始吧。 &#x1f332;&#x1f332;&#x1f434;&#x1f434; 一、题目名称 LeetCode…

反电信网络诈骗普法宣传答题实现联表查询学生的平均成绩

国际经济与贸易学院组织反电信网络诈骗线上答题活动&#xff0c;开展集中普法宣传教育活动&#xff0c;从而构筑立体化反诈骗防线。通过此次比赛&#xff0c;引导广大同学时刻牢记反诈骗内容&#xff0c;提高师生的自我财产安全防范意识&#xff0c;加强自我网络保护的思想理念…

Java中列表的基本操作

文章目录1、定义列表2、增删改操作&#xff08;1&#xff09;新增&#xff08;2&#xff09;删除&#xff08;3&#xff09;修改3、访问列表4、遍历列表&#xff08;1&#xff09;for循环遍历&#xff08;2&#xff09;foreach遍历&#xff08;3&#xff09;iterator迭代器遍历…

weblogic t3协议报错

目录 1、背景 2、报错信息 3、检测t3协议是否正常 1、背景 在上次生产环境版本升级的时候遇到问题&#xff0c;运维人员告知升级失败&#xff0c;然后首先怀疑是版本问题&#xff0c;就仔细检查了版本信息&#xff0c;没发现异常&#xff0c;然后与运维沟通获取到报错信息如…

如何利用 knest 构建数据中心的 Kubernetes as a Service?

随着越来越多的企业和应用转向云原生架构&#xff0c;对 Kubernetes 集群的需求也日趋多样化和灵活化。出于故障隔离的考虑&#xff0c;企业的数据中心往往需要多个独立的 Kubernetes 集群来承载不同的业务&#xff0c;而不是全部署在一个共享 Kubernetes 集群上。此外&#xf…

elastic search window安装,基础概念,项目实例

elastic searchelasticsearch场景window 安装教程基本配置成功标志基础知识名词概念介绍文档元数据索引创建原则创建实例创建索引指定 分区&#xff0c;片区的创建创建带有类型、映射的索引(Index)创建文档创建文档spring boot 整合项目实践全文检索高亮显示elasticsearch场景 …

CANoe的各模块节点是如何选择应用层通道的

当CANoe为Channel-based access模式时,需要配置软硬件通道的映射;当CANoe为Network-based access模式时,需要配置软硬件网络的映射 通道映射: 网络映射: 当然,只有CANoe软件工作模式为Real bus时,才需要软硬件通道或网络映射。如果工作模式为Simulated bus时,不需要软…

如何使用 Authing 实现 AWS CLI 单点登录?

越来越多企业和开发者依赖使用 Authing 单点登录 SSO 来便捷无缝的访问 AWS 服务。随着组织将更多业务上云&#xff0c;为员工提供无缝安全的访问认证&#xff0c;以此来提升员工的工作效率和保障企业的信息安全至关重要。 但随着业务的扩张&#xff0c;会发现在 AWS 环境中管…

pdf转换成word加密怎么办,这个方法能派上用场!

处理文档的时候难免遇到各种难题&#xff0c;就比如格式切换&#xff0c;PDF转word就是很常见的需求。有些工作性质比较特殊&#xff0c;对文档对保密性也有要求。这时候不仅要会把PDF转成word文档&#xff0c;还要学会给文档加密。有没有工具能把这两件事都办到呢?答案是有&a…

直播美颜SDK贴纸功能实现流程、贴纸代码分析

时下&#xff0c;直播美颜SDK已经成了大家日常拍摄以及专业美颜的必备工具。另外它也接入到了各种社交平台、短视频平台、直播平台中&#xff0c;此类平台中大部分用户都熟练掌握了美颜SDK的拍摄技巧&#xff0c;特别是短视频平台中&#xff0c;几乎每个用户都曾经使用过。根据…

极光笔记 | 如何为 iOS 16 创建一个实时活动

01、iOS 16 中的 Live Activity &#xff08;实时活动&#xff09;是什么&#xff1f;根据 Apple 官方描述&#xff0c;“实时活动是一项新功能&#xff0c;可帮助用户直接从锁定屏幕实时获知各种事情的进展&#xff0c;例如体育比赛、锻炼、拼车或送餐订单进度等等” 。例如&a…

Revit中基线的作用和【类型可见性】功能

一、Revit中基线的作用 Revit中基线是一个重要但又容易被忽视的内容&#xff0c;本文就简单介绍一下基线的一些常用功能&#xff0c;基线的作用&#xff1a; 1、参照底图 基线调整为其他层时&#xff0c;可以在当前视图中半色调显示&#xff0c;方便参照。 2、定位 3、基线还可…

【UE4 第一人称射击游戏】35-击中目标时添加准心提示

上一篇&#xff1a;【UE4 第一人称射击游戏】34-制作一个简易计时器本篇效果&#xff1a;可以看到击中目标后有了一个红色准心的提示效果步骤&#xff1a;新建一个控件蓝图&#xff0c;命名为“Hitmarker”双击打开“Hitmarker”&#xff0c;拖入一个图像控件&#xff0c;锚点设…

前端性能优化(七):前沿优化解决方案

目录 一&#xff1a;拯救移动端图标 - SVG 1.1.从 PNG 到 IconFont 1.2.从 IconFont 到 SVG 二&#xff1a;使用 Flexbox 优化布局 三&#xff1a;优化资源的加载顺序 3.1.Preload 3.2.Prefetch 四&#xff1a;预渲染页面 五&#xff1a;Windowing&#xff08;窗口化&…