分布式微服务 SpringCloud Alibaba 中 Nacos 服务注册中心 组件搭建 (持久化存储配置)

本文详细介绍了如何下载并配置Nacos Server,包括设置MySQL数据库、修改配置文件及启动服务。接着展示了如何在Java项目中引入Nacos作为服务发现组件,分别从服务提供方和服务消费方的角度进行配置,并提供了相应的代码示例。通过这些步骤,成功实现了微服务在Nacos上的注册与发现。
摘要由CSDN通过智能技术生成

下载Nacos Server服务中心

在这里插入图片描述

点击下载Nacos Serve

下载解压成功后

使用本地Mysql存储数据(非强制修改)

1.在mysql server 新建数据库:springcloud_alibaba(名字随意)
2.在nacos server的 conf目录下找到nacos-mysql.sql 文件,并在创建的springcloud_alibaba数据库下执行表nacos-mysql.sql中的SQL语句

在这里插入图片描述

结果如下

在这里插入图片描述

3.修改nacos server application.properties配置文件,修改后如下
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://数据库IP:端口号/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=数据库用户名
db.password=数据库密码

启动服务操作

进入\nacos\bin

在这里插入图片描述

右键==》在windows终端打开
输入==》startup.sh -m tandalone

在这里插入图片描述

访问 Console:后面的网址,出现Nacos的可视化界面

默认账号:nacos
默认密码:nacos
在这里插入图片描述

java代码部分

父工程导入pom
 <dependencyManagement>
        <dependencies>
            <!--Alibaba-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${alibaba-version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--cloud-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${cloud-version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--Spring-boot-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${boot-version}</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
        </dependencies>
    </dependencyManagement>
Nacos官方版本兼容图

在这里插入图片描述

服务提供方

子工程服务提供方导入
		<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
编写提供方application.yml文件
server:
#  服务端口
  port: 24102
spring:
  #  数据库数据源
  datasource:
#    驱动
    driver-class-name: com.mysql.cj.jdbc.Driver
#    数据库地址
    url: jdbc:mysql://127.0.0.1:3306/springcloud?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
#    用户
    username: root
#    密码
    password: 123456
  application:
#    服务名
    name: user-provider
  cloud:
    nacos:
      discovery:
#        nacos服务地址
        server-addr: 192.168.116.1:8848
编写提供方启动类
@SpringBootApplication
@MapperScan(basePackages = "com.guigu.cloud.mapper")
public class UserProviderApplication24102 {
    public static void main(String[] args) {
        SpringApplication.run(UserProviderApplication24102.class,args);
    }
}
编写提供方Controller层
@RestController
@RequestMapping("user")
public class UserController {

    @Resource
    UserService userService;

    @SneakyThrows
    @RequestMapping("find/{id}")
    public TbUser findById(@PathVariable Integer id){
        log.info("provide:id:"+id);
        return userService.getUserId(id);
    }
}

启动类运行成功后访问Nacos Server的可视化界面
出现以下结果则服务发布成功
在这里插入图片描述

服务消费方

子工程服务消费方导入
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
编写消费方application.yml文件
server:
  port: 7777
spring:
  application:
    name: user-consumer
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.116.1:8848/
编写消费方配置类
@Configuration
public class NacosConfig {
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}
编写消费方启动类
// 排除mybatis的自动配置类 注:(导入了api子模块,api子模块导入了Mybatis,但是服务消费方不需要mybatis)
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
public class UserConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(UserConsumerApplication.class,args);
    }
}
编写消费方Controller层
@Slf4j
@RestController
@RequestMapping("nacos")
public class UserController {
    @Resource
    /*发送请求对象*/
    private RestTemplate restTemplate;

    @RequestMapping("getUser/{id}")
    public TbUser findById(@PathVariable Integer id){
        //发送请求
        String url = "http://user-provider/user/find/"+id;
        TbUser tbUser = restTemplate.getForObject(url, TbUser.class);
        log.info(String.valueOf(tbUser));
        return tbUser;
    }
}
访问服务消费者服务即可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值