为什么80%的码农都做不了架构师?>>>   

虽然现在对大多数程序员来讲,基本不会再有使用Java开发一个服务器这样的任务,但是,这方面的技术研究一下,对自己的技术提高还是非常有帮助的。说不定啥时候能派上用场。

使用Java(J2SE)来设计服务器产品(不使用开源或其他已有产品)的架构,随着Java的不断发展,这几年也发生了很大变化。在JDK1.4之前,使用Java构建服务器应用本身就很少,所以这里也就不提了,我们从JDK1.4开始说。

第一阶段:

要点是:一个连接一个线程



 

阶段2:

服务器端采用了线程池



 

阶段1和阶段2虽然简单,但是很实用,在很多场景下仍然是第一选择。而且编程模型业内非常简单。

阶段3:采用非阻塞IO,多路复用技术,又有两种不同的方式



 

这种方式很重要的一点就是在IO事件发生时得到通知,由程序进行处理。

NIO给编程带来了很大的复杂度,使用NIO开发非常不容易,也很容易犯错误,所以,采用别人的框架是一个简单而自然的选择,采用grizzly和mina都很不错,对通用的场景都能满足要求。这里提醒一下,不管mina和grizzly,都有一些你不想用的特性,干扰你想用的功能,需要小心对待,最好自己也能处理mina和grizzly的bug,改进这些框架的功能。

再有,给予NIO来开发SSL也很复杂。

第四阶段:使用AIO技术



 

AIO最大的特性就是事前先设置好事件的回调函数,事件发生时自动调用回调。而且,得到的通知是“IO操作完成”,而不是NIO的“IO操作即将开始”。

使用AIO,在上层开发SSL也也很麻烦。

转载于:https://my.oschina.net/webas/blog/125721

使用J2SE进行服务器架构技术选型的变迁相关推荐

  1. 小米资深工程师瞿晋萍(男):米聊服务器的技术选型和架构设计

    小米资深工程师瞿晋萍:米聊服务器的技术选型和架构设计 - 资讯频道 - CSDN.NET 小米资深工程师瞿晋萍:米聊服务器的技术选型和架构设计 2012-07-07 11:04 | 238次阅读 | ...

  2. 米聊服务器的技术选型和架构设计

    http://wenku.it168.com/d_000434507.shtml米聊服务器的技术选型和架构设计

  3. 大数据平台架构技术选型与场景运用

    内容来源:2017年5月6日,大眼科技CTO张逸在"魅族技术开放日第八期--数据洞察"进行<大数据平台架构技术选型与场景运用>演讲分享.视频地址:https://mp. ...

  4. Spring Cloud Alibaba 分布式微服务高并发数据平台化(中台)思想+多租户saas企业开发架构技术选型和设计方案

    基于Spring Cloud Alibaba 分布式微服务高并发数据平台化(中台)思想+多租户saas设计的企业开发架构,支持源码二次开发.支持其他业务系统集成.集中式应用权限管理.支持拓展其他任意子 ...

  5. 基于CSE的微服务架构实践-轻量级架构技术选型

    [摘要] 本文在前一篇"基于CSE的微服务架构实践-基础架构"基础上,介绍了使用CSE进行轻量级架构的技术选型参考.文末提供了基于JWT的微服务认证鉴权方案. 轻量级架构模式下,可 ...

  6. 如何进行架构技术选型

    一.什么是技术选型 为了达到业务需求,从各种技术选择中选取最优的过程. 开发语言:Java,Python,C++ 中间件:Mysql/PGSQL,Redis/Memcache 微服务框架:Spring ...

  7. SaaS模式、技术与案例详解——第15章 SaaS平台的技术选型

    [本章导读语] "笑嘻嘻的小猫咪,"爱丽斯问道,"请您告诉我,我应该走哪条路 呢?""那取决于您想去何方."小猫回答说. ________路 ...

  8. 微服务(一) --- 架构与选型

    微服务架构的概述 应用架构的发展 应用是可以独立运行的程序代码,提供相对完善的业务功能. 目前的软件架构有三种架构类型: 业务架构 应用架构 技术架构 他们之间的甚是: 业务架构决定应用架构,技术架构 ...

  9. Windows server2008中的DNS服务器架构(八)

    文章目录 项目八 DHCP服务器架构 技术目标 [引入问题] 8.2 DHCP的概述 8.3 任务1--配置DHCP服务器 8.3.1 配置DHCP服务器 8.3.2 添加排除 8.3.4 配置DHC ...

最新文章

  1. Windows C++中__declspec(dllexport)的使用
  2. HDU1978 记忆化搜索
  3. grep命令參数及使用方法
  4. Python Django 自定义Manager重写objects.create()方法代码示例
  5. 玩转android studio,玩转AndroidStudioIDE
  6. 远程访问数据库出错的解决办法
  7. [技术收藏]关于IOPS
  8. DM8168 DMM(2)
  9. 保姆级My SQL-5.7.19安装教程
  10. 零基础学sql要多久_成人零基础学习钢琴,要多久能学会?
  11. cropper固定宽高裁剪_cropper实现基本的裁剪图片并上传
  12. 电脑里的视频被误删了可以用EasyRecovery恢复吗?
  13. oracle的成本核算,Oracle11gR2全表扫描成本计算(工作量模式-workload)
  14. reactNative+typescript-三,底部导航器
  15. 相机标定原理介绍(二)
  16. PHP中使用gRPC客户端
  17. 我们公司没销售 - 疫情下企业软件的互联网营销
  18. [thrift] thrift基本原理及使用
  19. 七 微服务网关gateWay和Jwt令牌
  20. Civilization V and Beyond Earth

热门文章

  1. 解密 Go interface 的类型转换原理
  2. php unicode乱码加密,PHP解密Unicode及Escape加密字符串
  3. ubuntu16.04下安装codeblocks(2分钟安装)
  4. 使用jfreechart来创建一个简单的饼图
  5. SqlServer判断数据库、表、字段、存储过程、函数是否存在
  6. 烂泥:ubuntu中使用virt-manager图形化新建虚拟机
  7. 从阿里、微软、AWS财报看评云计算发展
  8. Liferay MinifierFilter的研究
  9. Cat.5e/Cat.6系统测试要点和常见工程问题解答
  10. 如何改变标题栏的宽度