什么是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连支持一下,创造不易您们的支持是我的动力🤞

相关推荐
大猫和小黄4 小时前
若依微服务全面适配PostgreSQL-OpenGauss数据库
数据库·微服务·postgresql·若依
没有bug.的程序员5 小时前
微服务基础设施清单:必须、应该、可以、无需的四级分类指南
java·jvm·微服务·云原生·容器·架构
天远Date Lab6 小时前
Java微服务实战:聚合型“全能小微企业报告”接口的调用与数据清洗
java·大数据·python·微服务
墨痕诉清风6 小时前
java漏洞集合工具(Struts2、Fastjson、Weblogic(xml)、Shiro、Log4j、Jboss、SpringCloud)
xml·java·struts·安全·web安全·spring cloud·log4j
没有bug.的程序员7 小时前
微服务中的数据一致性困局
java·jvm·微服务·架构·wpf·电商
⑩-7 小时前
SpringCloud-Feign客户端实战
后端·spring·spring cloud
拾忆,想起9 小时前
设计模式三大分类完全解析:构建高质量软件的基石
xml·微服务·设计模式·性能优化·服务发现
楠枬9 小时前
Nacos
java·spring·spring cloud·微服务
一人の梅雨10 小时前
京东商品详情接口深度解析:从宙斯签名到商详数据价值重构
java·spring cloud·微服务
Dolphin_Home19 小时前
从理论到实战:图结构在仓库关联业务中的落地(小白→中级,附完整代码)
java·spring boot·后端·spring cloud·database·广度优先·图搜索算法