毕业设计

毕业设计

毕设相关

Netty介绍和应用场景

入门介绍

Netty编程涉及技术有:Java多线程编程、Java IO编程、Java网络编程、常用的Java设计模式(例如观察者模式、命令模式、职责模式)、常用的数据结构(例如链表)

  • Netty是由 JBOSS提供的一个Java开源框架,现为 Github上的独立项目。
  • Netty是一个异步的、基于事件驱动的网络应用框架,用以快速开发高性能、高可靠性的网络IO程序。
  • Netty主要针对在TCP协议下,面向Clients端的高并发应用,或者P2P场景下的大量数据持续传输的应用。
  • Netty本质是一个NIO框架,适用于服务器通讯相关的多种应用场景。
  • 层次关系:TCP/IP —> 原生的JDK,Java IO编程和网络编程 —> NIO —> Netty

应用场景

  • 互联网行业:分布式系统,节点远程服务调用,高性能的RFC框架将Netty作为基础通信组件。RPC(Remote Procedure Call)远程过程调用,简单的理解是一个节点请求另一个节点提供的服务。阿里的分布式服务框架Dubbo协议默认使用Netty框架。
  • 游戏行业:手机端游和网络游戏,Netty提供TCP/UDP和HTTP协议栈,方便定制和开发私有协议栈,账号登录等。
  • 大数据领域:经典的Hadoop的高性能通信和序列化组件Avro的RFC框架,默认采用Netty进行跨界点通信,其Netty Service基于Netty框架二次封装。
  • 使用到Netty的开源框架

Java BIO编程

I/O模型

  • I/O模型简单的理解:就是用什么样的通道进行数据的发送和接收,很大程度上决定了程序通信的性能。
  • Java共支持3种网络编程模型I/O模式:BIO、NIO、AIO。
  • Java BIO:同步并阻塞(传统阻塞型),服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销。
    • 模式:服务器每建立一个与客户端的连接,就要开启一个单独的线程负责与这个客户端的读写操作。
  • Java NIO:同步非阻塞,服务器实现模式为一个线程处理多个请求(连接),即客户端发送的连接请求都会注册到多路复用器(Selector)上,多路复用器轮询到连接有I/O请求就进行处理。
    • 模式:服务器开启多个线程,每个线程对应一个Selector,每个Selector连接多个客户端。
  • Java AIO(NIO.2):异步非阻塞,AIO引入异步通道的概念,釆用了Proactor模式,简化了程序编写,有效的请求才启动线程,它的特点是先由操作系统完成后才通知服务端程序启动线程去处理,一般适用于连接数较多且连接时间较长的应用。

粒度控制

粒度上通常称为粗粒度和细粒度,粒度控制主要指的是在系统设计的过程中如何根据需求去控制设计的范围。粒度的把握是软件设计的关键。

例如,软件市场上有许多不同软件可以实现相同的功能,但在各自粒度的控制上或者说达到的程度上都是不同的,其在性能、伸缩性以及友好性都有所不同,用户会根据自己的喜好,适用等原因选择自己喜欢的那款软件。

开发人员就是提供客户需要的东西,客户当然希望用最少的钱得到最适用的软件,但作为开发者,当然希望利润越高越好,这就需要减少开发成本,缩短进度。卖方和买方本来就是一对矛盾体,可以说双方为了共同的利益需要寻找到一个平衡点,这就是软件的粒度控制,也许这个名词不好理解,也可以叫做范围控制,在进行系统设计时,同样也是如此。要做到的是控制在满足需求以及将来变化的范围内的粒度的系统设计是最完美的。做技术的往往在很多时候更偏向追求技术的完美、先进等等,但客户并不会关心那么的多,这个时候需要通过控制粒度来决定是否需要采用复杂具有难度的技术,技术的先进必然就带来了技术的难度、风险。

所以对于“开发基于粒度控制的FTP代理”的理解就是,根据自己对于FTP代理的理解和研究深度,进行开发即可。

Tips

eclipse下查找某个接口、类的源码的快捷键:ctrl + shift + t

eclipse查看某接口、类的所有子类:ctrl + t

评论