什么是SpringCloud Alibaba Nacos注册中心

😀前言

本篇博文是关于SpringCloud Alibaba Nacos的基本介绍和使用,希望你能够喜欢

🏠个人主页:晨犀主页

🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力😉😉

💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰

如果文章有什么需要改进的地方还请大佬不吝赐教 先在此感谢啦😊

文章目录

SpringCloud Alibaba Nacos

Nacos 基础

官网

​ 官网地址: https://github.com/alibaba/Nacos

Nacos 是什么?

说明: Nacos 就是注册中心[替代Eureka]+配置中心[替代Config]。

Nacos:Dynamic Naming and Configuration Service。

Nacos:架构理论基础: CAP 理论(支持AP 和CP, 可以切换)

Nacos 下载&运行

下载: https://github.com/alibaba/nacos/releases/tag/1.2.1

环境要求: Java8/Maven 3.2.x+

解压,运行bin/startup.cmd

浏览器输入http://localhost:8848/nacos

登录用户名/密码为nacos

  1. 输入: localhost:8848/nacos

创建Nacos 服务提供者

需求说明/图解

创建member-service-nacos-provider-10004 并注册到NacosServer8848

创建member-service-nacos-provider-10004
  1. 参考member-service-provider-10000 来创建member-service-nacos-provider-10004 即可
  2. 创建好后, 使用member-service-provider-10000 的源码和配置替换member-service-nacos-provider-10004 生成的代码
  3. 提醒,拷贝时不要忘记拷贝resources/mapper/MemberMapper.xml 这些xxx.xml 文件
修改父项目pom.xml
  1. 参考官方文档https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.html#_spring_cloud_alibaba_nacos_discovery
  1. 修改pom.xml, 加入spring-cloud-alibaba 依赖
xml 复制代码
<!--在父项目统一加入spring-cloud-alibaba 依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>2.1.0.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>
修改本模块pom.xml
  1. 将member-service-provider-10000 的pom.xml 的...拷贝过来,修改即可
xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>e-commerce-center</artifactId>
        <groupId>com.my.springcloud</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>member-service-nacos-provider-10004</artifactId>

    <!--引入相关的依赖-->
    <dependencies>
        <!--引入alibaba-sentinel starter 即场景启动器 这里我们使用版本仲裁-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>

       <!--引入nacos-starter nacos的场景启动器starter -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-nacos-discovery</artifactId>
        </dependency>

        <!--引入web-starter 师说明我们使用版本仲裁(从父项目继承了版本)
        -->
        <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>

        <!--引入mybatis-starter 整合到springboot-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>

        <!--引入druid-starter-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <!--这里需要我们指定版本, 因为父项目没有-->
            <version>1.1.17</version>
        </dependency>

        <!--引入mysql依赖,使用版本仲裁-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <!--spring-boot-start-jdbc引入-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

        <!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <!--引入test-starter-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
        <!--引入公共模块-->
        <dependency>
            <groupId>com.my.springcloud</groupId>
            <artifactId>e_commerce_center-common-api</artifactId>
            <version>${project.version}</version>
        </dependency>
    </dependencies>
</project>
创建application.yml
  1. 将member-service-provider-10000 的application.yml 拷贝过来,修改即可
yml 复制代码
server:
  port: 10004

spring:
  application:
    name: member-service-nacos-provider #配置应用的名称
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    url: jdbc:mysql://localhost:3306/e_commerce_center_db?useSSL=true&useUnicode=true&characterEncoding=UTF-8
    username: root
    password: 123456
  #配置nacos
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置Nacos Server的地址
#配置暴露所有的监控点
management:
  endpoints:
    web:
      exposure:
        include: '*'
#配置mybatis
mybatis:
  mapper-locations: classpath:mapper/*.xml #指定mapper.xml文件位置
  type-aliases-package: com.my.springcloud.entity # 实例类所在的包,这样通过类名就可以引用
创建主启动类
  1. 创建主启动类MemberNacosProviderApplication10004
java 复制代码
//@EnableDiscoveryClient 引入的是Nacos 发现注解
@EnableDiscoveryClient
@SpringBootApplication
public class MemberNacosProviderApplication10004 {
    public static void main(String[] args) {
    	SpringApplication.run(MemberNacosProviderApplication10004.class, args);
    }
}
为看到更好提示,修改Controller
  1. 修改com/my/springcloud/controller/MemberController.java 的输出信息
java 复制代码
@RestController
@Slf4j
public class MemberController {

    //装配MemberService
    @Resource
    private MemberService memberService;
    
    //添加方法/接口
    //这里请小伙伴回顾, 应该如何提交
    //说明
    //1. 我们的前端如果是以json格式来发送添加信息Member, 那么我们需要使用@RequestBody
    //   , 才能将数据封装到对应的bean, 同时保证http的请求头的 content-type是对应
    //2. 如果前端是以表单形式提交了,则不需要使用@RequestBody, 才会进行对象参数封装, 同时保证
    //   http的请求头的 content-type是对应
    @PostMapping("/member/save")
    public Result save(@RequestBody Member member) {
        log.info("service-provider member={}", member);
        int affected = memberService.save(member);
        if (affected > 0) { //说明添加成功
            return Result.success("添加会员成功 member-service-nacos-provider-10004", affected);
        } else {
            return Result.error("401", "添加会员失败");
        }
    }

    //查询的方法/接口
    //师这里使用url占位符+@PathVariable
    @GetMapping("/member/get/{id}")
    //public Result getMemberById(@PathVariable("id") Long id, HttpServletRequest request) {
    public Result getMemberById(@PathVariable("id") Long id) {

        Member member = memberService.queryMemberById(id);

        //使用Result把查询到的结果返回
        if (member != null) {
            //return Result.success("查询会员成功 member-service-provider-10000 " + color + "-" + address, member);
            return Result.success("查询会员成功 member-service-nacos-provider-10004", member);
        } else {
            return Result.error("402", "ID= " + id + "不存在");
        }

    }
}
测试

​ 启动Nacos Server 8848

​ 启动member-service-nacos-provider-10004

观察nacos 服务是否注册成功
浏览器输出: http://localhost:10004/member/get/1

文章到这里就结束了,如果有什么疑问的地方请指出,诸大佬们一起来评论区一起讨论😁

希望能和诸大佬们一起努力,今后我们一起观看感谢您的阅读🍻

如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞

相关推荐
身如柳絮随风扬11 小时前
Dubbo 与 Spring Cloud 终极对比:RPC 框架 vs 微服务生态
spring cloud·rpc·dubbo
匀泪15 小时前
云原生(Kubernetes service微服务)
微服务·云原生·kubernetes
一个有温度的技术博主16 小时前
Spring Cloud 入门与实战:从架构拆分到核心组件详解
spring·spring cloud·架构
uNke DEPH17 小时前
SpringCloud Gateway 集成 Sentinel 详解 及实现动态监听Nacos规则配置实时更新流控规则
spring cloud·gateway·sentinel
慕容卡卡21 小时前
你所不知道的RAG那些事
java·开发语言·人工智能·spring boot·spring cloud
dLYG DUMS21 小时前
Spring Cloud Data Flow 简介
后端·spring·spring cloud
Ken_11151 天前
SpringCloud系列(61)--Nacos之服务配置中心的介绍与使用
spring cloud
Ken_11151 天前
SpringCloud系列(62)--Nacos之命名空间、分组和DataID三者之间的关系
spring cloud
全栈软件开发2 天前
企业年报服务系统/小微服务助手小程序源码带搭建教程
微服务·年报小程序源码
Ken_11152 天前
SpringCloud系列(63)--Nacos读取不同配置之DataID配置方案
spring cloud