学成在线Nacos环境搭建

搭建Nacos环境

参考文章Nacos配置中心和Nacos注册中心

服务发现中心

第一步: 在Nacos中配置namespace,点击左侧菜单命名空间进入命名空间管理界面,新增开发(dev)/测试(test)/生产环境(prod)的命名空间

学成在线Nacos环境搭建_第1张图片

第二步: 在xuecheng-plus-parent父工程中添加springCloudAlibaba的管理依赖

<properties>
    <spring-cloud-alibaba.version>2.2.6.RELEASEspring-cloud-alibaba.version>
properties>
<dependencyManagement>
    <dependencies>
        <groupId>com.alibaba.cloudgroupId>
        <artifactId>spring-cloud-alibaba-dependenciesartifactId>
        <version>${spring-cloud-alibaba.version}version>
        <type>pomtype>
        <scope>importscope>
    dependencies>
dependencyManagement>

第二步: 在内容管理模块的接口工程系统管理模块的接口工程中添加nacos服务发现依赖

<dependency>
    <groupId>com.alibaba.cloudgroupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
dependency>

第三步: 添加配置将内容管理的接口工程和系统管理的接口工程注册到Nacos

# 注册内容管理的接口工程
spring:
  application:
    name: content-api # 注册的服务名称
  cloud:
    nacos:
      server-addr: 127.0.0.1:8848 # nacos服务的地址
      discovery:
        namespace: dev # 命名空间
        group: xuecheng-plus-project # 组名
# 注册系统管理的接口工程
spring:
  application:
    name: system-api
  cloud:
    nacos:
      server-addr: 127.0.0.1:8848
      discovery:
        namespace: dev
        group: xuecheng-plus-project        

第四步: 重启content-api服务和system-api服务然后进入Nacos中查看服务列表

学成在线Nacos环境搭建_第2张图片

公用配置swagger/logging

由于所有服务的api工程都需要配置swagger接口文档和logging日志文件,这里可以将其定义为一个公用配置,哪个项目用引入即可

在Nacos的开发环境(dev)xuecheng-plus-common分组下创建项目中所有接口工程公用的配置文件swagger-dev.yaml

学成在线Nacos环境搭建_第3张图片

## swagger 文档配置
swagger:
  title: "学成在线内容管理系统"
  description: "内容系统管理系统对课程相关信息进行业务管理数据"
  base-package: com.xuecheng.content
  enabled: true
  version: 1.0.0

在Nacos的开发环境(dev)中的xuecheng-plus-common分组下创建项目中所有接口工程公用的配置文件logging-dev.yaml

学成在线Nacos环境搭建_第4张图片

## 日志文件配置路径
logging:
	config: classpath:log4j2-dev.xml

远程配置service工程

第一步: 在内容管理服务和系统管理服务的service工程的pom.xml文件中添加Nacos配置依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

第二步: 在本地的service工程的resources中添加bootstrap.yaml,以下这部分配置必须要配置到本地

  • Nacos先根据本地配置文件中的spring.cloud.nacos.server-addr属性获取Nacos地址
  • ${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}作为文件id读取远程配置文件
# 内容管理服务
spring:
  application:
    name: content-service
  cloud:
    nacos:
      server-addr: localhost:8848
      config:
        namespace: dev
        group: xuecheng-plus-project
        file-extension: yaml
        # 以上内容完成是引入content-service-dev.yaml文件
        refresh-enabled: true
        # 引入公用的日志配置文件路径
        shared-configs:
          - data-id: logging-${spring.profiles.active}.yaml
            group: xuecheng-plus-common
            refresh: true
  #profiles默认为dev
  profiles:
    active: dev
    
 # 系统管理服务
spring:
  application:
    name: system-service
  cloud:
    nacos:
      server-addr: local:8848
      config:
        namespace: ${spring.profiles.active}
        group: xuecheng-plus-project
        file-extension: yaml
        # 以上内容完成是引入system-service-dev.yaml文件
        refresh-enabled: true
        # 引入公用的日志配置文件路径
        shared-configs:
          - data-id: logging-${spring.profiles.active}.yaml
            group: xuecheng-plus-common
            refresh: true
  profiles:
    active: dev

第三步: 在Nacos的配置管理中选择开发环境(dev)并添加content-service-dev.yamlsystem-service-dev.yaml远程配置文件

学成在线Nacos环境搭建_第5张图片

# 内容管理服务
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/xc_content?serverTimezone=UTC&userUnicode=true&useSSL=false&
    username: root
    password: 123456
# 系统管理服务
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/xc_content?serverTimezone=UTC&userUnicode=true&useSSL=false&
    username: root
    password: 123456   

第四步: 运行service工程中的单元测试文件,如果可以正常读取数据库的数据,说明从nacos读取到了配置的数据源信息

@Test
void contextQueryCourseTest() {
    PageResult<CourseBase> result = courseBaseInfoService.queryCourseBaseList(new PageParams(1L, 10L), new QueryCourseParamDto());
    log.info("查询到数据:{}", result);
}

远程配置api工程

第一步: 在内容管理服务和系统管理服务的api工程的pom.xml文件中添加Nacos配置依赖,只有添加了该依赖才能读远程的配置文件

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

第二步: 在本地的api工程的resources目录下添加bootstrap.yaml,以下这部分配置必须要配置到本地

  • 因为api接口工程依赖service工程,可以使用extension-configs以扩展配置文件的方式引用content-service工程用到的远程配置文件中的数据库配置
# 内容管理服务
spring:
  application:
    name: content-api
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        namespace: dev
        group: xuecheng-plus-project
      config:
        namespace: dev
        group: xuecheng-plus-project
        file-extension: yaml
        # 以上内容完成是引入content-api-dev.yaml
        refresh-enabled: true
        # 引入扩展的配置文件,可以引入多个
        extension-configs:
          - data-id: content-service-${spring.profiles.active}.yaml
            group: xuecheng-plus-project
            refresh: true
        # 引入公用的配置   
        shared-configs:
          - data-id: swagger-${spring.profiles.active}.yaml
            group: xuecheng-plus-common
            refresh: true
          - data-id: logging-${spring.profiles.active}.yaml
            group: xuecheng-plus-common
            refresh: true
  #profiles默认为dev           
  profiles:
    active: dev  
    
# 系统管理服务
spring:
  application:
    name: system-api
  cloud:
    nacos:
      server-addr: 127.0.0.1:8848
      discovery:
        namespace: ${spring.profiles.active}
        group: xuecheng-plus-project
      config:
        namespace: ${spring.profiles.active}
        group: xuecheng-plus-project
        file-extension: yaml
        refresh-enabled: true
        # 引入扩展的配置文件
        extension-configs:
          - data-id: system-service-${spring.profiles.active}.yaml
            group: xuecheng-plus-project
            refresh: true
        # 引入公用的配置文件    
        shared-configs:
          - data-id: swagger-${spring.profiles.active}.yaml
            group: xuecheng-plus-common
            refresh: true
          - data-id: logging-${spring.profiles.active}.yaml
            group: xuecheng-plus-common
            refresh: true
  profiles:
    active: dev   

第三步: 在Nacos的配置管理中选择开发环境(dev)并添加content-api-dev.yamlsystem-api-dev.yaml远程配置文件

# 内容管理服务
server:
  servlet:
    context-path: /content
    # 这里可以切换端口进行测试远程配置文件是否生效
  port: 63040
  
# 系统管理服务  
server:
  servlet:
    context-path: /system
  port: 63110  

第四步: 重启content-api工程,访问http://localhost:63040/content/swagger-ui.html查看swagger接口文档是否可以正常访问和控制台log4j2日志输出是否正常

在这里插入图片描述

你可能感兴趣的:(学成在线,网络,Nacos,学成在线,java)