电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

詳解Java中的reactive stream協議

瀏覽:8日期:2022-08-11 13:06:14
目錄背景什么是reactive stream深入了解java版本的reactive streamPublisherSubscriberSubscriptionProcessorJDK中reactive stream的實現總結背景

每個數據流都有一個生產者一個消費者。生產者負責產生數據,而消費者負責消費數據。如果是同步系統,生產一個消費一個沒什么問題。但是如果在異步系統中,就會產生問題。

因為生產者無法感知消費者的狀態,不知道消費者到底是繁忙狀態還是空閑狀態,是否有能力去消費更多的數據。

一般來說數據隊列的長度都是有限的,即使沒有做限制,但是系統的內存也是有限的。當太多的數據沒有被消費的話,會導致內存溢出或者數據得不到即使處理的問題。

這時候就需要back-pressure了。

如果消息接收方消息處理不過來,則可以通知消息發送方,告知其正在承受壓力,需要降低負載。back-pressure是一種消息反饋機制,從而使系統得以優雅地響應負載, 而不是在負載下崩潰。

而reactive stream的目的就是用來管理異步服務的流數據交換,并能夠讓接收方自主決定接受數據的頻率。back-pressure就是reactive stream中不可或缺的一部分。

什么是reactive stream

上面我們講到了reactive stream的作用,大家應該對reactive stream有了一個基本的了解。這里我們再給reactive stream做一個定義:

reactive stream就是一個異步stream處理的標準,它的特點就是非阻塞的back pressure。

reactive stream只是一個標準,它定義了實現非阻塞的back pressure的最小區間的接口,方法和協議。

所以reactive stream其實有很多種實現的,不僅僅是java可以使用reactive stream,其他的編程語言也可以。

reactive stream只是定義了最基本的功能,各大實現在實現了基本功能的同時可以自由擴展。

目前reactive stream最新的java版本是1.0.3,是在2019年8月23發布的。它包含了java API,協議定義文件,測試工具集合和具體的實現例子。

深入了解java版本的reactive stream

在介紹java版本的reactive stream之前,我們先回顧一下reactive stream需要做哪些事情:

1.能夠處理無效數量的消息

2.消息處理是有順序的

3.可以異步的在組件之間傳遞消息

4.一定是非阻塞和backpressure的

為了實現這4個功能,reactive stream定義了4個接口,Publisher,Subscriber,Subscription,Processor。這四個接口實際上是一個觀察者模式的實現。接下來我們詳細來分析一下各個接口的作用和約定。

Publisher

先看下Publisher的定義:

public interface Publisher<T> { public void subscribe(Subscriber<? super T> s);}

Publisher就是用來生成消息的。它定義了一個subscribe方法,傳入一個Subscriber。這個方法用來將Publisher和Subscriber進行連接。

一個Publisher可以連接多個Subscriber。

每次調用subscribe建立連接,都會創建一個新的Subscription,Subscription和subscriber是一一對應的。

一個Subscriber只能夠subscribe一次Publisher。

如果subscribe失敗或者被拒絕,則會出發Subscriber.onError(Throwable)方法。

Subscriber

先看下Subscriber的定義:

public interface Subscriber<T> { public void onSubscribe(Subscription s); public void onNext(T t); public void onError(Throwable t); public void onComplete();}

Subscriber就是消息的接收者。

在Publisher和Subscriber建立連接的時候會觸發onSubscribe(Subscription s)方法。

當調用Subscription.request(long)方法時,onNext(T t)會被觸發,根據request請求參數的大小,onNext會被觸發一次或者多次。

在發生異常或者結束時會觸發onError(Throwable t)或者onComplete()方法。

Subscription

先看下Subscription的定義:

public interface Subscription { public void request(long n); public void cancel();}

Subscription代表著一對一的Subscriber和Publisher之間的Subscribe關系。

request(long n)意思是向publisher請求多少個events,這會觸發Subscriber.onNext方法。

cancel()則是請求Publisher停止發送信息,并清除資源。

Processor

先看下Processor的定義:

public interface Processor<T, R> extends Subscriber<T>, Publisher<R> {}

Processor即是Subscriber又是Publisher,它代表著一種處理狀態。

JDK中reactive stream的實現

在JDK中java.util.concurrent.Flow就是reactive stream語義的一種實現。

Flow從JDK9就開始有了。我們看下它的結構:

詳解Java中的reactive stream協議

從上圖我們可以看到在JDK中Flow是一個final class,而Subscriber,Publisher,Subscription,Processor都是它的內部類。

總結

reactive stream的出現有效的解決了異步系統中的背壓問題。只不過reactive stream只是一個接口標準或者說是一種協議,具體的實現還需要自己去實現。

以上就是詳解Java中的reactive stream協議的詳細內容,更多關于Java中的reactive stream協議的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
主站蜘蛛池模板: 美国PARKER齿轮泵,美国PARKER柱塞泵,美国PARKER叶片泵,美国PARKER电磁阀,美国PARKER比例阀-上海维特锐实业发展有限公司二部 | 千淘酒店差旅平台-中国第一家针对TMC行业的酒店资源供应平台 | 济南保安公司加盟挂靠-亮剑国际安保服务集团总部-山东保安公司|济南保安培训学校 | 蓝鹏测控平台 - 智慧车间系统 - 车间生产数据采集与分析系统 | 河北码上网络科技|邯郸小程序开发|邯郸微信开发|邯郸网站建设 | PVC地板|PVC塑胶地板|PVC地板厂家|地板胶|防静电地板-无锡腾方装饰材料有限公司-咨询热线:4008-798-128 | 北京网站建设公司_北京网站制作公司_北京网站设计公司-北京爱品特网站建站公司 | 布袋式除尘器|木工除尘器|螺旋输送机|斗式提升机|刮板输送机|除尘器配件-泊头市德佳环保设备 | 产业规划_产业园区规划-产业投资选址及规划招商托管一体化服务商-中机院产业园区规划网 | 焦作网 WWW.JZRB.COM| 北京租车公司_汽车/客车/班车/大巴车租赁_商务会议/展会用车/旅游大巴出租_北京桐顺创业租车公司 | 丝杆升降机-不锈钢丝杆升降机-非标定制丝杆升降机厂家-山东鑫光减速机有限公司 | 篷房[仓储-婚庆-展览-活动]生产厂家-江苏正德装配式帐篷有限公司 | 细沙回收机-尾矿干排脱水筛设备-泥石分离机-建筑垃圾分拣机厂家-青州冠诚重工机械有限公司 | 缠膜机|缠绕包装机|无纺布包装机-济南达伦特机械设备有限公司 | 继电器模组-IO端子台-plc连接线-省配线模组厂家-世麦德 | 异噻唑啉酮-均三嗪-三丹油-1227-中北杀菌剂厂家 | 湖南教师资格网-湖南教师资格证考试网 | 安全光栅|射频导纳物位开关|音叉料位计|雷达液位计|两级跑偏开关|双向拉绳开关-山东卓信机械有限公司 | 北钻固控设备|石油钻采设备-石油固控设备厂家 | 山东艾德实业有限公司| 上海办公室装修,写字楼装修—启鸣装饰设计工程有限公司 | 南京交通事故律师-专打交通事故的南京律师 | PE一体化污水处理设备_地埋式生活污水净化槽定制厂家-岩康塑业 | 蒸压釜-陶粒板隔墙板蒸压釜-山东鑫泰鑫智能装备有限公司 | 密集架|电动密集架|移动密集架|黑龙江档案密集架-大量现货厂家销售 | 金环宇|金环宇电线|金环宇电缆|金环宇电线电缆|深圳市金环宇电线电缆有限公司|金环宇电缆集团 | 高空重型升降平台_高空液压举升平台_高空作业平台_移动式升降机-河南华鹰机械设备有限公司 | 南京泽朗生物科技有限公司-液体饮料代加工_果汁饮料代加工_固体饮料代加工 | 高温高压釜(氢化反应釜)百科 | 真空包装机-诸城市坤泰食品机械有限公司 | 二维运动混料机,加热型混料机,干粉混料机-南京腾阳干燥设备厂 | 陕西华春网络科技股份有限公司| RV减速机-蜗轮蜗杆减速机-洗车机减速机-减速机厂家-艾思捷 | 淘剧影院_海量最新电视剧,免费高清电影随心观看| 江苏大隆凯科技有限公司 | 顺景erp系统_erp软件_erp软件系统_企业erp管理系统-广东顺景软件科技有限公司 | 上海风淋室_上海风淋室厂家_上海风淋室价格_上海伯淋 | 天津电机维修|水泵维修-天津晟佳机电设备有限公司 | 体感VRAR全息沉浸式3D投影多媒体展厅展会游戏互动-万展互动 | 气动|电动调节阀|球阀|蝶阀-自力式调节阀-上海渠工阀门管道工程有限公司 |