0
点赞
收藏
分享

微信扫一扫

SpringCloud Alibaba的Nacos注册中心搭建 及 使用本地Mysql存储数据

大师的学徒 2022-02-16 阅读 31

在这里插入图片描述

点击下载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
在这里插入图片描述

父工程导入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;
    }
}
举报

相关推荐

0 条评论