Netty学习前的基础知识(六):Doug Lea的nio文档学习之古典的网络编程服务设计

背景

学习Netty之前,学习Doug Lea的nio知识。Doug Lea是包 java.nio 的作者。


Classic Service Designs(古典的网络编程服务设计)
  1. Web services, Distributed Objects, etc. Most have same basic structure: Read request;Decode request;Process service; Encode reply ;Send reply . But differ in nature and cost of each step XML parsing, File transfer, Web page generation, computational services.

在这里插入图片描述
2. 典型的模式:一请求一线程一应答。服务对客户端发来的每个请求都会创建一个线程。
3. 实现伪代码
在这里插入图片描述
4. 需要实现的一些目标
a) 如果客户端非常多的情况下,只能持续添加硬件(CPU,memory,disk,bandwidth)来满足。
b) 如何满足低延迟,大量请求?
5. 方法
a)分而治之设计。把单线程处理的所有事情分拆分成一个个小任务去执行,并且每个小任务都是由线程池去处理的。
在这里插入图片描述

b)事件驱动设计 。把执行过程设计成异步的。注册事件,事件发生,监听事件发生。

c) Reactor设计。Reactor responds to IO events by dispatching the appropriate handle. Handlers perform non-blocking actions. Manage by binding handlers to event.

小结
  1. 学习古典的网络编程服务设计方式,并理解它的缺陷。一请求一线程一应答,非常消耗资源。
  2. 梳理网络编程需要实现的目标,在有限的资源条件下,支撑更多的客户端发来大量的请求。
  3. 采用分而治之的思想和事件驱动模式及其Reactor论文中提到的Reactor模式,进行编程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值