Scalable IO in Java【java高效IO】
第一次翻译,如有错误,请指正
1、Outline 大纲
Scalable network services 高效网络服务
Event-driven processing 事件驱动处理
Reactor pattern Reactor模式
Basic version 基本版本
Multithreaded versions 多线程版本
Other variants 其他变体
2、Network Services 网络服务
Web services, Distributed Objects, etcMost have same basic structure。web服务,分布式对象,等等, 大多是相同的基础结构
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, ...
但是不同的是每一步的XML解析,文件传输、web网页生成,服务计算
3、Classic Service Designs 经典的服务设计

Each handler may be started in its own thread 每一个handler在自己的线程中启动
4、classic ServerSocket Loop 经典的ServerSocket循环
public class Server implements Runnable{
@Override
public void run() {
try {
ServerSocket serverSocket = new ServerSocket(123456);
while (!Thread.interrupted()){
new Thread(new Handler(serverSocket.accept())).start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
static class Handler implements Runnable{
final Socket socket;
public Handler(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
try {
byte[] input = new byte[];
socket.getInputStream().read(input);
byte[] output = process(input);
socket.getOutputStream().write(output);
} catch (IOException e) {
e.printStackTrace();
}
}
private byte[] process(byte[] input) {
return null;
}
}
}
5、Scalability Goals 可伸缩目标
Graceful degradation under increasing load (more clients)
负载下(更多客户端)的优雅降级
Continuous improvement with increasing resources (CPU, memory, disk, bandwidth)
随着资源(CPU、内存、硬盘、带宽)的增加而不断改进
Also meet availability and performance goals Short latencies Meeting peak demand Tunable quality of service
可协调服务同时满足高峰需求的可用性和短延时的性能目标
Divide-and-conquer is usually the best approach for achieving any scalability goal
分而治之通常是实现任何可伸缩性目标最好的方法
6、Divide and Conquer 分而治之
Divide processing into small tasks 拆分小任务处理
Each task performs an action without blocking 每个任务执行无阻塞的执行一个动作
Execute each task when it is enabled 当执行每一个任务时,
an IO event usually serves as trigger IO事件通常用作触发器
Basic mechanisms supported in java.nio java.nio支持的基本机制
Non-blocking reads and writes 非阻塞读写
Dispatch tasks associated with sensed IO events 调度与感知IO事件相关的任务
Endless variation possible 无尽的变化
A family of event-driven designs 一系列事件驱动设计
degradation 退化
latency 潜在的
tunable 可调协的
Scalable IO in Java【java高效IO】的更多相关文章
- 高效IO之Java IO体系(一)
更多Android高级架构进阶视频学习请点击:https://space.bilibili.com/474380680 个人觉得可以用“字节流操作类和字符流操作类组成了Java IO体系”来高度概括J ...
- 黑马程序员——JAVA基础之IO流缓冲区,转换流,字节流
------- android培训.java培训.期待与您交流! ---------- 字符流的缓冲区 缓冲区的出现提高了对数据的读写效率. 对应类 • BufferedWriter ...
- Java API —— 编码 & IO流( InputStreamReader & OutputStreamWriter & FileReader & FileWriter & BufferedReader & BufferedWriter )
1.编码 1)编码表概述 由字符及其对应的数值组成的一张表 2)常见编码表 · ASCII/Unicode 字符集:ASCII是美国标准信息交换码,用一 ...
- java开发之IO流
一直对IO流记不清楚,从别的地方转过来. 看下图: 流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两 ...
- java学习一目了然——IO
java学习一目了然--IO IO是java学习当中很重要的一部分.IO流实现数据的上传下载,即读写数据,包括输入和输出流,输入流指的是将数据以字符或字节形式从外部媒介比如文件.数据库等读取到内存中所 ...
- 深入理解Java中的IO
深入理解Java中的IO 引言: 对程序语言的设计者来说,创建一个好的输入/输出(I/O)系统是一项艰难的任务 < Thinking in Java > 本文的目录视图如下: ...
- Java基础:IO流之字节流和字符流
1. 流的概念 流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备.外部文件等. 一个流,必有源端和目的端 ...
- Java之高级IO,Properties
IO流(高级) 释放资源的标准代码 主要考虑的是在什么时候释放资源比较合适.而且在jdk1.7之前和之后是不同的. package com.wzlove.demo; import java.io.Fi ...
- Java网络编程和NIO详解3:IO模型与Java网络编程模型
Java网络编程和NIO详解3:IO模型与Java网络编程模型 基本概念说明 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32 ...
随机推荐
- JavaScript快速查找节点
我们在实际的开发中,经常要获取页面中某个html元素,动态更新元素的样式.内容属性等. 我们已经知道在JavaScript中提供下面的方法获取子.父.兄节点的方法: 常规 通过父节点获取子节点: pa ...
- IIS7 增加JSON文件解析
在MIME增加一个Json类型,在MIME增加一个配置如:添加---> 文件扩展名为 .JSON ,MIME类型为text/json(也有将application/x-javascript) 然 ...
- JAVA使用qrcode生成二维码(带logo/不带logo)
/** * */ package qrcode; import java.awt.Color; import java.awt.Graphics2D; import java.awt.Image; i ...
- 【赛后补题】Lucky Probability(CodeForces 110D)
题意 给定两个\(P,Q\)的正整数区间(\(P,Q\)都符合\([L,R]\)这个区间,并且都\(\le 10^9\)),分别从其中随机选出一个数,选出的两个数作为一个新区间的左右端点.要求新区间内 ...
- L2-016 愿天下有情人都是失散多年的兄妹
L2-016 愿天下有情人都是失散多年的兄妹 (25 分) 呵呵.大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人.父母.祖父母.曾祖父母.高祖父母)则不可通婚.本题就请你 ...
- 如何快速搭建yum源
yum命令能够从指定的服务器自动下载rpm包并安装,它最强大的地方就是可以自动处理软件包的依赖关系,能够一次安装所有依赖的关系包.下面将通过虚拟机平台介绍两种快速搭建yum源的方法: 一.有网络的情况 ...
- linux磁盘扩容日志
//针对ext4文件格式的操作系统(如CentOS6):// umount /dev/vdb e2fsck -f /dev/vdb resize2fs /dev/vdb mount /dev/vdb ...
- 君学,佳一tvodp文件破解
tvodp文件破解的意思就是,越过加密部分直接提取内部原始文件,难度较大,方法用U盘刻老毛桃pe,然后电脑启动pe,在pe中打开文件,做提取工作, 本人淘宝破解:https://item.taobao ...
- lsblk命令详解
基础命令学习目录首页 lsblk 默认是树形方式显示: $lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 2. ...
- nginx正向vs反向代理
1.概述 nginx的正向代理,只能代理http.tcp等,不能代理https请求.有很多人不是很理解具体什么是nginx的正向代理.什么是反向代理.下面结合自己的使用做的一个简介: 1)正向代理: ...