日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

Spring 社区的唯一一个国产开源项目 - Spring Cloud Alibaba 毕业了

發(fā)布時(shí)間:2024/8/23 javascript 103 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring 社区的唯一一个国产开源项目 - Spring Cloud Alibaba 毕业了 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

阿里妹導(dǎo)讀:一年多前,Java 界最近發(fā)生了一件大事,阿里開(kāi)源 Spring Cloud Alibaba,并推出首個(gè)預(yù)覽版。Spring Cloud 本身是一套微服務(wù)規(guī)范,并不是一個(gè)拿來(lái)即可用的框架,而 Spring Cloud Alibaba 的開(kāi)源為開(kāi)發(fā)者們提供了這套規(guī)范的實(shí)現(xiàn)方式。同時(shí),Spring Cloud Alibaba 提供的完整的微服務(wù)組件、中文文檔和本地化的開(kāi)源服務(wù)提高了開(kāi)發(fā)者們接入微服務(wù)的速率,并降低了后續(xù)的運(yùn)維難度。

經(jīng)過(guò)一年多的孵化,Spring Cloud Alibaba 作為 Spring 社區(qū)的唯一一個(gè)國(guó)產(chǎn)開(kāi)源項(xiàng)目,正式從 Spring Cloud Incubator 孵化器畢業(yè),并發(fā)布了適配 Spring Cloud Edgware、Finchley、Greenwich 三個(gè)版本的新版本。
Spring Cloud Alibaba 是 Spring 社區(qū)第一個(gè)也是唯一一個(gè)國(guó)產(chǎn)開(kāi)源項(xiàng)目。

?

Spring Cloud Alibaba 畢業(yè)后從孵化器倉(cāng)庫(kù)遷移到了 Github Alibaba 倉(cāng)庫(kù)下,新的倉(cāng)庫(kù)地址點(diǎn)擊這里。 新的 maven 坐標(biāo)如下:

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.1.0.RELEASE</version><type>pom</type><scope>import</scope> </dependency>

Spring Cloud Alibaba 各版本兼容表:

?

Spring Cloud Alibaba 介紹

Spring Cloud 是 Spring 社區(qū)打造出的一款基于 Spring Boot 用于快速構(gòu)建分布式系統(tǒng)的框架,主要包括以下特性:

?

Spring Cloud Alibaba 是阿里巴巴開(kāi)源中間件跟 Spring Cloud 體系的融合:

作為 Spring Cloud 體系下的新實(shí)現(xiàn),Spring Cloud Alibaba 跟官方的組件或其它的第三方實(shí)現(xiàn)如 Netflix, Consul,Zookeeper 等對(duì)比,具備了更多的功能:

Spring Cloud Alibaba 功能

總體架構(gòu)

依托 Spring Cloud Alibaba,只需要添加一些注解和少量配置,就可以將 Spring Cloud 應(yīng)用接入阿里微服務(wù)解決方案,通過(guò)阿里中間件來(lái)迅速搭建分布式應(yīng)用系統(tǒng)。

服務(wù)注冊(cè) & 配置管理

服務(wù)注冊(cè) & 配置管理是微服務(wù)應(yīng)用中必不可少的兩大基礎(chǔ)功能。

Spring Cloud Alibaba 基于 Nacos 提供 spring-cloud-alibaba-starter-nacos-discovery & spring-cloud-alibaba-starter-nacos-config 實(shí)現(xiàn)了服務(wù)注冊(cè) & 配置管理功能。

依靠 @EnableDiscoveryClient 進(jìn)行服務(wù)的注冊(cè),兼容 RestTemplate & OpenFeign 的客戶端進(jìn)行服務(wù)調(diào)用。

OpenFeign 客戶端:

@FeignClient(name = "echo-service") public interface EchoService {@RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)String echo(@PathVariable("str") String str); }

RestTemplate 客戶端:

@LoadBalanced @Bean public RestTemplate restTemplate1() {return new RestTemplate(); } .... restTemplate.getForObject("http://echo-service/echo/hello-spring-cloud-alibaba",String.class);

配置管理直接以約定俗成的方式構(gòu)造 dataId & Group 從 Nacos 讀取配置設(shè)置到 Spring Environment 中即可。

流控降級(jí)

流控降級(jí)是微服務(wù)穩(wěn)定性的法寶,用于解決各種不穩(wěn)定的場(chǎng)景可能會(huì)導(dǎo)致的嚴(yán)重后果。

在限流層面:我們根據(jù)系統(tǒng)的處理能力對(duì)流量進(jìn)行控制,在保證系統(tǒng)吞吐量比較高的同時(shí)又不會(huì)把系統(tǒng)打垮。

在降級(jí)層面:在服務(wù)出現(xiàn)不穩(wěn)定因素的時(shí)候暫時(shí)切斷服務(wù)的調(diào)用,等待一段時(shí)間再進(jìn)行嘗試。一方面防止給不穩(wěn)定服務(wù)“雪上加霜”,另一方面保護(hù)服務(wù)的調(diào)用方不被拖垮。

Spring Cloud Alibaba 基于 Sentinel 提供 spring-cloud-alibaba-starter-sentinel 對(duì) Spring 體系內(nèi)基本所有的客戶端,網(wǎng)關(guān)進(jìn)行了適配,包括了 WebServlet, WebFlux, RestTemplate, OpenFeign, Netflix Zuul, Spring Cloud Gateway。

只需引入 starter,即可對(duì)這些組件生效。只需定義規(guī)則進(jìn)行流控降級(jí):

限流規(guī)則:

降級(jí)規(guī)則:

服務(wù)調(diào)用

Spring Cloud 默認(rèn)的服務(wù)調(diào)用依賴 OpenFeign 或 RestTemplate 使用 REST 進(jìn)行調(diào)用。

Spring Cloud Alibaba Dubbo 只需使用 @DubboTransported 注解即可將底層的 Rest 協(xié)議無(wú)縫切換成 Dubbo RPC 協(xié)議,進(jìn)行 RPC 調(diào)用。這一舉措讓 Spring Cloud 的客戶端調(diào)用多了一個(gè)新的 RPC 選擇:

@Bean @LoadBalanced @DubboTransported public RestTemplate restTemplate() {return new RestTemplate(); }@FeignClient("dubbo-provider") @DubboTransported(protocol = "dubbo") public interface DubboFeignRestService {@GetMapping(value = "/param")String param(@RequestParam("param") String param);@PostMapping("/saveB")String saveB(@RequestParam("a") int a, @RequestParam("b") String b); }

分布式消息 & 消息總線

基于 Spring Cloud Stream 提供 Binder 的新實(shí)現(xiàn): Spring Cloud Stream RocketMQ Binder,也新增了 Spring Cloud Bus 消息總線的新實(shí)現(xiàn) Spring Cloud Bus RocketMQ。

Spring Cloud Stream 對(duì)消息的編程模型進(jìn)行了統(tǒng)一封裝,用同一套代碼進(jìn)行消息的發(fā)送/接收,屏蔽底層消息中間件的實(shí)現(xiàn)細(xì)節(jié),讓我們?cè)陉P(guān)注點(diǎn)放到業(yè)務(wù)邏輯上。如果想要更換底層消息中間件,直接引入 Binder 的新實(shí)現(xiàn)即可,代碼層面幾乎無(wú)需修改。這是一段使用 Spring Cloud Stream RocketMQ & Spring Cloud Function 完成消息的接收,并轉(zhuǎn)換成大寫(xiě) & 添加 alibaba- 前綴的新消息,再發(fā)送給新的 topic 的過(guò)程:

spring.cloud.stream.bindings.input.destination=test-topic spring.cloud.stream.bindings.input.group=test-group1spring.cloud.stream.bindings.output.destination=test-topic-uppercasespring.cloud.stream.function.definition=uppercase|addprefix @SpringBootApplication @EnableBinding(Processor.class) public class FunctionApplication {public static void main(String[] args) {new SpringApplicationBuilder(FunctionApplication.class).web(WebApplicationType.NONE).run(args);}@Beanpublic Function<String, String> uppercase() {return x -> x.toUpperCase();}@Beanpublic Function<String, String> addprefix() {return x -> "alibaba-" + x;}}

分布式事務(wù)

Seata 是 阿里巴巴 開(kāi)源的 分布式事務(wù)中間件,以 高效 并且對(duì)業(yè)務(wù) 0 侵入 的方式,解決 微服務(wù) 場(chǎng)景下面臨的分布式事務(wù)問(wèn)題。
在 Spring Cloud 這一層面,我們通過(guò)在微服務(wù)中傳遞事務(wù)上下文的方式完成了 Seata 在 Spring Cloud 層面的接入:

  • Spring MVC 環(huán)境下支持自動(dòng)還原 Seata 事務(wù)上下文
  • 支持服務(wù)調(diào)用者通過(guò) RestTemplate 或 FeignClient 調(diào)用時(shí),自動(dòng)傳遞 Seata 事務(wù)上下文
  • 支持 FeignClient 和 Hystrix、Sentinel 同時(shí)使用的場(chǎng)景
    這是一段使用 Spring Cloud Alibaba Seata 完成 storage 和 order 服務(wù)進(jìn)行數(shù)據(jù)存儲(chǔ)的分布式事務(wù)代碼:
@GlobalTransactional(timeoutMills = 300000, name = "spring-cloud-demo-tx") @RequestMapping(value = "/seata/rest", method = RequestMethod.GET, produces = "application/json") public String rest() {// 調(diào)用 storage 服務(wù)。涉及數(shù)據(jù)庫(kù)操作String result = restTemplate.getForObject("http://127.0.0.1:18082/storage/" + COMMODITY_CODE + "/" + ORDER_COUNT,String.class);if (!SUCCESS.equals(result)) {throw new RuntimeException();}String url = "http://127.0.0.1:18083/order";HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>();map.add("userId", USER_ID);map.add("commodityCode", COMMODITY_CODE);map.add("orderCount", ORDER_COUNT + "");HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<MultiValueMap<String, String>>(map, headers);// 調(diào)用 order 服務(wù)。涉及數(shù)據(jù)庫(kù)操作ResponseEntity<String> response = restTemplate.postForEntity(url, request,String.class);result = response.getBody();if (!SUCCESS.equals(result)) {throw new RuntimeException();}return SUCCESS; }

Roadmap

Spring Boot Admin 是一個(gè)開(kāi)源社區(qū)項(xiàng)目,用于管理和監(jiān)控 SpringBoot 應(yīng)用程序。但是它沒(méi)有跟 Spring Cloud 做深度的整合。我們希望做一個(gè) Spring Cloud Admin,它能提供如下功能:

  • 增加服務(wù)治理控制臺(tái),整合微服務(wù)控制能力
  • 服務(wù)查詢、管理
  • 配置管理
  • 限流降級(jí)等
  • 項(xiàng)目管理/監(jiān)控
  • 參考 Spring Cloud Azure Playground?http://azure-spring-cloud.azurewebsites.net/?,創(chuàng)造 Spring Cloud Alibaba Playground,把一些最佳實(shí)踐,視頻教程,自動(dòng)生成項(xiàng)目等功能放上去
  • 增加 Spring Cloud Alibaba 最佳實(shí)踐項(xiàng)目
  • 針對(duì) Spring Cloud Alibaba 各種特性,開(kāi)發(fā)對(duì)應(yīng)的實(shí)戰(zhàn) Demo
  • 替換 Spring Cloud 服務(wù)調(diào)用客戶端 OpenFeign & Ribbon。開(kāi)發(fā)更通用的服務(wù)調(diào)用客戶端,替換 Spring Cloud 服務(wù)- - 調(diào)- 用客戶端 OpenFeign & Ribbon


原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。

總結(jié)

以上是生活随笔為你收集整理的Spring 社区的唯一一个国产开源项目 - Spring Cloud Alibaba 毕业了的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。