Nacos 快速上手

2023-11-08

Nacos 快速上手

微服务现在越来火,有基于 Spring Cloud Netflix 体系的,也有基于 Spring Cloud Alibaba 为体系的。从以前的 Eureka 注册中心、Spring Cloud Config 配置中心、Spring Cloud Bus消息总线 到完全可以替代他们的 Nacos 出现,微服务技术体系的未来发展方向愈加清晰。所以,学会并了解如何使用 Nacos 是十分重要的。
Nacos 不仅仅可以作为配置中心使用,还可以作为注册中心使用,其有很多十分优秀的特性,部署起来也十分方便。

主要目的:

  • 熟练使用 Nacos;
  • 基于 Spring Cloud Alibaba 体系进行项目基础 Demo 搭建,便于后续源码分析;
  • 整合 Dubbo,便于后续源码分析;

准备工作

  • Docker 运行环境
  • Mysql 或 Mysql 的容器

部署

单机版本

# 拉取镜像
docker pull nacos/nacos-server
# 运行
docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server

访问 http://127.0.0.1:8848/nacos/#/login

.

密码和账号默认都是 nacos

.

Spring Boot 集成

配置说明

配置命名空间

.

Spring Cloud + Nacos

依赖配置

compile libs["spring-cloud-starter-alibaba-nacos-config"]
compile libs["spring-cloud-starter-alibaba-nacos-discovery"]

resources 下新建文件 bootstrap.yaml

# nacos 配置 (nacos config必须配置在bootstrap)
spring:
  cloud:
    nacos:
      discovery:
        server-addr: ${NACOS_SERVER_ADDR:127.0.0.1:8848}
        namespace: ${NACOS_NAMESPACE:dsb-cloud}
        metadata:
          {"checkSum": "${random.value}-${random.uuid}"}
      config:
        server-addr: ${NACOS_SERVER_ADDR:127.0.0.1:8848}
        namespace: ${NACOS_NAMESPACE:dsb-cloud}
        file-extension: yaml

服务注册中心

// 启动类开启注解
@EnableDiscoveryClient

作为 Spring Boot 项目启动后,可以看到成功注册到 Nacos 上了。

.

点击详情后可以看到对应的服务信息

.

Dubbo + Nacos

公共 API 包

.

服务提供者

pom

dependencies {
    compile libs["spring-boot-starter-actuator"]
    //nacos
    compile(libs["nacos-discovery-spring-boot-starter"]) {
        exclude group: 'com.alibaba.spring', module: 'spring-context-support'
    }
    compile 'com.alibaba.spring:spring-context-support:1.0.3'
    compile project(':spring-cloud-examples:dubbo-examples:spring-cloud-dubbo-api')
    compile libs['dubbo-spring-boot-starter']
    testCompile "org.springframework.boot:spring-boot-starter-test"
}

application.yaml

spring:
  application:
    name: spring-boot-dubbo-provider
dubbo:
  application:
    name: spring-boot-dubbo-provider
    registry: nacos://127.0.0.1:8848
  protocol:
    name: dubbo
    port: 20880

bootstrap.yaml

# nacos 配置 (nacos config必须配置在bootstrap)
spring:
  cloud:
    nacos:
      discovery:
        server-addr: ${NACOS_SERVER_ADDR:127.0.0.1:8848}
        namespace: ${NACOS_NAMESPACE:dsb-cloud}
        metadata:
          {"checkSum": "${random.value}-${random.uuid}"}
      config:
        server-addr: ${NACOS_SERVER_ADDR:127.0.0.1:8848}
        namespace: ${NACOS_NAMESPACE:dsb-cloud}
        file-extension: yaml

核心类

// 启动类
@SpringBootApplication
@DubboComponentScan
public class SpringBootDubboProviderApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootDubboProviderApplication.class, args);
    }
}

//服务实现类
package pub.dsb.api.service.impl;

import org.apache.dubbo.config.annotation.Service;
import pub.dsb.api.service.IHelloService;

@Service
public class HelloServiceImpl implements IHelloService {

    @Override
    public String hi(String name) {
        return "spring-cloud-dubbo-example:" + name;
    }
}

启动服务提供者

.

服务消费者

  • pom (和服务提供者一样)
dependencies {
    compile libs["spring-boot-starter-web"]
    compile libs["spring-boot-starter-actuator"]
    //nacos
    compile(libs["nacos-discovery-spring-boot-starter"]) {
        exclude group: 'com.alibaba.spring', module: 'spring-context-support'
    }
    compile 'com.alibaba.spring:spring-context-support:1.0.3'
    compile project(':spring-cloud-examples:dubbo-examples:spring-dubbo-api')
    compile libs['dubbo-spring-boot-starter']
    testCompile "org.springframework.boot:spring-boot-starter-test"
}
  • yaml
spring:
  application:
    name: spring-boot-dubbo-consumer
dubbo:
  registry:
    address: nacos://127.0.0.1:8848
  • 核心类
@RestController
public class DubboRefController {

    @Reference(check = false)
    private IHelloService helloService;

    @GetMapping("/hi")
    public String hi(){
        return helloService.hi(System.currentTimeMillis() + "");
    }

}
//启动类
@SpringBootApplication
public class SpringBootDubboConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootDubboConsumerApplication.class, args);
    }
}
  • 接口测试 服务提供者 8080, 服务消费者 8081
GET http://127.0.0.1:8081/hi

HTTP/1.1 200 
Content-Type: text/plain;charset=UTF-8
Content-Length: 40
Date: Tue, 01 Sep 2020 16:55:53 GMT

spring-cloud-dubbo-example:1598979353325
  • 注册信息

.

问题

ClassNotFoundException: com.alibaba.spring.util.BeanRegistrar

引用新包,剔除有问题的包 spring-context-support

No provider available for the service

@Reference(check = false)

在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nacos 快速上手 的相关文章

  • 【项目实战】大文件断点续传,搞起

    今天给大家分享的又是一篇实战文章 也是最近私活里遇到的 万能的互联网给了我办法 分享一下 背景 最近接到一个新的需求 需要上传2G左右的视频文件 用测试环境的OSS试了一下 上传需要十几分钟 再考虑到公司的资源问题 果断放弃该方案 一提到大
  • 微服务初始

    今天准备开始学习微服务 使用微服务肯定是因为他有好处 首先了解到的三种架构 传统单体 集群架构 微服务架构 单体架构 有单点问题 如果宕机所有的服务都不可用 所有业务的功能模块都聚集在一起 如果代码量多 功能之前如果有很多共同的代码 不同业
  • TreeMap 的特点

    TreeMap基于红黑树实现 增删改查的平均和最差时间复杂度均为O 最大特点时Key有序 key必须实现Comparable接口或者提供Comparator比较器 所以key不允许为null HashMap 依靠hashCode和equal
  • Dubbo和Spring Cloud微服务架构对比

    Dubbo和Spring Cloud微服务架构对比 微服务架构是互联网很热门的话题 是互联网技术发展的必然结果 它提倡将单一应用程序划分成一组小的服务 服务之间互相协调 互相配合 为用户提供最终价值 虽然微服务架构没有公认的技术标准和规范或
  • K8s微服务从0到1入门及命令实战

    写在前面 本文主要介绍k8s的核心概念 基础语法 常用命令和常用操作 Kubernetes介绍 Kubernetes是一种流行的开源容器编排和管理系统 它的目标是简化部署 扩展和管理容器化应用程序 Kubernetes最初由Google开发
  • Go 语言进阶(一) -- Go hertz http框架、kitex RPC微服务框架、gorm 数据库框架三件套用法详解

    Go 框架三件套 1 概论 Gorm Gorm 是一个已经迭代了10年 的功能强大的 ORM框架 在字节内部被广泛使用并且拥有非常丰富的开源扩展 Kitex Kitex 是字节内部 Golang 微服务 RPC 框架 具有高性能 强可扩展的
  • 【微服务】一张图搞懂微服务架构设计

    一张图搞懂微服务架构设计 1 前言 2 流量入口 Nginx 3 网关 4 业务组件 5 服务注册中心 6 缓存和分布式锁 7 数据持久层 8 结构型数据存储 9 消息中间件 10 日志收集 11 任务调度中心 12 分布式对象存储 1 前
  • 云原生微服务应用的平台工程实践

    作者 纳海 01 微服务应用云原生化 微服务是一个广泛使用的应用架构 而如何使得微服务应用云原生化却是近些年一直在演进的课题 国内外云厂商对云原生概念的诠释大同小异 基本都会遵循 CNCF 基金会的定义 云原生技术有利于各组织在公有云 私有
  • 基于SpringBoot-Dubbo的微服务快速开发框架

    简介 基于Dubbo的分布式 微服务基础框架 为前端提供脚手架开发服务 结合前一篇 Web AP快速开发基础框架 可快速上手基于Dubbo的分布式服务开发 项目代码 https github com backkoms web service
  • springcloud集成apollo

    apollo 配置中心 官网 Apollo 官网有设计 部署说明 系统架构图 github开源官网https github com apolloconfig apollo releases releases上下载后发现有这4个文件 apol
  • springboot注册到consul中报错:Spring MVC found on classpath, which is incompatible with Spring Cloud

    今天在做springboot整合成springCloud并注册到consul中时 发现若注册到consule中成功 则不能启动swagger 且不能提供任何API服务 要是能提供API服务则不能注册到consule中 并报错 Spring
  • Dubbo快速入门

    文章目录 一 初识Dubbo 1 Dubbo是什么 2 Dubbo现状 3 Dubbo的故事 主要历程 二 RPC介绍 三 Dubbo工作原理 四 案例实操 项目编写 1 项目创建 2 服务提供者 producer 的开发 3 服务消费方
  • 浅谈微服务异步解决方案

    导言 异步是一种设计思想 不是设计目的 因此不要为了异步而异步 要有所为 有所不为 异步不是 银弹 避免试图套用一个 异步框架 解决所有问题 需要根据不同的业务特点或要求 选择合适的设计实现方式 同步和异步问题是大型分布式系统中需要慎重等待
  • Ribbon负载均衡策略DynamicServerListLoadBalancer的ServerListFilter解读

    一 DynamicServerListLoadBalancer在类图中的位置 二 DynamicServerListLoadBalancer源码解读 1 关键代码请见注释 2 源码位置 ribbon master ribbon loadba
  • SpringCloud概述

    SpringCloud概述 1 SpringCloud是什么 2 SpringCloud和SpringBoot关系 3 Dubbo和SpringCloud技术选型 4 SpringCloud作用 1 SpringCloud是什么 现代化的J
  • 第五章 Gateway--服务网关

    接上一篇文章开始网关之旅 首先告诉大家网关是什么 Gateway简介 怎么配置 怎么入门 执行流程等等相关介绍 第一章 微服务的架构介绍发展第二章 微服务环境搭建第三章 Nacos Discovery 服务治理第四章 Sentinel 服务
  • Docker与微服务:构建和部署微服务架构的完整指南

    微服务架构已经成为现代应用开发的主要范式之一 而Docker容器技术则为微服务的构建 部署和管理提供了理想的解决方案 本文将深入探讨如何使用Docker构建和部署微服务架构 提供更多示例代码和细致的指南 以帮助大家更全面地理解和运用这些关键
  • 如何在 Ubuntu/Debian 上安装特定版本的 Node?

    我想在 Ubuntu 12 04 上安装 NodeJS 版本 0 8 18 我尝试安装最新版本 然后使用恢复到 0 8 18nvm 但是当我运行我的代码时 显然安装的软件包和两个版本 最新和 0 8 18 存在一些问题 由于我不知道如何解决
  • 2023 年精选:每个 DevOps 团队都应该了解的 5 种微服务设计模式

    微服务彻底改变了应用程序开发世界 将大型整体系统分解为更小 更易于管理的组件 这种架构风格的特点是独立 松散耦合的服务 带来了从可扩展性 模块化到更高的灵活性等众多优势 DevOps 团队如何最好地利用这种方法来实现最高效率 答案在于理解并
  • DockerCompose - 微服务项目部署全过程(最佳实践)

    目录 一 微服务项目部署 1 1 项目介绍 1 2 准备 MySQL 初始化文件 1 3 pom xml 插件 1 4 测试工作 1 5 编写 Dockerflie 文件 1 6 编写 DockerCompose yml 文件 1 7 修改

随机推荐

  • 高速缓存(cache)的原理: 了解计算机架构与性能优化

    计基之存储器层次结构 Author Once Day Date 2023年5月9日 长路漫漫 而今才刚刚启程 本内容收集整理于 深入理解计算机系统 一书 参看文档 捋一捋Cache 知乎 zhihu com iCache和dCache一致性
  • vue+ueditor强制修改字体大小

    首先找到 ueditor all js 文件 然后搜索如下代码 body margin 8px font family sans serif font size 16px 修改以上代码的font size仅在内容文本的元素标签没有内联样式时
  • centos 安装ssh和开启 ssh服务

    今天在自己的开发机上搭建ssh配置 顺便记录一下问题 方便以后排查 因为是自己的开发机我这边的环境是centos7 第一步 查看ssh状态 首先根据命令查看ssh状态 这里关注的是否安装和启动状态 若没有安装的话就执行第二步 若出现的是 L
  • 干货分享

    作为一个拥有强劲上进心的程序员 一个励志走向职场巅峰的IT精英 自我提升的平台与机会实在是太重要了 那么问题来了 学技术 卖代码 向大牛们讨经验 寻找项目机会哪家强 小编结合网上资源 吐血整理了一些程序员必逛的国内外网站 不好用你来打我 先
  • 10 大深度学习架构:计算机视觉优秀从业者必备(附代码实现)

    近日 Faizan Shaikh 在 Analytics Vidhya 发表了一篇题为 10 Advanced Deep Learning Architectures Data Scientists Should Know 的文章 总结了计
  • Only one connection receive subscriber allowed.

    这个filter 中报Only one connection receive subscriber allowed 主要是body体为null的情况 Component public class DecryptionFilter imple
  • 【图床搭建】腾讯云COS+PicGo+Typora图床搭建

    图床搭建 腾讯云COS PicGo Typora图床搭建 今天手把手教大家配置一个属于自己的图床 让大家发布在网络中的博客图片也可以被访问 保姆级教学 包教包会 腾讯云COS 1 开通COS 进入腾讯云官网控制台搜索对象存储 腾讯云 产业智
  • C++ 图像处理 之 亮度、色彩平衡调整(逼近PS法)

    C 图像处理 之 亮度 色彩平衡调整 逼近PS法 关键词 图像处理亮度调整 色彩平衡Photoshop 参考博客 http blog csdn net maozefa article details 4493395 http www cnb
  • Shell编程实战

    题目要求 设计一个shell程序计算n的阶乘 要求 1 从命令行接收参数n 2 在程序开始后立即判断n的合法性 即是否有参数 若有是否为正整数 若非法请 给错误提示 3 最后输出计算的结果 考察 if结构 while循环 难点 1 判断参数
  • python报'DataFrame' object has no attribute 'as_matrix'错误

    在python中报错 DataFrame object has no attribute as matrix 解决办法 https pandas pydata org pandas docs stable search html q as
  • JSON中 $ref 的用法

    JSON中 ref 的用法 It is a keyword you can use to refer and reuse schemas 是用来引用 重复使用schema Schema type object title A Non emp
  • 100天精通Python(基础篇)——第5天:数据类型转换

    文章目录 一 字符串 整数 浮点数类型转换的语句 二 数字转字符串 三 字符串转数字 四 整数和浮点数互转 一 字符串 整数 浮点数类型转换的语句 二 数字转字符串 num str str 11 print type num str num
  • mysql下载 补丁_mysql 官方补丁在哪里下载?

    MySQL 64位安装图解 解压缩后运行程序开始安装 选择接受协议 点击下一步 选择developer default 点击 next 检查是否满足安装需求 点击 Execute 按钮后 可能会下载一些程序 到时你自己点击安装就行了 直到所
  • 区块链架构-fabric集群版安装(centos7版本)

    书接上回 配置多机器多节点集群模式 服务器选择说明 暂不考虑高可用 也不考虑kafka 所以先使用三台机器 3M 3台服务器 1O 1 Order 2P 2 Org2Peer 3 1 2证书加密 证书与加密暂时不采用CA 直接使用官方提供的
  • Ai实现FPS游戏自动瞄准 yolov5fps自瞄

    大家好 我是毕加锁 锁 今天来分享一个Yolov5 FPS跟枪的源码解析和原理讲解 代码比较粗糙 各位有什么优化的方式可以留言指出 可以一起交流学习 需要了解的东西和可能会遇到的问题1 xy坐标点与当前鼠标的xy坐标点距离计算 2 获取窗口
  • 两个串口之间传输文件

    一 串口连接 将两个USB TO TTL用两根杜邦线连接 将两个USB TO TTL的RX TX引脚交叉连接 然后将两个USB TO TTL接口接在电脑上 二 传输文件 1 打开两个串口助手 波特率是115200 数据位8 停止位1 无校验
  • el-table合并列&同时在分页时不被割裂开

    核心思想 合并大表格 留出空间给到slot 插槽 在插槽内使用小表格 效果图 具体实现
  • 学生信息管理系统中遇到的一些问题

    学生信息管理系统虽然已经让师父验收了 但感觉还是有很多不足之处 主要是全心全意为客户服务的宗旨有好多地方没有注意到 除了光标的默认输入位置 修改密码时自动默认输入并选中旧密码 师父还提醒我把所有的有关信息的增 删 改 查的窗体都要设为主窗体
  • 访谈,智能座舱开发中的人机交互与人机工程布置

    Mixlab无界社区 跨学科 智能座舱 HCI 前沿知识 N1 智能座舱开发中的人机交互与人机工程布置 丰田部分车型的多媒体系统上的Apple CarPlay 今天是汽车HMI设计师 我最喜欢苹果的UI啦 IOS的UI风格 meta sha
  • Nacos 快速上手

    Nacos 快速上手 文章目录 Nacos 快速上手 准备工作 部署 Spring Boot 集成 配置说明 Spring Cloud Nacos Dubbo Nacos 公共 API 包 服务提供者 服务消费者 问题 微服务现在越来火 有