您好,登錄后才能下訂單哦!
這篇文章主要講解了“Spring Cloud怎么配置”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Spring Cloud怎么配置”吧!
Spring Cloud 為構(gòu)建分布式系統(tǒng)和微服務(wù)提供了一些通用的工具,例如:配置中心,服務(wù)注冊(cè)與發(fā)現(xiàn),熔斷器,路由,代理,控制總線(xiàn),一次性令牌,全局鎖,leader選舉,分布式 會(huì)話(huà),集群狀態(tài)等。
目前國(guó)內(nèi)有很多公司還是使用dubbo做服務(wù)分解,但dubbo只提供了服務(wù)注冊(cè)發(fā)現(xiàn)功能,要建立分布式系統(tǒng)還要自己找對(duì)應(yīng)工具進(jìn)行組合,當(dāng)然這樣定制性、靈活性高,但有些技術(shù)要摸著走,而且阿里已經(jīng)停止了對(duì)dubbo的更新。
如果采用Spring Cloud技術(shù)棧,Spring Cloud提供了分布式系統(tǒng)和微服務(wù)中所需要的約大多數(shù)公共模塊和功能,
Spring Cloud 下各項(xiàng)目都是基于 Spring Boot 的,所有要想用Spring Cloud做微服務(wù)開(kāi)發(fā),最好先掌握 Spring Boot。
下表是dubbox與Spring Cloud技術(shù)棧對(duì)比
功能 | Dubbox | Spring Cloud |
---|---|---|
服務(wù)注冊(cè)中心 | Zookeeper | Spring Cloud Netflix Eureka |
服務(wù)調(diào)用方式 | RPC/REST API | REST API |
服務(wù)網(wǎng)關(guān) | 無(wú) | Spring Cloud Netflix Zuul |
熔斷器 | 不完善 | Spring Cloud Netflix Hystrix |
分布式配置 | 無(wú) | Spring Cloud Config |
服務(wù)跟蹤 | 無(wú) | Spring Cloud Sleuth |
消息總線(xiàn) | 無(wú) | Spring Cloud Bus |
數(shù)據(jù)流 | 無(wú) | Spring Cloud Stream |
批量任務(wù) | 無(wú) | Spring Cloud Task |
Zookeeper,Redis,Hazelcast,Consul的leader選舉和公共的狀態(tài)模式的抽象和實(shí)現(xiàn)。
Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中的一些通用模式(patterns)的工具(例如配置管理,服務(wù)發(fā)現(xiàn),熔斷器,智能路由,微代理,控制總線(xiàn)(control bus),一次性令牌,全局鎖,leader選舉,分布式 會(huì)話(huà),集群狀態(tài))。 分布式系統(tǒng)的協(xié)調(diào)導(dǎo)致鍋爐板模式(boiler plate patterns),并且使用Spring Cloud開(kāi)發(fā)人員可以快速開(kāi)發(fā)出(stand up)實(shí)現(xiàn)這些模式的服務(wù)和應(yīng)用程序。 程序?qū)⒃谌魏畏植际江h(huán)境中都可以良好的運(yùn)行,包括開(kāi)發(fā)人員自己的筆記本電腦,裸機(jī)數(shù)據(jù)中心,以及像Cloud Foundry的托管平臺(tái)。
Spring Cloud基于Spring Boot,通過(guò)提供的一組類(lèi)庫(kù),可以在增強(qiáng)應(yīng)用程序的行為。 您可以利用基本的默認(rèn)行為(behaviour)/配置快速入門(mén),然后在需要時(shí),您可以配置或擴(kuò)展以創(chuàng)建自定義解決方案。
<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致力于為典型的使用案例和擴(kuò)展機(jī)制提供良好的開(kāi)箱即用的體驗(yàn)。
分布式/版本化配置
服務(wù)注冊(cè)和發(fā)現(xiàn)
路由
服務(wù)到服務(wù)(Service-to-service)的調(diào)用
熔斷器(Circuit Breakers)
全局鎖
Leader選舉和集群狀態(tài)
分布式消息
Spring Cloud采用注解聲明的方式,通常只需要一個(gè)類(lèi)路徑和(或)解釋更改即可獲得很多功能。作為發(fā)現(xiàn)客戶(hù)端的示例應(yīng)用程序:
@SpringBootApplication @EnableDiscoveryClient public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
由git倉(cāng)庫(kù)支持的統(tǒng)一配置管理。配置資源直接映射到SpringEnvironment
,但如果需要,可以使用非Spring應(yīng)用程序。
Spring Cloud Config為分布式系統(tǒng)中的外部統(tǒng)一配置中心提供服務(wù)器和客戶(hù)端支持。使用Config Server,您可以在所有環(huán)境中管理應(yīng)用程序的外部(externalized)配置屬性??蛻?hù)端和服務(wù)器映射的概念與Spring Environment和PropertySource抽象相同,因此它們與Spring應(yīng)用程序非常契合,但可以與任何語(yǔ)言的應(yīng)用程序一起使用。伴隨著應(yīng)用程序通過(guò)從開(kāi)發(fā)環(huán)境到測(cè)試環(huán)境和生產(chǎn)環(huán)境的部署過(guò)程,您可以管理這些環(huán)境之間的配置,并確定應(yīng)用程序不同環(huán)境遷移時(shí)需要所有配置屬性。服務(wù)器存儲(chǔ)端的默認(rèn)實(shí)現(xiàn)使用git,因此它可以輕松支持帶標(biāo)簽版本的配置環(huán)境,以及可以訪(fǎng)問(wèn)用于管理的內(nèi)容的各種工具??梢暂p松添加替代實(shí)現(xiàn),并使用Spring配置將其插入。
Spring Cloud Config Server功能:
基于HTTP資源的外部配置API(名稱(chēng)/值對(duì)或等效的YAML內(nèi)容)
對(duì)屬性值加密和解密(對(duì)稱(chēng)或非對(duì)稱(chēng))
可以使用@EnableConfigServer輕松嵌入Spring Boot應(yīng)用程序
Config Client功能(適用于Spring應(yīng)用程序):
綁定到Config Server并使用遠(yuǎn)程的屬性源初始化Spring Environment
對(duì)屬性值加密和解密(對(duì)稱(chēng)或非對(duì)稱(chēng))
以使用Maven為項(xiàng)目依賴(lài)管理為例:
<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類(lèi)庫(kù)在類(lèi)路徑中,任何Spring Boot應(yīng)用程序?qū)L試連接http://localhost:8888(spring.cloud.config.uri的默認(rèn)值)的配置服務(wù)器:
@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以正常方式綁定的任何其他值)可以來(lái)自本地配置或遠(yuǎn)程Config Server。 默認(rèn)情況下,Config Server將優(yōu)先。要查看應(yīng)用程序中的/env端點(diǎn),請(qǐng)參閱configServer屬性源。
要運(yùn)行自己的服務(wù)器,請(qǐng)使用spring-cloud-config-server依賴(lài)項(xiàng)和@EnableConfigServer注解。如果您設(shè)置spring.config.name=configserver,則應(yīng)用程序?qū)⒃诙丝?888上運(yùn)行,并從樣本存儲(chǔ)庫(kù)(sample repository)提供數(shù)據(jù)。 您需要一個(gè)spring.cloud.config.server.git.uri來(lái)找到自己需要的配置數(shù)據(jù)(默認(rèn)情況下,它是git存儲(chǔ)庫(kù)的位置,可以是本地url:.. URL)。
集成各種Netflix OSS組件(Eureka, Hystrix, Zuul, Archaius等)。
Spring Cloud Netflix通過(guò)自動(dòng)配置、綁定到Spring Environment 和其他Spring編程模型語(yǔ)法來(lái)為Spring Boot應(yīng)用程序提供Netflix OSS集成。通過(guò)幾個(gè)簡(jiǎn)單的注解,您可以快速啟用和配置應(yīng)用程序中的常見(jiàn)模式,并使用經(jīng)過(guò)考驗(yàn)的Netflix組件構(gòu)建大型分布式系統(tǒng)。 提供的常見(jiàn)模式包括服務(wù)發(fā)現(xiàn)(Eureka),融斷機(jī)制(Hystrix),智能路由(Zuul)和客戶(hù)端負(fù)載平衡(Ribbon)。
Spring Cloud Netflix功能:
服務(wù)發(fā)現(xiàn):可以注冊(cè)Eureka實(shí)例,客戶(hù)端可以使用Spring管理的bean來(lái)發(fā)現(xiàn)實(shí)例
服務(wù)發(fā)現(xiàn):可以使用聲明式Java配置創(chuàng)建嵌入式Eureka服務(wù)器
融斷機(jī)制:Hystrix客戶(hù)端可以使用簡(jiǎn)單的注釋驅(qū)動(dòng)方法裝飾器構(gòu)建
融斷機(jī)制:具有聲明式Java配置的嵌入式Hystrix儀表板
聲明性REST客戶(hù)端:Feign創(chuàng)建了一個(gè)使用JAX-RS或Spring MVC注解裝飾的接口的動(dòng)態(tài)實(shí)現(xiàn)
客戶(hù)端負(fù)載均衡器:Ribbon
外部配置:從Spring Environment 到Archaius的橋梁(使用Spring Boot約定啟用Netflix組件的本地配置)
路由器和過(guò)濾器:Zuul過(guò)濾器的自動(dòng)注冊(cè),以及反向代理創(chuàng)建的簡(jiǎn)單配置方法
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類(lèi)庫(kù)在類(lèi)路徑中,任何具有@EnableEurekaClient的Spring Boot應(yīng)用程序?qū)L試連接 http://localhost:8761 (eureka.client.serviceUrl.defaultZone的默認(rèn)值)上的Eureka服務(wù)器:
@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); } }
要運(yùn)行自己的服務(wù)器,請(qǐng)?zhí)砑右蕾?lài)spring-cloud-starter-eureka-server和@EnableEurekaServer注解。
用于將服務(wù)和服務(wù)實(shí)例以及分布式消息傳遞鏈接的事件總線(xiàn)。 用于在集群中傳播狀態(tài)更改(例如配置更改事件)。
Spring Cloud Bus將分布式系統(tǒng)的節(jié)點(diǎn)與輕量級(jí)消息代理連接起來(lái)。 這可以用于廣播狀態(tài)改變(例如配置改變)或其他管理指令。 目前唯一的實(shí)現(xiàn)是使用AMQP代理作為傳輸,但是相同的基本功能集(還有一些取決于傳輸)在其他傳輸?shù)穆肪€(xiàn)圖上。
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類(lèi)庫(kù)在類(lèi)路徑中,任何Spring Boot應(yīng)用程序?qū)L試連接 localhost:5672上的RabbitMQ服務(wù)器(spring.rabbitmq.addresses的默認(rèn)值):
@Configuration @EnableAutoConfiguration @RestController public class Application { @RequestMapping("/") public String home() { return "Hello World"; } public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
將您的應(yīng)用程序與Pivotal Cloudfoundry集成。 提供服務(wù)發(fā)現(xiàn)實(shí)現(xiàn),并且還可以輕松實(shí)現(xiàn)SSO和OAuth3保護(hù)的資源,還可以創(chuàng)建Cloudfoundry服務(wù)代理。
Spring Cloud for Cloudfoundry可以輕松在Cloud Foundry(平臺(tái)即服務(wù))中運(yùn)行Spring Cloud應(yīng)用程序。 Cloud Foundry有一個(gè)“服務(wù)”的概念,它是“綁定”到應(yīng)用程序的中間件,本質(zhì)上為其提供包含憑據(jù)的環(huán)境變量(例如,用于服務(wù)的位置和用戶(hù)名)。
spring-cloud-cloudfoundry-web項(xiàng)目為Cloud Foundry中的webapps的一些增強(qiáng)功能提供了基本支持:自動(dòng)綁定到單點(diǎn)登錄服務(wù),并可選擇啟用粘性路由進(jìn)行發(fā)現(xiàn)。
spring-cloud-cloudfoundry-discovery項(xiàng)目提供了Spring Cloud Commons DiscoveryClient的實(shí)現(xiàn),因此您可以@EnableDiscoveryClient并將提供您的憑據(jù)spring.cloud.cloudfoundry.discovery.[email,password],然后可以直接使用DiscoveryClient或通過(guò) 一個(gè)LoadBalancerClient使用(如果您沒(méi)有連接到Pivotal Web Services,也是 *.url)。
注意:如果您正在尋找一種綁定到服務(wù)的方法,那么這是錯(cuò)誤的庫(kù)。 請(qǐng)查看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>
提供構(gòu)建管理Cloud Foundry管理服務(wù)的服務(wù)代理的起點(diǎn)。
Spring Cloud Cloud Foundry Service Broker是構(gòu)建Spring Boot應(yīng)用程序的框架,用于實(shí)現(xiàn)Cloud Foundry Service Broker API并管理Cloud Foundry Marketplace中提供的服務(wù)。
Cloud Foundry管理的服務(wù)由服務(wù)代理管理,服務(wù)代理通知其服務(wù)提供的服務(wù)計(jì)劃,并提供,銷(xiāo)毀,綁定和解除綁定服務(wù)實(shí)例。 Spring Cloud Cloud Foundry Service Broker提供了一個(gè)基于Spring Boot的框架,使您可以在Cloud Foundry上為您自己的托管服務(wù)快速創(chuàng)建代理。
目錄和服務(wù)綁定/解除端點(diǎn)的默認(rèn)配置
支持異步服務(wù)操作(Cloud Foundry Service Broker API 2.7)
支持提供給cf Command Line Interface工具的任意參數(shù)
支持Cloud Foundry路由服務(wù)
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框架的默認(rèn)配置,您的代理應(yīng)用程序只需要在其主應(yīng)用程序類(lèi)中使用@EnableAutoConfiguration或@SpringBootApplication注解:
@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
有關(guān)實(shí)現(xiàn)API功能的接口以及提供的默認(rèn)實(shí)現(xiàn)的更多信息,請(qǐng)參閱項(xiàng)目文檔。 有關(guān)開(kāi)發(fā)Cloud Foundry管理服務(wù)的更多信息,請(qǐng)參閱Cloud Foundry文檔。
Hashicorp Consul服務(wù)發(fā)現(xiàn)和配置管理。
該項(xiàng)目通過(guò)自動(dòng)配置、綁定到Spring Environment和其他Spring編程模型語(yǔ)法來(lái)為Spring Boot應(yīng)用程序提供Consul集成。 通過(guò)幾個(gè)簡(jiǎn)單的注釋?zhuān)梢钥焖賳⒂煤团渲脩?yīng)用程序中的常見(jiàn)模式,并使用基于Consul的組件構(gòu)建大型分布式系統(tǒng)。 提供的模式包括服務(wù)發(fā)現(xiàn),控制總線(xiàn)和配置。 智能路由(Zuul)和客戶(hù)端負(fù)載平衡(功能區(qū)),斷路器(Hystrix)通過(guò)與Spring Cloud Netflix的集成提供。
在Zuul代理中支持負(fù)載均衡的OAuth3 rest 客戶(hù)端和認(rèn)證頭轉(zhuǎn)發(fā)。
Spring Cloud Security提供了一套用于構(gòu)建安全的原語(yǔ)級(jí)應(yīng)用程序和最小化服務(wù)。 可以從外部(或集中)高度配置的聲明式模型適用于通常使用中央契約管理服務(wù)的大型合作遠(yuǎn)程組件系統(tǒng)的實(shí)現(xiàn)。 在像Cloud Foundry這樣的服務(wù)平臺(tái)上也很容易使用。基于Spring Boot和Spring Security OAuth3,我們可以快速創(chuàng)建實(shí)現(xiàn)單點(diǎn)登錄,令牌中繼和令牌交換等常見(jiàn)模式的系統(tǒng)。
在Zuul代理中將SSO令牌從前端轉(zhuǎn)發(fā)到后端服務(wù)
資源服務(wù)器之間的中繼令牌
一個(gè)攔截器可以使一個(gè)Feign客戶(hù)端的行為像OAuth3RestTemplate(獲取令牌等)
在Zuul代理中配置下游認(rèn)證
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>
如果您的應(yīng)用程序還有Spring Cloud Zuul嵌入式反向代理(使用@EnableZuulProxy),則可以要求它將OAuth3訪(fǎng)問(wèn)令牌轉(zhuǎn)發(fā)到其代理的服務(wù)器。 因此,上述的SSO應(yīng)用程序可以簡(jiǎn)單地增強(qiáng):
@SpringBootApplication @EnableOAuth3Sso @EnableZuulProxy class Application { }
并且(除了記錄用戶(hù)并抓取令牌之外)還將將身份驗(yàn)證令牌下傳到 /proxy/* 服務(wù)。 如果這些服務(wù)是用@EnableResourceServer實(shí)現(xiàn)的,那么他們將在正確的頭中獲取一個(gè)有效的token。
現(xiàn)代的運(yùn)行時(shí)可組合的微服務(wù)應(yīng)用程序的本地云(cloud-native)編排服務(wù)。 易于使用的DSL,拖放式GUI和REST API一起簡(jiǎn)化了基于微服務(wù)的數(shù)據(jù)管道的整體編排。
Spring Cloud Data Flow是一種針對(duì)現(xiàn)代的運(yùn)行時(shí)可組合的微服務(wù)應(yīng)用程序的本地云(cloud-native)編排服務(wù)。 通過(guò)Spring Cloud Data Flow,開(kāi)發(fā)人員可以為數(shù)據(jù)采集,實(shí)時(shí)分析和數(shù)據(jù)導(dǎo)入/導(dǎo)出等常見(jiàn)用例創(chuàng)建和編排數(shù)據(jù)管道(pipelines)。
Spring Cloud Data Flow是Spring XD的本地云生重新設(shè)計(jì),旨在簡(jiǎn)化Big Data應(yīng)用程序的開(kāi)發(fā)。 Spring XD的流和批處理模塊分別作為基于Spring Boot的流和任務(wù)/批處理微服務(wù)應(yīng)用程序進(jìn)行重構(gòu)。 這些應(yīng)用程序現(xiàn)在是自主的部署單元,它們可以“天生地”運(yùn)行在現(xiàn)代運(yùn)行時(shí)環(huán)境,如Cloud Foundry,Apache YARN,Apache Mesos和Kubernetes。
Spring Cloud Data Flow提供了基于微服務(wù)的分布式流和任務(wù)/批處理數(shù)據(jù)流水線(xiàn)的一系列模式和最佳實(shí)踐。
使用DSL,REST-API,儀表板和拖放GUI - Flo開(kāi)發(fā)
獨(dú)立地進(jìn)行創(chuàng)建、單元測(cè)試、故障排解和管理微服務(wù)應(yīng)用程序
使用開(kāi)箱即用的流和任務(wù)/批處理應(yīng)用程序快速構(gòu)建數(shù)據(jù)管道
將微服務(wù)應(yīng)用程序用作maven或docker工件(artifacts)
縮放數(shù)據(jù)管道(pipelines)而不中斷數(shù)據(jù)流
在各種現(xiàn)代運(yùn)行時(shí)平臺(tái)上協(xié)調(diào)數(shù)據(jù)中心的應(yīng)用程序,包括Cloud Foundry,Apache YARN,Apache Mesos和Kubernetes
利用指標(biāo)(metrics),健康檢查遠(yuǎn)程管理每個(gè)微服務(wù)應(yīng)用程序
Step 1 - 下載Spring Cloud Data Flow的本地服務(wù)器和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 - 下載并啟動(dòng)Kafka 0.10 [用作消息中間件]
Step 3 - 啟動(dòng)本地服務(wù)器
java -jar spring-cloud-dataflow-server-local-1.1.3.RELEASE.jar
Step 4 - 在運(yùn)行本地服務(wù)器的同一臺(tái)機(jī)器上啟動(dòng)Shell
java -jar spring-cloud-dataflow-shell-1.1.3.RELEASE.jar
Step 5 - 從Shell導(dǎo)入提供的應(yīng)用程序
dataflow:>app import --uri http://bit.ly/Avogadro-SR1-stream-applications-kafka-10-maven
Step 6 - 從Shell創(chuàng)建'ticktock'流
dataflow:>stream create ticktock --definition "time | log" --deploy
一旦部署了“ticktock”流,您將會(huì)注意到輸出與本地服務(wù)器控制臺(tái)中類(lèi)似的內(nèi)容[參考Step 3]。 例如,日志應(yīng)用程序的日志將位于:/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 - 驗(yàn)證'ticktock'日志
tail -f /var/folders/ ... /ticktock.log/stdout_0.log
Step 8 - 查看本地服務(wù)器的儀表板功能:http://localhost:9393/dashboard
Local Server
Cloud Foundry Server
Apache YARN Server
Kubernetes Server
Apache Mesos Server
關(guān)于版本請(qǐng)參考這里
Spring Cloud Data Flow for HashiCorp Nomad
Spring Cloud Data Flow for Red Hat OpenShift
Spring Cloud Data Flow建立在多個(gè)項(xiàng)目的基礎(chǔ)上,生態(tài)系統(tǒng)的頂層構(gòu)建模塊以下列可視化表示形式列出。 每個(gè)項(xiàng)目都代表著一個(gè)核心功能,它們獨(dú)立發(fā)展,獨(dú)立發(fā)布 - 根據(jù)鏈接可以查找有關(guān)每個(gè)項(xiàng)目的更多細(xì)節(jié)。
一個(gè)輕量級(jí)的事件驅(qū)動(dòng)的微服務(wù)框架來(lái)快速構(gòu)建可以連接到外部系統(tǒng)的應(yīng)用程序。 使用Apache Kafka或RabbitMQ在Spring Boot應(yīng)用程序之間發(fā)送和接收消息的簡(jiǎn)單聲明模型。
Spring Cloud Stream是構(gòu)建消息驅(qū)動(dòng)的微服務(wù)的框架。 Spring Cloud Stream建立在Spring Boot上,以創(chuàng)建DevOps友好的微服務(wù)應(yīng)用程序和Spring Integration來(lái)提供與消息代理的連接。 Spring Cloud Stream提供了一個(gè)自己的消息代理配置,在多個(gè)中間件供應(yīng)商中引入了持久的pub/sub語(yǔ)義,消費(fèi)者組和分區(qū)的概念。 這個(gè)自帶的配置為創(chuàng)建流處理應(yīng)用程序提供了基礎(chǔ)。
通過(guò)向主應(yīng)用程序添加@EnableBinding,您可以立即連接到消息代理,并通過(guò)向方法添加@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在類(lèi)路徑中,任何具有@EnableBinding的Spring Boot應(yīng)用程序?qū)⒔壎ǖ娇偩€(xiàn)提供的外部代理(例如,Rabbit MQ或Kafka,具體取決于您選擇的實(shí)現(xiàn))。 示例:
轉(zhuǎn)到 http://start.spring.io 并創(chuàng)建一個(gè)帶有“Stream Kafka”依賴(lài)項(xiàng)目。 修改主類(lèi),如下所示:
@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())); } }
運(yùn)行應(yīng)用程序時(shí),確保Kafka正在運(yùn)行。 您可以使用Kafka提供的kafka-console-consumer.sh 腳本程序來(lái)監(jiān)視在輸出主題上發(fā)送的消息。
Spring Cloud Stream App Starters應(yīng)用程序啟動(dòng)器是基于Spring Boot的Spring集成應(yīng)用程序,提供與外部系統(tǒng)的集成。
Spring Cloud Stream應(yīng)用程序啟動(dòng)器是基于Spring Boot的Spring集成應(yīng)用程序,提供與外部系統(tǒng)的集成。 Spring Cloud Stream應(yīng)用程序可以與Spring Cloud Data Flow一起使用來(lái)創(chuàng)建,部署和編排消息驅(qū)動(dòng)的微服務(wù)應(yīng)用程序。
Spring Cloud Stream Application Starters 是通過(guò)消息傳遞中間件(如Apache Kafka和RabbitMQ)進(jìn)行通信的獨(dú)立可執(zhí)行應(yīng)用程序。 這些應(yīng)用程序可以在各種運(yùn)行時(shí)平臺(tái)上獨(dú)立運(yùn)行,包括:Cloud Foundry,Apache Yarn,Apache Mesos,Kubernetes,Docker,甚至您的筆記本電腦。
作為Spring Boot應(yīng)用程序獨(dú)立運(yùn)行
在Spring Cloud Data Flow中將微服務(wù)組全成管道流
將微服務(wù)應(yīng)用程序用作maven或docker artifacts
通過(guò)命令行,環(huán)境變量或YAML文件覆蓋配置參數(shù)
提供基礎(chǔ)設(shè)施來(lái)隔離測(cè)試應(yīng)用程序
下載版本Spring Initializr作為啟動(dòng)器
Source | Processor | Sink(水槽) |
---|---|---|
file | aggregator | aggregate-counter |
ftp | bridge | cassandra |
gemfire | filter | counter |
gemfire-cq | groovy-filter | field-value-counter |
http | groovy-transform | file |
jdbc | httpclient | ftp |
jms | pmml | gemfire |
load-generator | scriptable-transform | gpfdist |
loggregator | splitter | hdfs |
tasklaunchrequest-transform | hdfs-dataset | |
mongodb | tcp-client | jdbc |
rabbit | transform | log |
s3 | mongodb | |
sftp | pgcopy | |
syslog | rabbit | |
tcp | redis-pubsub | |
tcp-client | router | |
time | s3 | |
trigger | sftp | |
triggertask | task-launcher-cloudfoundry | |
twitterstream | task-launcher-local | |
task-launcher-yarn | ||
tcp | ||
throughput | ||
websocket |
Step 1 - 從這里下載最新的基于Kafka 10的Time Source應(yīng)用程序 [eg: /1.1.1.RELEASE/time-source-kafka-10-1.1.1.RELEASE.jar]
Step 2 - 從這里下載最新的基于Kafka 10的log-sink應(yīng)用程序 [eg: /1.1.1.RELEASE/log-sink-kafka-10-1.1.1.RELEASE.jar]
Step 3 - 啟動(dòng) Kafka 0.10.1.0
Step 4 - 運(yùn)行Time Source并綁定到ticktock 主題
java -jar time-source-kafka-***.jar --spring.cloud.stream.bindings.output.destination=ticktock
Step 5 - 運(yùn)行 Log Sink 并綁定到 ticktock Topic
java -jar log-sink-kafka-***.jar --spring.cloud.stream.bindings.input.destination=ticktock
Step 6 - 在控制臺(tái)驗(yàn)證Tickets Logs
見(jiàn)官網(wǎng)最后
一種短期的微服務(wù)框架,用于快速構(gòu)建執(zhí)行有限數(shù)據(jù)處理的應(yīng)用程序。 簡(jiǎn)單的聲明,將功能和非功能特性添加到Spring Boot應(yīng)用程序。
Spring Cloud Task允許用戶(hù)使用Spring Cloud開(kāi)發(fā)和運(yùn)行短期的微服務(wù)器,并在云端運(yùn)行,甚至在Spring Cloud Data Flow中運(yùn)行。 只需添加@EnableTask并運(yùn)行您的應(yīng)用程序作為一個(gè)Spring Boot應(yīng)用程序(單個(gè)應(yīng)用程序上下文)。
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在類(lèi)路徑中,任何具有@EnableTask的Spring Boot應(yīng)用程序?qū)⒂涗浺龑?dǎo)應(yīng)用程序的開(kāi)始和結(jié)束以及配置的任務(wù)存儲(chǔ)庫(kù)中的任何未捕獲的異常。 示例:
@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 應(yīng)用程序啟動(dòng)器是Spring Boot 應(yīng)用程序,可能是任何進(jìn)程,包括不會(huì)永久運(yùn)行的Spring Batch作業(yè),并且在有限的數(shù)據(jù)處理時(shí)間結(jié)束/停止。
Spring Cloud任務(wù)應(yīng)用程序啟動(dòng)器是Spring Boot應(yīng)用程序,可能是任何進(jìn)程,包括不會(huì)永久運(yùn)行的Spring Batch作業(yè),并且在某些時(shí)候結(jié)束/停止。 Spring Cloud Task應(yīng)用程序可以與Spring Cloud Data Flow一起使用來(lái)創(chuàng)建,部署和編排短期數(shù)據(jù)微服務(wù)器。
Spring Cloud任務(wù)應(yīng)用程序啟動(dòng)器是獨(dú)立的可執(zhí)行應(yīng)用程序,可用于按需使用情況,如數(shù)據(jù)庫(kù)遷移,機(jī)器學(xué)習(xí)和計(jì)劃操作。 這些應(yīng)用程序可以在各種運(yùn)行時(shí)平臺(tái)上獨(dú)立運(yùn)行,包括:Cloud Foundry,Apache Yarn,Apache Mesos,Kubernetes,Docker,甚至您的筆記本電腦。
作為Spring Boot應(yīng)用程序獨(dú)立運(yùn)行
協(xié)調(diào)為短時(shí)數(shù)據(jù)微服務(wù)
將數(shù)據(jù)微服務(wù)應(yīng)用程序用作maven或docker artifacts
通過(guò)命令行,環(huán)境變量或YAML文件覆蓋配置參數(shù)
提供基礎(chǔ)設(shè)施來(lái)隔離測(cè)試應(yīng)用程序
下載此版本的Spring Initializr作為啟動(dòng)器
spark-client
spark-cluster
spark-yarn
timestamp
Step 1 - 這里下載最新的timestamp應(yīng)用程序 [eg: /1.1.0.RELEASE/timestamp-task-1.1.0.RELEASE.jar]
Step 2 - 運(yùn)行timestamp程序
java -jar timestamp-task-***.jar
Step 3 - 驗(yàn)證控制臺(tái)中的timestamp日志
Step 4 - 驗(yàn)證timestamp應(yīng)用程序關(guān)閉
官網(wǎng)最下面
使用Apache Zookeeper進(jìn)行服務(wù)發(fā)現(xiàn)和配置管理。
Spring Cloud Zookeeper通過(guò)自動(dòng)配置和綁定到Spring Environment和其他Spring編程模型語(yǔ)法來(lái)為Spring Boot應(yīng)用程序提供Apache Zookeeper集成。 通過(guò)幾個(gè)簡(jiǎn)單的注釋?zhuān)梢钥焖賳⒂煤团渲脩?yīng)用程序中的常見(jiàn)模式,并使用Zookeeper構(gòu)建大型分布式系統(tǒng)。 提供的模式包括服務(wù)發(fā)現(xiàn)和分布式配置。
服務(wù)發(fā)現(xiàn):可以向Zookeeper注冊(cè)實(shí)例,客戶(hù)端可以使用Spring管理的bean來(lái)發(fā)現(xiàn)實(shí)例
通過(guò)Spring Cloud Netflix支持客戶(hù)端負(fù)載均衡器Ribbon
通過(guò)Spring Cloud Netflix支持Zuul,動(dòng)態(tài)路由器和過(guò)濾器
分布式配置:使用Zookeeper作為數(shù)據(jù)存儲(chǔ)
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都在類(lèi)路徑中,任何具有@EnableDiscoveryClient的Spring Boot應(yīng)用程序?qū)L試連接 http://localhost:2181 (zookeeper.connectString的默認(rèn)值)上的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); } }
與托管的Amazon Web Services輕松集成。 它提供了一種方便的方式,使用眾所周知的Spring 常用語(yǔ)法和API(如消息傳遞或緩存API)與AWS提供的服務(wù)進(jìn)行交互。 開(kāi)發(fā)人員可以圍繞托管服務(wù)構(gòu)建應(yīng)用程序,而無(wú)需關(guān)心基礎(chǔ)設(shè)施或維護(hù)。
SQS的Spring Messaging API實(shí)現(xiàn)。
ElastiCache的Spring Cache API實(shí)現(xiàn)。
SNS端點(diǎn)(HTTP)的基于注解的映射。
通過(guò)它們?cè)贑loudFormation棧中定義的邏輯名稱(chēng)訪(fǎng)問(wèn)資源。
基于RDS實(shí)例的邏輯名稱(chēng)創(chuàng)建自動(dòng)JDBC DataSource。
用于S3桶ResourceLoader的Ant風(fēng)格路徑匹配。
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"/>
使PaaS應(yīng)用程序在各種平臺(tái)中輕松連接到后端服務(wù),如數(shù)據(jù)庫(kù)和消息代理(以前稱(chēng)為“Spring Cloud”)。
Spring Cloud連接器簡(jiǎn)化了連接到服務(wù)的過(guò)程,并在Cloud Foundry和Heroku等云平臺(tái)中獲得了運(yùn)行環(huán)境支持,特別是對(duì)于Spring應(yīng)用程序。 它是為擴(kuò)展性而設(shè)計(jì)的:您可以使用所提供的云連接器之一或?yàn)樵破脚_(tái)編寫(xiě)一個(gè)連接器,您可以使用內(nèi)置的常用服務(wù)支持(關(guān)系數(shù)據(jù)庫(kù),MongoDB,Redis,RabbitMQ)或擴(kuò)展Spring 云連接器與您自己的服務(wù)一起工作。
Spring Cloud連接器專(zhuān)注于為典型用例提供良好的開(kāi)箱即用體驗(yàn),并提供可擴(kuò)展性機(jī)制來(lái)覆蓋其他用戶(hù)。
適用于Spring應(yīng)用程序的Java和XML配置:為綁定到應(yīng)用程序的服務(wù)創(chuàng)建bean的簡(jiǎn)單方法。
云平臺(tái)可擴(kuò)展性:云連接器的概念,允許您將Spring Cloud連接器的功能擴(kuò)展到其他云平臺(tái)。
服務(wù)信息和連接器可擴(kuò)展性:您自己的Spring Cloud連接器擴(kuò)展可以通過(guò)從應(yīng)用程序操作環(huán)境提取服務(wù)連接信息將應(yīng)用程序連接到任何服務(wù),并且(可選)可以將信息轉(zhuǎn)換為服務(wù)連接器。
Spring Cloud Connectors Core:核心類(lèi)庫(kù)。 Cloud-agnostic,不依賴(lài)于Spring; 為選擇以編程方式訪(fǎng)問(wèn)云服務(wù)和應(yīng)用程序信息的應(yīng)用程序開(kāi)發(fā)人員提供了入門(mén)點(diǎn),并為貢獻(xiàn)cloud 連接器和服務(wù)連接器創(chuàng)建者提供了擴(kuò)展機(jī)制。
Spring Cloud Service Connector:提供來(lái)自Spring Data項(xiàng)目的javax.sql.DataSource和各種連接工廠(chǎng)的服務(wù)連接器創(chuàng)建者的庫(kù)。
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應(yīng)用程序,請(qǐng)按照Spring Cloud Spring Service Connector的說(shuō)明進(jìn)行操作。 如果您不使用Spring,請(qǐng)查看Spring Cloud Connectors Core。
感謝各位的閱讀,以上就是“Spring Cloud怎么配置”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Spring Cloud怎么配置這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。