文档章节

再说异步调用和NIO

令飞
 令飞
发布于 2015/08/15 11:47
字数 726
阅读 753
收藏 8

    之前的一篇博客阐述了在IO密集型事务中,使用异步调用的好处:http://my.oschina.net/zhenglingfei/blog/397514,本篇文章要说说使用异步调用和单纯使用NIO作为服务端的场景。

    目前大多是的java异步调用都是基于NIO来实现的 ,使用系统底层的select或epoll这样的模式,不过我要说的并不是这个,而是这里对于NIO的使用是用于客户端的,也就是调用者,才有了所谓的异步调用。这样的好处在于,调用者A对于服务端B有着大量的IO调用,而用异步的方式可以只用少量的线程去服务于大量的IO操作,而不同于传统的socket调用,一次调用发起便会阻塞调用线程,当调用量一大,自然cpu利用率下降。正如我第一篇文章所说。这边是用异步的好处,好处在于客户端,因此,这种形式一般适合于服务端间的调用,而非web端,移动端这样的调用,因为这种客户端本身的调用量就不大,异步更适合于SOA,微服务这样的服务化模式,有大量的服务间调用

    异步是针对客户端调用的好处,那么,nio用在服务端有什么好处呢,可以参见tomcat 6以后nio模式,个人认为,作为服务端,不存在调用阻塞的情况(如果有调用其他服务,这有属于作为客户端的范畴,这里不做考虑),此时采用nio模型的好处在于服务端可以同时监听多个连接,相比于传统的web服务器采用socket的模式,一次处理一个连接,然后交给一个线程处理,这类似一种生产消费者模式,生产者是对网络连接的处理,而消费者是对解码后的请求内容的业务处理,如果消费者速度恒定,那么整体吞吐能力在一定范围内会随着生产速度的提升而,因此对于业务处理简单的情况,消费者速度相对较快,因此,如果生产者较慢就会影响吞吐量。而且,对于并发量很大的服务,如日志服务,业务处理简单,但是量特别大,网卡很有可能被堵塞,并且整体吞吐也不高。

讲了这么多,是为了说明nio在服务端和客户端的区别,以便能更好的使用nio技术,后续会补上基于各种类型的业务的测试数据。

© 著作权归作者所有

令飞
粉丝 47
博文 21
码字总数 14127
作品 0
杭州
程序员
私信 提问
最近仔细研究了一下Java的NIO以及线程并发,搞清了点思路,特作笔记如下(NIO篇)

[转]http://www.cnblogs.com/feidao/archive/2005/07/15/193788.html 因为前段时间的项目需要写一些高性能服务器,结果写出来的结果是五花八门,我们要求使用NIO编写异步服务器,但是竟然有人...

风林火山
2010/12/26
0
1
求教一个系统设计的问题

假设当前Web系统,需要集成大量第三方系统API(服务不稳定、不可靠),各位大神,如何设计这个系统比较好一点,求指点,万分感谢! 以下是个人的拙见,求指点,主要考虑的点: 1、第三方系统...

Nice2018
2018/06/25
193
3
深入剖析通信层和 RPC 调用的异步化 :一

异步的一些常见误区 1.1. 常见的理解误区 在将近 10 年的平台中间件研发历程中,我们的平台和业务经历了从 C++ 到 Java,从同步的 BIO 到非阻塞的 NIO,以及纯异步的事件驱动 I/O(AIO)。服务...

Java干货分享
01/14
0
0
SpringBoot | 第二十一章:异步开发之异步调用

前言 上一章节,我们知道了如何进行异步请求的处理。除了异步请求,一般上我们用的比较多的应该是异步调用。通常在开发过程中,会遇到一个方法是和实际业务无关的,没有紧密性的。比如记录日...

oKong
2018/08/17
0
0
初识NIO之Java小Demo

Java中的IO、NIO、AIO: BIO:在Java1.4之前,我们建立网络连接均使用BIO,属于同步阻塞IO。默认情况下,当有一条请求接入就有一条线程专门接待。所以,在客户端向服务端请求时,会询问是否有...

innoyiya
2018/08/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

UserInputControls用户输入控制

enum UserInputControls { kGovernedByOrthoMode = 0x0001,//正交模式管理 kNullResponseAccepted = 0x0002,//允许输入空 kDontEchoCancelForCtrlC = 0x0004,//ctrl C 模式不能重复......

一个小妞
25分钟前
1
0
分布式系统的事务处理

当我们在生产线上用一台服务器来提供数据服务的时候,我会遇到如下的两个问题: 1)一台服务器的性能不足以提供足够的能力服务于所有的网络请求。 2)我们总是害怕我们的这台服务器停机,造成...

群星纪元
27分钟前
5
0
Kanban VS Scrum:哪个是最好的敏捷项目管理框架

“我们使用敏捷开发。”在与软件开发团队交流时,你会听到很多这样的说法。根据统计,2018年全球约有90%的开发人员在使用敏捷开发。Choerodon猪齿鱼团队也是其中之一。 但是,敏捷并不统一。...

Choerodon
31分钟前
2
0
vue select 慢一步

我在使用vue的select的时候,@change事件里面,写一个axios拿到数据,然后修改某个变量,按理修改变量会立即呈现在页面上面,但实际情况是,值是变更了,但是页面上的效果慢了一步,非常奇怪...

朝如青丝暮成雪
35分钟前
1
0
分布式架构 核心知识体系

1.问题 1、何为分布式何为微服务? 2、为什么需要分布式? 3、分布式核心理论基础,节点、网络、时间、顺序,一致性? 4、分布式是系统有哪些设计模式? 5、分布式有哪些类型? 6、如何实现分...

小刀爱编程
38分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部