Spring Cloud 項目綜述(技術棧一覽) 頂 原 薦

歡迎持續關注: http://blog.geekidentity.com/spring/spring_cloud_overview/

加羣交流:490788638

前言

Spring Cloud 爲構建分佈式系統和微服務提供了一些通用的工具,例如:配置中心,服務註冊與發現,熔斷器,路由,代理,控制總線,一次性令牌,全局鎖,leader選舉,分佈式 會話,集羣狀態等。

目前國內有很多公司還是使用dubbo做服務分解,但dubbo只提供了服務註冊發現功能,要建立分佈式系統還要自己找對應工具進行組合,當然這樣定製性、靈活性高,但有些技術要摸着走,而且阿里已經停止了對dubbo的更新。

如果採用Spring Cloud技術棧,Spring Cloud提供了分佈式系統和微服務中所需要的約大多數公共模塊和功能,

Spring Cloud 下各項目都是基於 Spring Boot 的,所有要想用Spring Cloud做微服務開發,最好先掌握 Spring Boot

下表是dubbox與Spring Cloud技術棧對比

功能DubboxSpring Cloud
服務註冊中心ZookeeperSpring Cloud Netflix Eureka
服務調用方式RPC/REST APIREST API
服務網關Spring Cloud Netflix Zuul
熔斷器不完善Spring Cloud Netflix Hystrix
分佈式配置Spring Cloud Config
服務跟蹤Spring Cloud Sleuth
消息總線Spring Cloud Bus
數據流Spring Cloud Stream
批量任務Spring Cloud Task

Spring Cloud Cluster

Zookeeper,Redis,Hazelcast,Consul的leader選舉和公共的狀態模式的抽象和實現。

簡介

Spring Cloud爲開發人員提供了快速構建分佈式系統中的一些通用模式(patterns)的工具(例如配置管理,服務發現,熔斷器,智能路由,微代理,控制總線(control bus),一次性令牌,全局鎖,leader選舉,分佈式 會話,集羣狀態)。 分佈式系統的協調導致鍋爐板模式(boiler plate patterns),並且使用Spring Cloud開發人員可以快速開發出(stand up)實現這些模式的服務和應用程序。 程序將在任何分佈式環境中都可以良好的運行,包括開發人員自己的筆記本電腦,裸機數據中心,以及像Cloud Foundry的託管平臺。

Spring Cloud基於Spring Boot,通過提供的一組類庫,可以在增強應用程序的行爲。 您可以利用基本的默認行爲(behaviour)/配置快速入門,然後在需要時,您可以配置或擴展以創建自定義解決方案。

快速開始

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.5.RELEASE</version>
</parent>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Camden.SR6</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-config</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka</artifactId>
    </dependency>
</dependencies>

功能

Spring Cloud致力於爲典型的使用案例和擴展機制提供良好的開箱即用的體驗。

  • 分佈式/版本化配置
  • 服務註冊和發現
  • 路由
  • 服務到服務(Service-to-service)的調用
  • 負載均衡
  • 熔斷器(Circuit Breakers)
  • 全局鎖
  • Leader選舉和集羣狀態
  • 分佈式消息

Spring Cloud採用註解聲明的方式,通常只需要一個類路徑和(或)解釋更改即可獲得很多功能。作爲發現客戶端的示例應用程序:

@SpringBootApplication
@EnableDiscoveryClient
public class Application {
	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}
}

Spring Cloud Config

由git倉庫支持的統一配置管理。配置資源直接映射到SpringEnvironment,但如果需要,可以使用非Spring應用程序。

簡介

Spring Cloud Config爲分佈式系統中的外部統一配置中心提供服務器和客戶端支持。使用Config Server,您可以在所有環境中管理應用程序的外部(externalized)配置屬性。客戶端和服務器映射的概念與Spring Environment和PropertySource抽象相同,因此它們與Spring應用程序非常契合,但可以與任何語言的應用程序一起使用。伴隨着應用程序通過從開發環境到測試環境和生產環境的部署過程,您可以管理這些環境之間的配置,並確定應用程序不同環境遷移時需要所有配置屬性。服務器存儲端的默認實現使用git,因此它可以輕鬆支持帶標籤版本的配置環境,以及可以訪問用於管理的內容的各種工具。可以輕鬆添加替代實現,並使用Spring配置將其插入。

功能

Spring Cloud Config Server功能:

  • 基於HTTP資源的外部配置API(名稱/值對或等效的YAML內容)
  • 對屬性值加密和解密(對稱或非對稱)
  • 可以使用@EnableConfigServer輕鬆嵌入Spring Boot應用程序

Config Client功能(適用於Spring應用程序):

  • 綁定到Config Server並使用遠程的屬性源初始化Spring Environment
  • 對屬性值加密和解密(對稱或非對稱)

快速開始

以使用Maven爲項目依賴管理爲例:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config</artifactId>
            <version>1.3.1.BUILD-SNAPSHOT</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-config</artifactId>
    </dependency>
</dependencies><repositories>
    <repository>
        <id>spring-snapshots</id>
        <name>Spring Snapshots</name>
        <url>https://repo.spring.io/libs-snapshot</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

只要Spring Boot Actuator和Spring Config Client類庫在類路徑中,任何Spring Boot應用程序將嘗試連接http://localhost:8888(spring.cloud.config.uri的默認值)的配置服務器:

@Configuration
@EnableAutoConfiguration
@RestController
public class Application {

  @Value("${config.name}")
  String name = "World";

  @RequestMapping("/")
  public String home() {
    return "Hello " + name;
  }

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

}

示例中的config.name的值(或在Spring Boot以正常方式綁定的任何其他值)可以來自本地配置或遠程Config Server。 默認情況下,Config Server將優先。要查看應用程序中的/env端點,請參閱configServer屬性源。

要運行自己的服務器,請使用spring-cloud-config-server依賴項和@EnableConfigServer註解。如果您設置spring.config.name=configserver,則應用程序將在端口8888上運行,並從樣本存儲庫(sample repository)提供數據。 您需要一個spring.cloud.config.server.git.uri來找到自己需要的配置數據(默認情況下,它是git存儲庫的位置,可以是本地url:.. URL)。

Spring Cloud Netflix

集成各種Netflix OSS組件(Eureka, Hystrix, Zuul, Archaius等)。

簡介

Spring Cloud Netflix通過自動配置、綁定到Spring Environment 和其他Spring編程模型語法來爲Spring Boot應用程序提供Netflix OSS集成。通過幾個簡單的註解,您可以快速啓用和配置應用程序中的常見模式,並使用經過考驗的Netflix組件構建大型分佈式系統。 提供的常見模式包括服務發現(Eureka),融斷機制(Hystrix),智能路由(Zuul)和客戶端負載平衡(Ribbon)。

功能

Spring Cloud Netflix功能:

  • 服務發現:可以註冊Eureka實例,客戶端可以使用Spring管理的bean來發現實例
  • 服務發現:可以使用聲明式Java配置創建嵌入式Eureka服務器
  • 融斷機制:Hystrix客戶端可以使用簡單的註釋驅動方法裝飾器構建
  • 融斷機制:具有聲明式Java配置的嵌入式Hystrix儀表板
  • 聲明性REST客戶端:Feign創建了一個使用JAX-RS或Spring MVC註解裝飾的接口的動態實現
  • 客戶端負載均衡器:Ribbon
  • 外部配置:從Spring Environment 到Archaius的橋樑(使用Spring Boot約定啓用Netflix組件的本地配置)
  • 路由器和過濾器:Zuul過濾器的自動註冊,以及反向代理創建的簡單配置方法

快速開始

Maven:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-netflix</artifactId>
            <version>1.3.1.BUILD-SNAPSHOT</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka</artifactId>
    </dependency>
</dependencies><repositories>
    <repository>
        <id>spring-snapshots</id>
        <name>Spring Snapshots</name>
        <url>https://repo.spring.io/libs-snapshot</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

只要Spring Cloud Netflix和Eureka Core類庫在類路徑中,任何具有@EnableEurekaClient的Spring Boot應用程序將嘗試連接 http://localhost:8761 (eureka.client.serviceUrl.defaultZone的默認值)上的Eureka服務器:

@Configuration
@EnableAutoConfiguration
@EnableEurekaClient
@RestController
public class Application {

  @RequestMapping("/")
  public String home() {
    return "Hello World";
  }

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

}

要運行自己的服務器,請添加依賴spring-cloud-starter-eureka-server和@EnableEurekaServer註解。

Spring Cloud Bus

用於將服務和服務實例以及分佈式消息傳遞鏈接的事件總線。 用於在集羣中傳播狀態更改(例如配置更改事件)。

簡介

Spring Cloud Bus將分佈式系統的節點與輕量級消息代理連接起來。 這可以用於廣播狀態改變(例如配置改變)或其他管理指令。 目前唯一的實現是使用AMQP代理作爲傳輸,但是相同的基本功能集(還有一些取決於傳輸)在其他傳輸的路線圖上。

快速開始

Maven:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-bus-parent</artifactId>
            <version>1.3.0.M1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-bus-amqp</artifactId>
    </dependency>
</dependencies><repositories>
    <repository>
        <id>spring-milestones</id>
        <name>Spring Milestones</name>
        <url>https://repo.spring.io/libs-milestone</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>

只要Spring Cloud Bus AMQP和RabbitMQ類庫在類路徑中,任何Spring Boot應用程序將嘗試連接 localhost:5672上的RabbitMQ服務器(spring.rabbitmq.addresses的默認值):

@Configuration
@EnableAutoConfiguration
@RestController
public class Application {

  @RequestMapping("/")
  public String home() {
    return "Hello World";
  }

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

}

Spring Cloud for Cloud Foundry

將您的應用程序與Pivotal Cloudfoundry集成。 提供服務發現實現,並且還可以輕鬆實現SSO和OAuth2保護的資源,還可以創建Cloudfoundry服務代理。

簡介

Spring Cloud for Cloudfoundry可以輕鬆在Cloud Foundry(平臺即服務)中運行Spring Cloud應用程序。 Cloud Foundry有一個“服務”的概念,它是“綁定”到應用程序的中間件,本質上爲其提供包含憑據的環境變量(例如,用於服務的位置和用戶名)。

功能

spring-cloud-cloudfoundry-web項目爲Cloud Foundry中的webapps的一些增強功能提供了基本支持:自動綁定到單點登錄服務,並可選擇啓用粘性路由進行發現。

spring-cloud-cloudfoundry-discovery項目提供了Spring Cloud Commons DiscoveryClient的實現,因此您可以@EnableDiscoveryClient並將提供您的憑據spring.cloud.cloudfoundry.discovery.[email,password],然後可以直接使用DiscoveryClient或通過 一個LoadBalancerClient使用(如果您沒有連接到Pivotal Web Services,也是 *.url)。

注意:如果您正在尋找一種綁定到服務的方法,那麼這是錯誤的庫。 請查看Spring Cloud連接器。

快速開始

Maven:

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-cloudfoundry-web</artifactId>
        <version>1.0.2.BUILD-SNAPSHOT</version>
    </dependency>
</dependencies><repositories>
    <repository>
        <id>spring-snapshots</id>
        <name>Spring Snapshots</name>
        <url>https://repo.spring.io/libs-snapshot</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

Spring Cloud Cloud Foundry Service 代理

提供構建管理Cloud Foundry管理服務的服務代理的起點。

簡介

Spring Cloud Cloud Foundry Service Broker是構建Spring Boot應用程序的框架,用於實現Cloud Foundry Service Broker API並管理Cloud Foundry Marketplace中提供的服務。

Cloud Foundry管理的服務由服務代理管理,服務代理通知其服務提供的服務計劃,並提供,銷燬,綁定和解除綁定服務實例。 Spring Cloud Cloud Foundry Service Broker提供了一個基於Spring Boot的框架,使您可以在Cloud Foundry上爲您自己的託管服務快速創建代理。

功能

  • 目錄和服務綁定/解除端點的默認配置
  • 支持異步服務操作(Cloud Foundry Service Broker API 2.7)
  • 支持提供給cf Command Line Interface工具的任意參數
  • 支持Cloud Foundry路由服務

快速開始

Maven:

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-cloudfoundry-service-broker</artifactId>
        <version>1.0.0.RELEASE</version>
    </dependency>
</dependencies>

要啓用Spring Cloud Cloud Foundry Service Broker框架的默認配置,您的代理應用程序只需要在其主應用程序類中使用@EnableAutoConfiguration或@SpringBootApplication註解:

@SpringBootApplication
public class Application {

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

有關實現API功能的接口以及提供的默認實現的更多信息,請參閱項目文檔。 有關開發Cloud Foundry管理服務的更多信息,請參閱Cloud Foundry文檔

Spring Cloud Consul

Hashicorp Consul服務發現和配置管理。

簡介

該項目通過自動配置、綁定到Spring Environment和其他Spring編程模型語法來爲Spring Boot應用程序提供Consul集成。 通過幾個簡單的註釋,您可以快速啓用和配置應用程序中的常見模式,並使用基於Consul的組件構建大型分佈式系統。 提供的模式包括服務發現,控制總線和配置。 智能路由(Zuul)和客戶端負載平衡(功能區),斷路器(Hystrix)通過與Spring Cloud Netflix的集成提供。

Spring Cloud Security

在Zuul代理中支持負載均衡的OAuth2 rest 客戶端和認證頭轉發。

簡介

Spring Cloud Security提供了一套用於構建安全的原語級應用程序和最小化服務。 可以從外部(或集中)高度配置的聲明式模型適用於通常使用中央契約管理服務的大型合作遠程組件系統的實現。 在像Cloud Foundry這樣的服務平臺上也很容易使用。基於Spring Boot和Spring Security OAuth2,我們可以快速創建實現單點登錄,令牌中繼和令牌交換等常見模式的系統。

功能

  • 在Zuul代理中將SSO令牌從前端轉發到後端服務
  • 資源服務器之間的中繼令牌
  • 一個攔截器可以使一個Feign客戶端的行爲像OAuth2RestTemplate(獲取令牌等)
  • 在Zuul代理中配置下游認證

快速開始

Maven:

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-security</artifactId>
        <version>1.1.4.BUILD-SNAPSHOT</version>
    </dependency>
</dependencies><repositories>
    <repository>
        <id>spring-snapshots</id>
        <name>Spring Snapshots</name>
        <url>https://repo.spring.io/libs-snapshot</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

如果您的應用程序還有Spring Cloud Zuul嵌入式反向代理(使用@EnableZuulProxy),則可以要求它將OAuth2訪問令牌轉發到其代理的服務器。 因此,上述的SSO應用程序可以簡單地增強:

@SpringBootApplication
@EnableOAuth2Sso
@EnableZuulProxy
class Application {

}

並且(除了記錄用戶並抓取令牌之外)還將將身份驗證令牌下傳到 /proxy/* 服務。 如果這些服務是用@EnableResourceServer實現的,那麼他們將在正確的頭中獲取一個有效的token。

Spring Cloud Data Flow

現代的運行時可組合的微服務應用程序的本地雲(cloud-native)編排服務。 易於使用的DSL,拖放式GUI和REST API一起簡化了基於微服務的數據管道的整體編排。

簡介

Spring Cloud Data Flow是一種針對現代的運行時可組合的微服務應用程序的本地雲(cloud-native)編排服務。 通過Spring Cloud Data Flow,開發人員可以爲數據採集,實時分析和數據導入/導出等常見用例創建和編排數據管道(pipelines)。

Spring Cloud Data Flow是Spring XD的本地雲生重新設計,旨在簡化Big Data應用程序的開發。 Spring XD的流和批處理模塊分別作爲基於Spring Boot的流和任務/批處理微服務應用程序進行重構。 這些應用程序現在是自主的部署單元,它們可以“天生地”運行在現代運行時環境,如Cloud Foundry,Apache YARN,Apache Mesos和Kubernetes。

Spring Cloud Data Flow提供了基於微服務的分佈式流和任務/批處理數據流水線的一系列模式和最佳實踐。

功能

  • 使用DSL,REST-API,儀表板和拖放GUI - Flo開發
  • 獨立地進行創建、單元測試、故障排解和管理微服務應用程序
  • 使用開箱即用的流和任務/批處理應用程序快速構建數據管道
  • 將微服務應用程序用作maven或docker工件(artifacts)
  • 縮放數據管道(pipelines)而不中斷數據流
  • 在各種現代運行時平臺上協調數據中心的應用程序,包括Cloud Foundry,Apache YARN,Apache Mesos和Kubernetes
  • 利用指標(metrics),健康檢查遠程管理每個微服務應用程序

快速開始

Step 1 - 下載Spring Cloud Data Flow的本地服務器和Shellüber-jar:

wget http://repo.spring.io/release/org/springframework/cloud/spring-cloud-dataflow-server-local/1.1.3.RELEASE/spring-cloud-dataflow-server-local-1.1.3.RELEASE.jar
wget http://repo.spring.io/release/org/springframework/cloud/spring-cloud-dataflow-shell/1.1.3.RELEASE/spring-cloud-dataflow-shell-1.1.3.RELEASE.jar

Step 2 - 下載並啓動Kafka 0.10 [用作消息中間件]

Step 3 - 啓動本地服務器

java -jar spring-cloud-dataflow-server-local-1.1.3.RELEASE.jar

Step 4 - 在運行本地服務器的同一臺機器上啓動Shell

java -jar spring-cloud-dataflow-shell-1.1.3.RELEASE.jar

Step 5 - 從Shell導入提供的應用程序

dataflow:>app import --uri http://bit.ly/Avogadro-SR1-stream-applications-kafka-10-maven

Step 6 - 從Shell創建'ticktock'流

dataflow:>stream create ticktock --definition "time | log" --deploy

一旦部署了“ticktock”流,您將會注意到輸出與本地服務器控制檯中類似的內容[參考Step 3]。 例如,日誌應用程序的日誌將位於:/var/folders/...../ticktock.log目錄。

2016-07-18 22:08:24.777  INFO 73058 --- [nio-9393-exec-9] o.s.c.d.spi.local.LocalAppDeployer       : deploying app ticktock.log instance 0
   Logs will be in /var/folders/c3/ctx7_rns6x30tq7rb76wzqwr0000gp/T/spring-cloud-dataflow-5011521526937452211/ticktock-1468904904769/ticktock.log
2016-07-18 22:08:25.081  INFO 73058 --- [nio-9393-exec-9] o.s.c.d.spi.local.LocalAppDeployer       : deploying app ticktock.time instance 0
   Logs will be in /var/folders/c3/ctx7_rns6x30tq7rb76wzqwr0000gp/T/spring-cloud-dataflow-5011521526937452211/ticktock-1468904905074/ticktock.time

Step 7 - 驗證'ticktock'日誌

tail -f /var/folders/ ... /ticktock.log/stdout_0.log

Step 8 - 查看本地服務器的儀表板功能:http://localhost:9393/dashboard

Spring Cloud Data Flow實現

  • Local Server
  • Cloud Foundry Server
  • Apache YARN Server
  • Kubernetes Server
  • Apache Mesos Server

關於版本請參考這裏

Spring Cloud Data Flow 社區版實現

Spring Cloud Data Flow for HashiCorp Nomad

Spring Cloud Data Flow for Red Hat OpenShift

Spring Cloud Data Flow 構建模塊

Spring Cloud Data Flow建立在多個項目的基礎上,生態系統的頂層構建模塊以下列可視化表示形式列出。 每個項目都代表着一個核心功能,它們獨立發展,獨立發佈 - 根據鏈接可以查找有關每個項目的更多細節。

image

Spring Cloud Stream

一個輕量級的事件驅動的微服務框架來快速構建可以連接到外部系統的應用程序。 使用Apache Kafka或RabbitMQ在Spring Boot應用程序之間發送和接收消息的簡單聲明模型。

簡介

Spring Cloud Stream是構建消息驅動的微服務的框架。 Spring Cloud Stream建立在Spring Boot上,以創建DevOps友好的微服務應用程序和Spring Integration來提供與消息代理的連接。 Spring Cloud Stream提供了一個自己的消息代理配置,在多箇中間件供應商中引入了持久的pub/sub語義,消費者組和分區的概念。 這個自帶的配置爲創建流處理應用程序提供了基礎。

通過向主應用程序添加@EnableBinding,您可以立即連接到消息代理,並通過向方法添加@StreamListener,您將收到流處理事件。

快速開始

Maven:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-stream-dependencies</artifactId>
            <version>Brooklyn.SR3</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-stream</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-stream-kafka</artifactId>
    </dependency>
</dependencies>

只要Spring Cloud Stream和Spring Cloud Stream binder在類路徑中,任何具有@EnableBinding的Spring Boot應用程序將綁定到總線提供的外部代理(例如,Rabbit MQ或Kafka,具體取決於您選擇的實現)。 示例:

轉到 http://start.spring.io 並創建一個帶有“Stream Kafka”依賴項目。 修改主類,如下所示:

@SpringBootApplication
@EnableBinding(Source.class)
public class StreamdemoApplication {

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

    @Bean
    @InboundChannelAdapter(value = Source.OUTPUT)
    public MessageSource<String> timerMessageSource() {
        return () -> new GenericMessage<>(new SimpleDateFormat().format(new Date()));
    }

}

運行應用程序時,確保Kafka正在運行。 您可以使用Kafka提供的kafka-console-consumer.sh 腳本程序來監視在輸出主題上發送的消息。

Spring Cloud Stream App Starters

Spring Cloud Stream App Starters應用程序啓動器是基於Spring Boot的Spring集成應用程序,提供與外部系統的集成。

簡介

Spring Cloud Stream應用程序啓動器是基於Spring Boot的Spring集成應用程序,提供與外部系統的集成。 Spring Cloud Stream應用程序可以與Spring Cloud Data Flow一起使用來創建,部署和編排消息驅動的微服務應用程序。

Spring Cloud Stream Application Starters 是通過消息傳遞中間件(如Apache Kafka和RabbitMQ)進行通信的獨立可執行應用程序。 這些應用程序可以在各種運行時平臺上獨立運行,包括:Cloud Foundry,Apache Yarn,Apache Mesos,Kubernetes,Docker,甚至您的筆記本電腦。

功能

  • 作爲Spring Boot應用程序獨立運行
  • 在Spring Cloud Data Flow中將微服務組全成管道流
  • 將微服務應用程序用作maven或docker artifacts
  • 通過命令行,環境變量或YAML文件覆蓋配置參數
  • 提供基礎設施來隔離測試應用程序
  • 下載版本Spring Initializr作爲啓動器

可用應用程序

SourceProcessorSink(水槽)
fileaggregatoraggregate-counter
ftpbridgecassandra
gemfirefiltercounter
gemfire-cqgroovy-filterfield-value-counter
httpgroovy-transformfile
jdbchttpclientftp
jmspmmlgemfire
load-generatorscriptable-transformgpfdist
loggregatorsplitterhdfs
mailtasklaunchrequest-transformhdfs-dataset
mongodbtcp-clientjdbc
rabbittransformlog
s3mongodb
sftppgcopy
syslograbbit
tcpredis-pubsub
tcp-clientrouter
times3
triggersftp
triggertasktask-launcher-cloudfoundry
twitterstreamtask-launcher-local
task-launcher-yarn
tcp
throughput
websocket

快速開始

Step 1 - 從這裏下載最新的基於Kafka 10的Time Source應用程序 [eg: /1.1.1.RELEASE/time-source-kafka-10-1.1.1.RELEASE.jar]

Step 2 - 從這裏下載最新的基於Kafka 10的log-sink應用程序 [eg: /1.1.1.RELEASE/log-sink-kafka-10-1.1.1.RELEASE.jar]

Step 3 - 啓動 Kafka 0.10.1.0

Step 4 - 運行Time Source並綁定到ticktock 主題

java -jar time-source-kafka-***.jar --spring.cloud.stream.bindings.output.destination=ticktock

Step 5 - 運行 Log Sink 並綁定到 ticktock Topic

java -jar log-sink-kafka-***.jar --spring.cloud.stream.bindings.input.destination=ticktock

Step 6 - 在控制檯驗證Tickets Logs

Stream App Starters and Spring Cloud Data Flow (**)

官網最後

Spring Cloud Task

一種短期的微服務框架,用於快速構建執行有限數據處理的應用程序。 簡單的聲明,將功能和非功能特性添加到Spring Boot應用程序。

簡介

Spring Cloud Task允許用戶使用Spring Cloud開發和運行短期的微服務器,並在雲端運行,甚至在Spring Cloud Data Flow中運行。 只需添加@EnableTask並運行您的應用程序作爲一個Spring Boot應用程序(單個應用程序上下文)。

快速開始

Maven:

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-task-starter</artifactId>
        <version>1.1.2.RELEASE</version>
    </dependency>
</dependencies>

只要Spring Cloud Task在類路徑中,任何具有@EnableTask的Spring Boot應用程序將記錄引導應用程序的開始和結束以及配置的任務存儲庫中的任何未捕獲的異常。 示例:

@SpringBootApplication
@EnableTask
public class ExampleApplication {

	@Bean
	public CommandLineRunner commandLineRunner() {
		return strings ->
				System.out.println("Executed at :" + 
				      new SimpleDateFormat().format(new Date()));
	}

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

Spring Cloud Task App Starters

Spring Cloud Task 應用程序啓動器是Spring Boot 應用程序,可能是任何進程,包括不會永久運行的Spring Batch作業,並且在有限的數據處理時間結束/停止。

簡介

Spring Cloud任務應用程序啓動器是Spring Boot應用程序,可能是任何進程,包括不會永久運行的Spring Batch作業,並且在某些時候結束/停止。 Spring Cloud Task應用程序可以與Spring Cloud Data Flow一起使用來創建,部署和編排短期數據微服務器。

Spring Cloud任務應用程序啓動器是獨立的可執行應用程序,可用於按需使用情況,如數據庫遷移,機器學習和計劃操作。 這些應用程序可以在各種運行時平臺上獨立運行,包括:Cloud Foundry,Apache Yarn,Apache Mesos,Kubernetes,Docker,甚至您的筆記本電腦。

功能

  • 作爲Spring Boot應用程序獨立運行
  • 協調爲短時數據微服務
  • 將數據微服務應用程序用作maven或docker artifacts
  • 通過命令行,環境變量或YAML文件覆蓋配置參數
  • 提供基礎設施來隔離測試應用程序
  • 下載此版本的Spring Initializr作爲啓動器

可用應用程序

  • spark-client
  • spark-cluster
  • spark-yarn
  • timestamp

快速開始

Step 1 - 這裏下載最新的timestamp應用程序 [eg: /1.1.0.RELEASE/timestamp-task-1.1.0.RELEASE.jar]

Step 2 - 運行timestamp程序

java -jar timestamp-task-***.jar

Step 3 - 驗證控制檯中的timestamp日誌

Step 4 - 驗證timestamp應用程序關閉

Task App Starters and Spring Cloud Data Flow (**)

官網最下面

Spring Cloud Zookeeper

使用Apache Zookeeper進行服務發現和配置管理。

簡介

Spring Cloud Zookeeper通過自動配置和綁定到Spring Environment和其他Spring編程模型語法來爲Spring Boot應用程序提供Apache Zookeeper集成。 通過幾個簡單的註釋,您可以快速啓用和配置應用程序中的常見模式,並使用Zookeeper構建大型分佈式系統。 提供的模式包括服務發現和分佈式配置。

功能

  • 服務發現:可以向Zookeeper註冊實例,客戶端可以使用Spring管理的bean來發現實例
  • 通過Spring Cloud Netflix支持客戶端負載均衡器Ribbon
  • 通過Spring Cloud Netflix支持Zuul,動態路由器和過濾器
  • 分佈式配置:使用Zookeeper作爲數據存儲

快速開始

Maven:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-zookeeper-dependencies</artifactId>
            <version>1.0.3.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-zookeeper-discovery</artifactId>
    </dependency>
</dependencies>

只要Spring Cloud Zookeeper,Apache Curator和Zookeeper Java Client都在類路徑中,任何具有@EnableDiscoveryClient的Spring Boot應用程序將嘗試連接 http://localhost:2181 (zookeeper.connectString的默認值)上的Zookeeper代理。

@Configuration
@EnableAutoConfiguration
@EnableDiscoveryClient
@RestController
public class Application {

  @RequestMapping("/")
  public String home() {
    return "Hello World";
  }

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

}

Spring Cloud for Amazon Web Services

簡介

與託管的Amazon Web Services輕鬆集成。 它提供了一種方便的方式,使用衆所周知的Spring 常用語法和API(如消息傳遞或緩存API)與AWS提供的服務進行交互。 開發人員可以圍繞託管服務構建應用程序,而無需關心基礎設施或維護。

功能

  • SQS的Spring Messaging API實現。
  • ElastiCache的Spring Cache API實現。
  • SNS端點(HTTP)的基於註解的映射。
  • 通過它們在CloudFormation棧中定義的邏輯名稱訪問資源。
  • 基於RDS實例的邏輯名稱創建自動JDBC DataSource。
  • 用於S3桶ResourceLoader的Ant風格路徑匹配

Annotation-based SQS Queue Listener

@MessageMapping("logicalQueueName")
private void receiveMessage(Person person, @Header("SenderId") String senderId) {
    // ...
}

Annotation-based SNS Listener

@Controller
@RequestMapping("/sns/receive")
public class SnsEndpointController {

@NotificationMessageMapping
public void receiveNotification(@NotificationMessage String message, @NotificationSubject String subject) {
    // ...
}

@NotificationSubscriptionMapping
public void confirmSubscription(NotificationStatus notificationStatus) {
    notificationStatus.confirmSubscription();
}

Messaging Templates

snsTemplate.sendNotification("SnsTopic", "message", "subject");
sqsTemplate.convertAndSend("Queue", new Person("John", "Doe"));

快速開始

Maven:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-aws</artifactId>
            <version>1.2.0.BUILD-SNAPSHOT</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-aws</artifactId>
    </dependency>
</dependencies><repositories>
    <repository>
        <id>spring-snapshots</id>
        <name>Spring Snapshots</name>
        <url>https://repo.spring.io/libs-snapshot</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>
<!-- Define global credentials for all the AWS clients -->
<aws-context:context-credentials>
    <aws-context:instance-profile-credentials/>
    <aws-context:simple-credentials access-key="${accessKey:}"
                                    secret-key="${secretKey:}"/>
</aws-context:context-credentials>

<!-- Define global region -->
<aws-context:context-region region="EU_WEST_1"/>

<!-- Cloud Formation Stack -->
<aws-context:stack-configuration stack-name="StackName"/>

Spring Cloud Connectors

使PaaS應用程序在各種平臺中輕鬆連接到後端服務,如數據庫和消息代理(以前稱爲“Spring Cloud”)。

簡介

Spring Cloud連接器簡化了連接到服務的過程,並在Cloud Foundry和Heroku等雲平臺中獲得了運行環境支持,特別是對於Spring應用程序。 它是爲擴展性而設計的:您可以使用所提供的雲連接器之一或爲雲平臺編寫一個連接器,您可以使用內置的常用服務支持(關係數據庫,MongoDB,Redis,RabbitMQ)或擴展Spring 雲連接器與您自己的服務一起工作。

功能

Spring Cloud連接器專注於爲典型用例提供良好的開箱即用體驗,並提供可擴展性機制來覆蓋其他用戶。

  • 適用於Spring應用程序的Java和XML配置:爲綁定到應用程序的服務創建bean的簡單方法。
  • 雲平臺可擴展性:雲連接器的概念,允許您將Spring Cloud連接器的功能擴展到其他雲平臺。
  • 服務信息和連接器可擴展性:您自己的Spring Cloud連接器擴展可以通過從應用程序操作環境提取服務連接信息將應用程序連接到任何服務,並且(可選)可以將信息轉換爲服務連接器。

組成項目

  • Spring Cloud Connectors Core:核心類庫。 Cloud-agnostic,不依賴於Spring; 爲選擇以編程方式訪問雲服務和應用程序信息的應用程序開發人員提供了入門點,併爲貢獻cloud 連接器和服務連接器創建者提供了擴展機制。
  • Spring Cloud Service Connector:提供來自Spring Data項目的javax.sql.DataSource和各種連接工廠的服務連接器創建者的庫。
  • Cloud Foundry Connector:Cloud Foundry cloud連接器。
  • Heroku Connector:Heroku的cloud連接器。

快速開始

Maven:

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-spring-service-connector</artifactId>
        <version>1.2.3.RELEASE</version>
    </dependency>
    <!-- If you intend to deploy the app on Cloud Foundry, add the following -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-cloudfoundry-connector</artifactId>
        <version>1.2.3.RELEASE</version>
    </dependency>
    <!-- If you intend to deploy the app on Heroku, add the following -->
    <!-- It is okay to add more than one cloud connector; the right one will
         be picked during runtime -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-heroku-connector</artifactId>
        <version>1.2.3.RELEASE</version>
    </dependency>
</dependencies>

然後,如果您正在使用Spring應用程序,請按照Spring Cloud Spring Service Connector的說明進行操作。 如果您不使用Spring,請查看Spring Cloud Connectors Core

社區擴展

  • Spring Cloud Connectors for SAP HANA Cloud Platform (HCP)
  • Spring Cloud Connectors for IBM Bluemix
  • Spring Cloud Connectors for Spring Cloud Services on Pivotal Cloud Foundry
  • Spring Cloud Connectors for Pivotal Gemfire
  • Spring Cloud Connectors for Amazon S3

Spring Cloud Starters

Spring Boot-style啓動項目,以緩解Spring Cloud消費者的依賴管理。 (Angel.SR2之後停止作爲項目,並與其他項目合併)。

Spring Cloud CLI

Spring Boot CLI插件用於在Groovy中快速創建Spring Cloud組件應用程序

既然看到最後了,一起來搞基吧:264133057

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章