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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

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

發布時間:2024/8/23 javascript 88 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring 社区的唯一一个国产开源项目 - Spring Cloud Alibaba 毕业了 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

阿里妹導讀:一年多前,Java 界最近發生了一件大事,阿里開源 Spring Cloud Alibaba,并推出首個預覽版。Spring Cloud 本身是一套微服務規范,并不是一個拿來即可用的框架,而 Spring Cloud Alibaba 的開源為開發者們提供了這套規范的實現方式。同時,Spring Cloud Alibaba 提供的完整的微服務組件、中文文檔和本地化的開源服務提高了開發者們接入微服務的速率,并降低了后續的運維難度。

經過一年多的孵化,Spring Cloud Alibaba 作為 Spring 社區的唯一一個國產開源項目,正式從 Spring Cloud Incubator 孵化器畢業,并發布了適配 Spring Cloud Edgware、Finchley、Greenwich 三個版本的新版本。
Spring Cloud Alibaba 是 Spring 社區第一個也是唯一一個國產開源項目。

?

Spring Cloud Alibaba 畢業后從孵化器倉庫遷移到了 Github Alibaba 倉庫下,新的倉庫地址點擊這里。 新的 maven 坐標如下:

<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 社區打造出的一款基于 Spring Boot 用于快速構建分布式系統的框架,主要包括以下特性:

?

Spring Cloud Alibaba 是阿里巴巴開源中間件跟 Spring Cloud 體系的融合:

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

Spring Cloud Alibaba 功能

總體架構

依托 Spring Cloud Alibaba,只需要添加一些注解和少量配置,就可以將 Spring Cloud 應用接入阿里微服務解決方案,通過阿里中間件來迅速搭建分布式應用系統。

服務注冊 & 配置管理

服務注冊 & 配置管理是微服務應用中必不可少的兩大基礎功能。

Spring Cloud Alibaba 基于 Nacos 提供 spring-cloud-alibaba-starter-nacos-discovery & spring-cloud-alibaba-starter-nacos-config 實現了服務注冊 & 配置管理功能。

依靠 @EnableDiscoveryClient 進行服務的注冊,兼容 RestTemplate & OpenFeign 的客戶端進行服務調用。

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);

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

流控降級

流控降級是微服務穩定性的法寶,用于解決各種不穩定的場景可能會導致的嚴重后果。

在限流層面:我們根據系統的處理能力對流量進行控制,在保證系統吞吐量比較高的同時又不會把系統打垮。

在降級層面:在服務出現不穩定因素的時候暫時切斷服務的調用,等待一段時間再進行嘗試。一方面防止給不穩定服務“雪上加霜”,另一方面保護服務的調用方不被拖垮。

Spring Cloud Alibaba 基于 Sentinel 提供 spring-cloud-alibaba-starter-sentinel 對 Spring 體系內基本所有的客戶端,網關進行了適配,包括了 WebServlet, WebFlux, RestTemplate, OpenFeign, Netflix Zuul, Spring Cloud Gateway。

只需引入 starter,即可對這些組件生效。只需定義規則進行流控降級:

限流規則:

降級規則:

服務調用

Spring Cloud 默認的服務調用依賴 OpenFeign 或 RestTemplate 使用 REST 進行調用。

Spring Cloud Alibaba Dubbo 只需使用 @DubboTransported 注解即可將底層的 Rest 協議無縫切換成 Dubbo RPC 協議,進行 RPC 調用。這一舉措讓 Spring Cloud 的客戶端調用多了一個新的 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 的新實現: Spring Cloud Stream RocketMQ Binder,也新增了 Spring Cloud Bus 消息總線的新實現 Spring Cloud Bus RocketMQ。

Spring Cloud Stream 對消息的編程模型進行了統一封裝,用同一套代碼進行消息的發送/接收,屏蔽底層消息中間件的實現細節,讓我們在關注點放到業務邏輯上。如果想要更換底層消息中間件,直接引入 Binder 的新實現即可,代碼層面幾乎無需修改。這是一段使用 Spring Cloud Stream RocketMQ & Spring Cloud Function 完成消息的接收,并轉換成大寫 & 添加 alibaba- 前綴的新消息,再發送給新的 topic 的過程:

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;}}

分布式事務

Seata 是 阿里巴巴 開源的 分布式事務中間件,以 高效 并且對業務 0 侵入 的方式,解決 微服務 場景下面臨的分布式事務問題。
在 Spring Cloud 這一層面,我們通過在微服務中傳遞事務上下文的方式完成了 Seata 在 Spring Cloud 層面的接入:

  • Spring MVC 環境下支持自動還原 Seata 事務上下文
  • 支持服務調用者通過 RestTemplate 或 FeignClient 調用時,自動傳遞 Seata 事務上下文
  • 支持 FeignClient 和 Hystrix、Sentinel 同時使用的場景
    這是一段使用 Spring Cloud Alibaba Seata 完成 storage 和 order 服務進行數據存儲的分布式事務代碼:
@GlobalTransactional(timeoutMills = 300000, name = "spring-cloud-demo-tx") @RequestMapping(value = "/seata/rest", method = RequestMethod.GET, produces = "application/json") public String rest() {// 調用 storage 服務。涉及數據庫操作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);// 調用 order 服務。涉及數據庫操作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 是一個開源社區項目,用于管理和監控 SpringBoot 應用程序。但是它沒有跟 Spring Cloud 做深度的整合。我們希望做一個 Spring Cloud Admin,它能提供如下功能:

  • 增加服務治理控制臺,整合微服務控制能力
  • 服務查詢、管理
  • 配置管理
  • 限流降級等
  • 項目管理/監控
  • 參考 Spring Cloud Azure Playground?http://azure-spring-cloud.azurewebsites.net/?,創造 Spring Cloud Alibaba Playground,把一些最佳實踐,視頻教程,自動生成項目等功能放上去
  • 增加 Spring Cloud Alibaba 最佳實踐項目
  • 針對 Spring Cloud Alibaba 各種特性,開發對應的實戰 Demo
  • 替換 Spring Cloud 服務調用客戶端 OpenFeign & Ribbon。開發更通用的服務調用客戶端,替換 Spring Cloud 服務- - 調- 用客戶端 OpenFeign & Ribbon


原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。