成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

響應式編程:Vert.x官網學習

開發 開發工具
Vert.x 是一個基于 JVM 的輕量級、高性能響應式工具包,適用于最新的服務端后臺、互聯網、企業應用架構。Vert.x 基于全異步的事件驅動和非阻塞的 IO 模型,可以使用很少的線程資源處理大量并發請求。

本文基于 Vert.x 官網 https://vertx.io/ 內容,帶領大家學習響應式編程里比較有名的工具包 Vert.x 。文章內容取自官網由博主簡化總結,希望幫助大家理解響應式編程。

  • Vert.x 簡介
  • Vert.x 特性
  • 響應式模式概述
  • 總結

推薦博主開源的 H5 商城項目waynboot-mall,這是一套全部開源的微商城項目,包含三個項目:運營后臺、H5 商城前臺和服務端接口。實現了商城所需的首頁展示、商品分類、商品詳情、商品 sku、分詞搜索、購物車、結算下單、支付寶/微信支付、收單評論以及完善的后臺管理等一系列功能。技術上基于最新得 Springboot3.0、jdk17,整合了 MySql、Redis、RabbitMQ、ElasticSearch 等常用中間件。分模塊設計、簡潔易維護,歡迎大家點個 star、關注博主。

github 地址:https://github.com/wayn111/waynboot-mall

Vert.x 簡介

官網首頁官網首頁

先了解 Vert.x 是什么,官網首頁介紹文字可以看出 Vert.x 是由 Eclipse 開發的一個在 JVM 上 Reactive(響應式) 應用程序。

Reactive(響應式)編程是什么?

響應式編程是一種面向數據流和變化傳播的編程范式。這意味著可以在編程語言中很方便地表達靜態或動態的數據流,而相關的計算模型會自動將變化的值通過數據流進行傳播。

例如在命令式編程設置中,a = b + c 意味著在計算表達式時 a 被分配為 b + c 的結果,之后 b 和 c 的值進行修改也不會影響 a 值。但是在響應式編程中,只要 b 或 c 的值發生變化,a 的值就會自動更新,而程序無需顯式地重新執行語句 a = b + c 來確定當前分配的 a 值。

如果你了解前端框架的 MVVM 思想,那么你應該能理解這里說的  a = b + c  問題。

官網定義

官網對于 Vert.x 的定義是:一個用于在 JVM 上構建響應式應用程序的工具包。

注意 Vert.x 是一個工具包,不是框架。

響應式應用程序既可以隨著工作負載的增長而擴展,也可以在出現故障時具有彈性。響應式應用程序具有響應能力,因為它通過有效利用系統資源并保護自身免受錯誤的影響來控制延遲。

響應式編程不僅僅是體現在編碼 a = b + c  上,更體現在由其開發出程序的高性能和擴展性上。

MicroservicesMicroservices

Vert.x 還有一個大型響應式模塊生態系統(即由 Eclipse 主導的 Vert.x 社區)來提供支持,其中包含編寫現代服務時所需的任何內容:全面的 Web 技術棧、響應式數據庫驅動程序、消息傳遞、事件流、集群、指標、分布式跟蹤等。

Vert.x 特性

官網對 Vert.x 的五個特性進行了闡述。

特性特性

Resource-efficient(資源利用)

與基于阻塞 I/O 的傳統技術和框架相比,可以用更少的資源處理更多的請求。Vert.x 非常適合各種執行環境,包括虛擬機和容器等受限環境。

劃重點:不浪費資源,提高部署密度,省錢!

Concurrent and asynchronous(并發和異步)

通常其他人告訴你異步編程很難,但我們努力使 Vert.x 編程變得很簡單,適合大多數人,同時不犧牲正確性和性能。

你可以選擇最適合當前任務的模型:callback、Promise、Future、響應式擴展和 (Kotlin) 協程。

Flexible(使用靈活)

Vert.x 是一個工具包,而不是一個框架,因此它自然具有很強的可組合性和可嵌入性。Vert.x 對你的應用程序結構應該沒有要求。

選擇你需要的模塊和客戶端,并在構建應用程序時組合它們。Vert.x 將始終根據你的需求進行調整和擴展。

Vert.x is fun(編碼有趣)

忘記復雜性和昂貴的抽象。使用 Vert.x,編寫的內容實際上就是要執行的內容!回歸簡單的設計,忘記一些既定的“最佳實踐”,并享受編寫易于理解的代碼是不會讓你失望的。

我們還有一個友好的社區,因此你可以向在各種環境中使用過 Vert.x 的人們學習。

Ecosystem(生態系統)

Web API、數據庫、消息傳遞、事件流、云、注冊表、安全性等應有盡有。Vert.x 提供了適用于現代應用程序的全面的端到端響應式客戶端技術棧。

如果你找不到想要的東西,那么很有可能其他人已經在更廣泛的 Vert.x 開源生態系統中找到了它。Vert.x 對于你的技術棧來說是一項很安全的投資。

響應式模式概述

最開始是線程

并發的經典方法是使用線程。多個線程可以存在于單個進程中,執行并發工作并共享相同的內存空間。

大多數應用程序和服務開發框架都基于多線程。從表面上看每個連接都有 1 個線程的模型令人放心,因為開發人員可以依賴傳統的命令式代碼。

多線程“簡單”但有限

當工作負載超出工作負載時會發生什么?(參見 C10k 問題)

C10K 問題就是如何一臺物理機上同時服務 10000 個用戶?C 代表并發,10K 就是 10000

答案:傳統的阻塞 I/O 模式中,正在進行的請求會創建大量線程,因而需要進行大量上下文切換工作,導致機器資源利用率偏低,因而難以解決C10k問題。

請求執行時,有些線程因為在等待 I/O 操作完成會被阻塞,有些線程準備處理 I/O 結果,有些線程正在執行 CPU 密集型任務。

雖然現代內核有非常好的調度程序,但你不能指望它們能夠像處理 5?000 個線程那樣輕松地處理 50?000 個線程。而且創建線程代價也不小,創建一個線程需要幾毫秒,而一個新線程則需要大約 1MB 內存。

異步編程:可擴展性和資源效率

使用異步 I/O 時,可以使用更少的線程處理更多并發連接。當 I/O 操作發生時,我們不會阻塞線程,而是繼續執行另一個已準備好進行的任務,并在準備就緒后恢復初始任務。

Vert.x 使用事件循環來實現并發工作負載。

在事件循環上運行的代碼不應執行阻塞 I/O 或冗長的處理。但如果你有這樣的代碼,請不要擔心,Vert.x 有工作線程和 API 來處理事件循環中的事件。

選擇最佳的異步編程模型

我們知道異步編程需要付出更多的努力。在 Vert.x 的核心,我們支持 callbacks 和 Promise/Futures,后者是用于鏈接異步操作的簡單而優雅的模型。

RxJava 雖然可以實現高級響應式編程,但如果你更喜歡更接近傳統命令式編程的方式,Vert.x 也可以為你提供 Kotlin 協程的一流支持。

不要讓失敗破壞響應能力

失敗總是會發生。數據庫將出現故障,網絡將出現故障,或者依賴的某些服務將變得無響應。

Vert.x 提供了控制延遲的工具,包括簡單高效的斷路器。

豐富的生態系統

Vert.x 生態包含用于構建現代端到端響應式服務的模塊。從高效的響應式數據庫客戶端到事件流、消息傳遞和 Web 技術棧,Vert.x的各個模塊可以分為以下幾類:

  • 核心模塊:vertx-core,提供了基礎的TCP、HTTP、文件系統、事件總線等功能,是其他模塊的基礎。
  • Web模塊:vertx-web,提供了路由器、模板引擎、身份驗證、Web客戶端等功能,可以方便地開發Web應用。
  • 數據訪問模塊:vertx-jdbc-client,vertx-mongo-client,vertx-redis-client,vertx-mysql-client等,提供了對各種數據庫的異步訪問支持。
  • 消息模塊:vertx-rabbitmq-client,vertx-kafka-client,vertx-amqp-client等,提供了對各種消息中間件的異步訪問支持。
  • 各語言模塊:Vert.x 支持多種編程語言,如Java、JavaScript、Ruby、Python、Groovy、Scala等,并提供了友好的API接口。
  • 微服務模塊:vertx-service-discovery,vertx-circuit-breaker,vertx-config等,提供了服務發現、熔斷器、配置管理等功能,可以幫助開發微服務應用。
  • 其他模塊:還有一些其他的模塊,如vertx-mail-client,vertx-auth-common,vertx-dropwizard-metrics等,提供了郵件客戶端、認證、監控等功能。

總結

Vert.x 是一個基于 JVM 的輕量級、高性能響應式工具包,適用于最新的服務端后臺、互聯網、企業應用架構。Vert.x 基于全異步的事件驅動和非阻塞的 IO 模型,可以使用很少的線程資源處理大量并發請求。Vert.x 還提供了分布式系統、微服務、數據庫、消息傳輸、web開發支持等特性,使得開發者可以輕松編寫響應式應用程序,具有很好的擴展性和可靠性。

責任編輯:武曉燕 來源: waynblog
相關推薦

2022-03-04 15:19:59

Spring BooJavaVert.x

2025-05-06 01:14:00

系統編程響應式

2021-07-14 13:12:51

2022-06-16 13:08:30

Combine響應式編程訂閱

2022-07-15 08:16:56

Stream函數式編程

2022-03-09 23:02:30

Java編程處理模型

2021-07-28 20:13:04

響應式編程

2022-08-25 11:00:19

編程系統

2022-10-25 08:05:12

Kotlin響應式編程

2009-04-24 08:58:58

Windows 7微軟操作系統

2022-09-01 08:00:00

響應式編程集成

2020-10-27 10:26:03

編程開發Java

2020-08-31 07:19:57

MonoFlux Reactor

2013-02-21 09:54:12

響應式重構Web

2019-09-24 08:16:14

Reactor響應式編程

2021-08-12 18:48:31

響應式編程Bio

2022-09-22 10:51:32

服務端開發者異步非阻塞編程

2021-03-09 22:29:46

Vue 響應式API

2016-11-23 13:46:08

Android

2023-04-06 09:42:00

LispHTMLQwit
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产超碰人人爽人人做人人爱 | 日一区二区 | 天天操天天干天天透 | 欧美激情精品久久久久久 | 国产精品久久久久久久久久 | 日韩高清av | 天天拍天天射 | 亚洲国产欧美精品 | 国产成人高清视频 | 在线婷婷 | 日韩中文在线观看 | 亚洲成人动漫在线观看 | 美女天天操 | 7777在线视频免费播放 | 国产精品高潮呻吟久久aⅴ码 | 亚洲综合三区 | 99爱免费 | 黄一区二区三区 | www,黄色,com| www.久久.com| 精品一区二区三区四区外站 | 九色视频网站 | 国产91成人 | 蜜桃在线播放 | 天堂网中文| 91人人澡人人爽 | 欧美国产一区二区 | 免费在线观看成人av | 九色 在线| 国产美女精品视频 | 红色av社区 | 亚洲成人免费视频在线 | 日日操操| 黑人精品xxx一区一二区 | 亚洲人成人一区二区在线观看 | 亚洲激情一级片 | 成人a在线观看 | 日韩精品a在线观看图片 | 久久99精品久久久水蜜桃 | 亚洲婷婷六月天 | 国产亚洲一区二区在线观看 |