Spring Cloud Alibaba 使用

138 阅读2分钟

版本说明

Spring Cloud AlibabaSentinelNacosRocketMQDubboSeata
2.2.4.RELEASE1.8.01.4.14.4.02.7.81.3.0

Nacos - 配置中心与服务注册发现

单机模式下运行Nacos

  1. 下载nacos 下载 1.4.1 版本 nacos-server-1.4.1.tar.gz 包. 解压至 nacos目录
tar -zxf nacos-server-1.4.1.tar.gz
  1. 配置nacos
  • 修改 spring.datasource.platformdb.num
  • 配置数据库连接 示例如下
#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
spring.datasource.platform=mysql

### Count of DB:
db.num=1

### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_db?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=root
  1. 启动nacos
sh bin/startup.sh -m standalone
  1. 测试 访问http://127.0.0.1:8848/nacos/index.html

默认用户名密码 nacos/nacos nacos

nacos命名空间(租户)

用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 GroupData ID 的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境生产环境的资源(如配置、服务)隔离等。

nacos namespace

nacos权限管理

nacos默认安全性较低,可配置权限分配不同的用户不同资源可读可写

  1. 新建用户
  2. 绑定角色
  3. 配置权限

spring cloud 工程使用

关于 Nacos Spring Cloud 的详细文档请参看:Nacos ConfigNacos Discovery

推荐使用spring clodspring cloud alibaba 的maven bom

      <properties>
          <java.version>1.8</java.version>
          <spring-cloud.version>Hoxton.SR8</spring-cloud.version>
          <spring-cloud-alibaba.version>2.2.4.RELEASE</spring-cloud-alibaba.version>
          <spring-cloud-aliyun-oss.version>2.2.0.RELEASE</spring-cloud-aliyun-oss.version>
      </properties>
      <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alicloud-oss</artifactId>
                <version>${spring-cloud-aliyun-oss.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

Nacos Config 配置中心

通过 Nacos Serverspring-cloud-starter-alibaba-nacos-config 实现配置的动态变更。

  1. 在nacos中新增配置
Data ID:    nacos-config.properties
Group  :    DEFAULT_GROUP
配置格式:    yaml
配置内容:   user:
    		name: nacos-config-properties
    		age: 18

注意dataid是以 properties(默认的文件扩展名方式)为扩展名。

Nacos Spring Cloud 中,dataId 的完整格式如下:

${prefix}-${spring.profiles.active}.${file-extension}

  • prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
  • spring.profiles.active 即为当前环境对应的 profile

注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}

  • file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 propertiesyaml 类型。
  1. 在pom中新增
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
  1. 创建spring boot应用
@SpringBootApplication
public class ProviderApplication {
    public static void main(String[] args) {
        ConfigurableApplicationContext applicationContext = SpringApplication.run(ProviderApplication.class, args);
        String userName = applicationContext.getEnvironment().getProperty("user.name");
        String userAge = applicationContext.getEnvironment().getProperty("user.age");
        System.err.println("user name :"+userName+"; age: "+userAge);
    }
}

在运行之前, 必须使用 bootstrap.yaml 配置文件来配置Nacos Server 地址,例如:

spring:
  application: 
    name: nacos-config
  cloud:
    nacos: 
      config: 
        server-addr: 127.0.0.1:8848

可以看到

2021-01-19 13:31:19.025  INFO [bookola-base-service,,,] 17781 [] --- [  restartedMain] b.c.PropertySourceBootstrapConfiguration : Located property source: [BootstrapPropertySource {name='bootstrapProperties-bookola-base-service.yaml,bookola-biz-service'}, BootstrapPropertySource {name='bootstrapProperties-bookola-base-service,bookola-biz-service'}, BootstrapPropertySource {name='bootstrapProperties-common-redis.yaml,bookola-biz-service'}] 

Nacos Discovery 服务注册中心

通过 Nacos Serverspring-cloud-starter-alibaba-nacos-discovery 实现服务的注册与发现。

  1. 在pom中新增
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
  1. 在appliaction.yaml中配置注册zhongxin
  spring:
    cloud:
      nacos:
        discovery:
          server-addr: 127.0.0.1:8848
          username: dev
          password: dev

          namespace: e8a87655-33f5-4c7a-a575-baf37ad30530
          group: bookola
          service: bookola-base-service
          cluster-name: bookola-1

  1. 启动应用后即可在nacos控制台看到服务

Spring cloud 网关

Sleuth 与 Zipkin 链路追踪

SEATA - 分布式事务