Spring Cloud Alibaba正式入驻Spring Cloud官方孵化器 初试体验

上个月最后一天的凌晨,Spring Cloud Alibaba 正式入驻了 Spring Cloud 官方孵化器,并在 maven 中央库发布了第一个版本
Spring Cloud Alibaba
目前 Spring Cloud Alibaba 项目还处于 Spring Cloud 官方孵化器中,打开它 Github 的就能看到 “亲切” 的中文文档。

Spring Cloud Alibaba正式入驻Spring Cloud官方孵化器 初试体验

中文文档链接:https://github.com/spring-cloud-incubator/spring-cloud-alibaba/wiki

它目前只有三个组件:

  • Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
  • Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
  • AliCloud OSS: 阿里云对象存储服务(Object Storage Service,简称
    OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。

看官方路线图上讲后边还会增加

  • Dubbo:Apache Dubbo™ (incubating) 是一款高性能 Java RPC 框架。
  • RocketMQ:Apache RocketMQ™ 基于 Java 的高性能、高吞吐量的分布式消息和流计算平台。
  • Schedulerx:阿里中间件团队开发的一款分布式任务调度产品,支持周期性的任务与固定时间点触发任务。
  • AliCloud
    SLS:针对日志类数据的一站式服务,在阿里巴巴集团经历大量大数据场景锤炼而成。您无需开发就能快捷完成日志数据采集、消费、投递以及查询分析等功能,提升运维、运营效率,建立
    DT 时代海量日志处理能力。

Nacos全景图

Spring Cloud Alibaba正式入驻Spring Cloud官方孵化器 初试体验

Nacos基本架构及概念

Spring Cloud Alibaba正式入驻Spring Cloud官方孵化器 初试体验

  • 服务 (Service)

服务是指一个或一组软件功能(例如特定信息的检索或一组操作的执行),其目的是不同的客户端可以为不同的目的重用(例如通过跨进程的网络调用)。Nacos 支持主流的服务生态,如 Kubernetes Service、gRPC|Dubbo RPC Service 或者 Spring Cloud RESTful Service.

  • 服务注册中心 (Service Registry)

服务注册中心,它是服务,其实例及元数据的数据库。服务实例在启动时注册到服务注册表,并在关闭时注销。服务和路由器的客户端查询服务注册表以查找服务的可用实例。服务注册中心可能会调用服务实例的健康检查 API 来验证它是否能够处理请求。

  • 服务元数据 (Service Metadata)

服务元数据是指包括服务端点(endpoints)、服务标签、服务版本号、服务实例权重、路由规则、安全策略等描述服务的数据

  • 服务提供方 (Service Provider)

是指提供可复用和可调用服务的应用方

  • 服务消费方 (Service Consumer)

是指会发起对某个服务调用的应用方

  • 配置 (Configuration)

在系统开发过程中通常会将一些需要变更的参数、变量等从代码中分离出来独立管理,以独立的配置文件的形式存在。目的是让静态的系统工件或者交付物(如 WAR,JAR 包等)更好地和实际的物理运行环境进行适配。配置管理一般包含在系统部署的过程中,由系统管理员或者运维人员完成这个步骤。配置变更是调整系统运行时的行为的有效手段之一。

  • 配置管理 (Configuration Management)

在数据中心中,系统中所有配置的编辑、存储、分发、变更管理、历史版本管理、变更审计等所有与配置相关的活动统称为配置管理。

  • 名字服务 (Naming Service)

提供分布式系统中所有对象(Object)、实体(Entity)的“名字”到关联的元数据之间的映射管理服务,例如 ServiceName -> Endpoints Info, Distributed Lock Name -> Lock Owner/Status Info, DNS Domain Name -> IP List, 服务发现和 DNS 就是名字服务的2大场景。

  • 配置服务 (Configuration Service)

在服务或者应用运行过程中,提供动态配置或者元数据以及配置管理的服务提供者。

直接上手体验
首先引入 Spring Cloud Alibaba 的 BOM

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.6.RELEASE</version>
        <relativePath/>
</parent>
<properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Finchley.SR2</spring-cloud.version>
        <spring-cloud-alibaba.version>0.2.0.RELEASE</spring-cloud-alibaba.version>
  </properties>
  <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    

版本号有坑 ,文档上说和 Spring Boot 2.0.x 版本兼容,但是实测 2.0.6.RELEASE 报错
Spring Cloud Alibaba正式入驻Spring Cloud官方孵化器 初试体验

Nacos Server

在使用 Nacos 之前,需要先下载 Nacos 并启动 Nacos Server。

Nacos Server 有两种运行模式:

  • standalone
  • cluster

不论哪种方式吧,都需要先去 https://github.com/alibaba/nacos/releases 下载最新的 release 包,然后解压,以 nacos-server-0.4.0.zip 为例

unzip nacos-server-0.4.0.zip
cd nacos

standalone 模式
此模式一般用于 demo 和测试,不用改任何配置,直接敲以下命令执行

sh bin/startup.sh -m standalone

然后从 http://localhost:8848/nacos/index.html 进入控制台就能看到如下界面了

Spring Cloud Alibaba正式入驻Spring Cloud官方孵化器 初试体验

配置管理
在 nacos/pom.xml 里添加依赖

       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

启动类不用修改

@SpringBootApplication
public class NacosConfigApplication {

    public static void main(String[] args) {
        SpringApplication.run(NacosConfigApplication.class, args);
    }
}

修改 bootstrap.yml

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

注意:必须是写在 bootstrap.yml 中,配置在 application.yml 中不行,启动报错

最后附上demo源码参考:https://download.****.net/download/qq_32168087/10812081