首页 > 学院 > 开发设计 > 正文

如何规划您的大型JAVA多并发服务器程序

2019-11-18 12:42:20
字体:
来源:转载
供稿:网友

  java 自从问世以来,越来越多的大型服务器程序都采用它进行开发,主要是看中它的稳定性及安全性,但对于一个新手来说,您又如何开发您的JAVA 应用服务器,同时又如何规划您的JAVA服务器程序,并且很好的控制您的应用服务器开发的进度,最后,您又如何发布您的JAVA 应用服务器呢?(由于很多前辈已有不错的著作,我只能在这里画画瓢,不足指出,请多来信指正,晚辈将虚心接受!本人的联系方式:linmaochen@sohu.com)废话少说,下面转入正题:本文将分以下几个部分来阐述我的方法:1、 怎样分析服务器的需求?2、 怎样规划服务器的架构?3、 怎样规划服务器的目录及命名规范、开发代号?4、 原型的开发(-): 怎样设计服务器的代码骨架?5、 原型的开发(二): 怎样测试您的代码骨架?6、 具体的编码?7、 如何发布您的JAVA 服务器产品?一、 如何分析服务器的需求?我的观点是:1。服务器就像一台轧汁机,进去的是一根根的甘蔗,出来的是一杯杯的甘蔗汁;也就是说,在开发服务器之前,先要明白,服务器的请求是什么?原始数据是什么?接下来要弄明白,希望得到的结果是什么? 结果数据应该怎样来表述?其实要考虑的很多,无法一一列出(略)。二、如何规划服务器的架构?首先问大家一个小小的问题:在上海的大都市里,公路上的公交客车大致可以分为以下两类:空调客车,票价一般为两块,上车不需要排队,能否坐上座位,就要看个人的综合能力;无人售票车,票价一般1 块和一块五毛,上车前需要规规矩矩排队,当然,座位是每个人都有的。那么,我的问题是,哪类车的秩序好呢?而且上下车的速度快呢?答案是肯定的: 无人售票车。所以,我一般设计服务器的架构主要为:首先需要有一个请求队列,负责接收客户端的请求,同时它也应有一个请求处理机制,说到实际上,应有一个处理的接口;其次应该有一个输出队列,负责收集已处理好的请求,并预备好对应的回答;当然,它也有一个回答机制,即如何将结果信息发送给客户端;大家都知道,服务器程序没有日志是不行的,那么,服务器同时需要有一个日志队列,负责整个服务器的日志信息收集和处理;最后说一点,上公交车是需要有钞票的,所以,服务器同样需要有一个验证机制。...(要说的东西实在太多,只好略)三、 怎样规划服务器的目录及命名规范、开发代号对于一般的大型服务器程序,应该有下面几个目录:bin : 主要存放服务器的可执行二进制文件;common: 存放JAVA程序执行需要的支持类库;conf : 存放服务器程序的配置文件信息;logs : 存放服务器的日志信息;temp : 存放服务器运行当中产生的一些临时文件信息;cache : 存放服务器运行当中产生的一些缓冲文件;src : 当然是存放服务器的JAVA源程序啦。......(其他的设定,根据具体需求。)四、原型的开发(-): 怎样设计服务器的代码骨架?1。首先服务器程序需要有一个启动类,我们不妨以服务器的名字命名:(ServerName).class 2。服务器需要有一个掌控全局的线程,姑且以:(MainThread.class)命名;3。注重不论是短连接和长连接,每一个客户端需要有一个线程给看着,以 ClientThread.class 命名 4。请求队列同样需要以线程的方式来表现: (InputQuene.Class),对应的线程处理类以InputPRocessThread.class命名;5。输出队列也需要一个线程:(OutputQuene.Class),对应的处理机制以OutputProcessThread.class 命名;6。日志队列也是需要一个线程的,我们以 logQuene.class,logQueneThread.Class 来命名;7。缓冲区的清理同样需要定时工作的,我们以CacheThread.Class 来命名;8. 假如您的参数信息是以xml的方式来表达的话,那么我也建议用一个单独的类来治理这些参数信息:Config.Class9. 当然,假如您想做得更细一点的话,不妨将客户端客服务器端的通讯部分也以接口的形式做出来:CommInterface.Class......(太多,只能有空再说!) 五、 原型的开发(二): 怎样测试您的代码骨架?下面为原型的骨架代码,希望大家多多提点意见!谢啦!/* 服务器描述 : 服务器主控线程1。读取组态文件信息2。建立需求输入队列3。建立需求处理输出队列4。建立需求处理线程5。建立输出预处理线程,进行需求处理结果的预处理6. 建立缓冲区治理线程,开始对缓冲取进行治理7。建立服务连接套捷字,接受客户的连接请求,并建立客户连接处理线程*/import java.io.*;import java.net.*;import java.util.*;public class mainThread extends Thread {

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表