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

下载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;
    }
}
访问服务消费者服务即可
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Cloud Alibaba Nacos 是一个服务注册中心和配置心,可以实现服务注册与发现、配置的动态管理等功能,同时还提供了容灾和高可用的支持。下面简单介绍如何使用 Nacos 实现 Spring Cloud 的配置容灾。 首先,在应用的 `pom.xml` 文件添加如下依赖: ```xml <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.2.3.RELEASE</version> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2.2.3.RELEASE</version> </dependency> ``` 然后在 `application.properties` 配置 Nacos 的地址和应用的名称: ```properties spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 spring.cloud.nacos.discovery.namespace=your-namespace spring.cloud.nacos.config.server-addr=127.0.0.1:8848 spring.cloud.nacos.config.namespace=your-namespace spring.cloud.nacos.config.file-extension=properties spring.application.name=your-application-name ``` 其 `server-addr` 是 Nacos 的地址,`namespace` 是命名空间,`file-extension` 是配置文件的扩展名,`application.name` 是应用的名称。 接着在 `bootstrap.properties` 配置应用的环境和配置来源: ```properties spring.profiles.active=dev spring.cloud.nacos.config.prefix=${spring.application.name}-${spring.profiles.active} spring.cloud.nacos.config.group=DEFAULT_GROUP spring.cloud.nacos.config.shared-dataids=${spring.application.name}-${spring.profiles.active}.properties ``` 其 `spring.profiles.active` 是应用的环境,`prefix` 是配置文件的前缀,`group` 是配置文件所在的分组,`shared-dataids` 是配置文件的名称。 最后,在代码使用 `@Value` 注解来获取配置项的值: ```java @RestController public class ConfigController { @Value("${config.key}") private String configValue; @GetMapping("/config") public String getConfig() { return configValue; } } ``` 其 `config.key` 是配置项的名称。 以上就是使用 Nacos 实现 Spring Cloud 的配置容灾的简单示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值