从JDK新增HttpClient谈谈非阻塞编程模型.pptx

上传人:b****1 文档编号:1421982 上传时间:2022-10-22 格式:PPTX 页数:36 大小:2.16MB
下载 相关 举报
从JDK新增HttpClient谈谈非阻塞编程模型.pptx_第1页
第1页 / 共36页
从JDK新增HttpClient谈谈非阻塞编程模型.pptx_第2页
第2页 / 共36页
从JDK新增HttpClient谈谈非阻塞编程模型.pptx_第3页
第3页 / 共36页
从JDK新增HttpClient谈谈非阻塞编程模型.pptx_第4页
第4页 / 共36页
从JDK新增HttpClient谈谈非阻塞编程模型.pptx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

从JDK新增HttpClient谈谈非阻塞编程模型.pptx

《从JDK新增HttpClient谈谈非阻塞编程模型.pptx》由会员分享,可在线阅读,更多相关《从JDK新增HttpClient谈谈非阻塞编程模型.pptx(36页珍藏版)》请在冰豆网上搜索。

从JDK新增HttpClient谈谈非阻塞编程模型.pptx

从JDK11新增HttpClient谈谈非阻塞编程模型,北京时间9月26日,Oracle官方宣布Java11正式发布。

17个新特性,既有的HttpURLConnection存在许多问题其基类URLConnection当初是设计为支持多协议,但其中大多已经成为非主流(ftp,gopher)API的设计早于HTTP/1.1,过度抽象难以使用,存在许多没有文档化的行为它只支持阻塞模式(每个请求/响应占用一个线程),动机,JDK中HTTPClient的发展历史,JDKHttpURLConnectionApacheHttpClientOkhttpSpringRestTemplateSpringCloudFeign将Jetty用作客户端使用Netty库,在JDK11HTTPClient出现之前,初探JDKHTTPClient,指定协议(http/1.1或者http/2)转发(redirect)代理(proxy)认证(authenticator),第一步:

创建HttpClient,从HttpRequest的builder组建request请求URI请求method(GET,PUT,POST)请求体(requestbody)Timeout请求头(requestheader),第二步:

创建HttpRequest,httpclient可以用来发送多个httprequest请求可以被以同步或异步方式发送,第三步:

send,同步发送API阻塞直到HttpResponse返回,第三步:

1.同步发送,异步发送API立即返回一个CompletableFuture当它完成的时候会获得一个HttpResponse,第三步:

2.异步发送,CompletableFuture是在java8中加入的,支持组合式异步编程,多CPU多线程非阻塞(non-blocking),如何提升单机并发处理能力,阻塞模型(blocking),阻塞模型示意图,非阻塞模型示意图,以同步非阻塞模型中的著名的reactor为例,Linux中的阻塞与非阻塞,X86CPU有个权限级别,Linux中的阻塞与非阻塞,Linux对应着2个权限级别:

内核与应用程序,Linux中的阻塞与非阻塞,Linux中的阻塞IO模型,Linux中的阻塞与非阻塞,Linux中的非阻塞IO模型,Linux中的阻塞与非阻塞,Linux中的IO复用模型,Linux中的阻塞与非阻塞,Linux中的信号驱动IO模型,Linux中的阻塞与非阻塞,Linux中的异步IO模型,Linux中的阻塞与非阻塞,JavaIOJavaNIO,Java中的阻塞与非阻塞,阻塞vs非阻塞,非阻塞让并行的进程线程,执行更多的IO,非阻塞与回调,主线程(池),工作线程1(池),工作线程2(池),1、注册一个回调函数,2、数据到达后,调用回调函数,接收客户端请求分发给worker,回调也疯狂java中回调的演变历史,匿名类lanbda表达式FutureCompletableFuture类reactive-streams模型,客户端请求到达时,回调连接上数据库时,回调查询结果返回时,回调根据查询结果,调用微服务校验数据返回时,回调最终输出结果,回调的地狱,消息传递架构,事件总线,1,2,3,4,发布,接收,发布,接收,发布,接收,Publisher、Subscriber、SubscriptionBackPressure,reactive-streams,SPECIFICATION,reactive-streams,JDKFlow,JDK11HttpClient中的回调采用的是消息传递架构,具体用的是reactor-streams标准,JDK11HttpClient与非阻塞,请求响应的body暴露为reactivestreamshttpclient是请求的body的消费者httpclient是响应的body的生产者,请求响应的body与reactivestreams,request,response,HttpClient,消费body,生产body,生产body,消费body,互联网,HttpRequest内部,HttpResponse的内部,Spring框架的联合创始人兼Pivotal的首席工程师JuergenHoeller:

迄今为止,Java8是Java历史上应用最广泛的平台版本。

它的应用范围超过了Java6。

但是,我们将会迎来一种破坏性的Java发布节奏。

在可预见的未来,Java8将会作为我们的基准。

整个生态系统都是或者将是以Java8为基础的。

2023年之前,Java8会有来自业界许多利益相关者的支持承诺。

因此,从一个保守组织的角度来看,Java8是一个很好的基准。

刚刚发布的Java11是Java的下一个长期支持版本,Hoeller将其视为Java8的替代方案。

就像Java8一样,它也得到了很多供应商的长期支持承诺,包括Oracle、Azul、RedHat、IBM和SAP,它们承诺会支持到2023年甚至更久。

在此之后,下一个长期支持的发布版本将会是2021年的Java17。

Hoeller说到,“坦白来讲,我预计非LTS的Java发布版本受众将会很有限。

在17版本之前,我希望人们保持使用8或11版本”。

附录,OracleJDK支持路线图,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 广告传媒

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1