[参考]代理服务器改造详细设计文档.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
代理服务器改造 设计说明书 中通软科技技术有限公司广州分公司 2010年11月25 请不要删除后面的分节符 变更记录 变更版本 日期 图表、表格、段落号 A/M/D 原因与修改情况描述 修订人 审核人 1.0 2010-11-25 ALL A 首次创建 满孝东 注:A – 增加 M – 修改 D – 删节 请不要删除后面的分节符 目录 请不要删除后面的分节符 引言 编写目的 编写的目的主要是通过对本次开发软件的设计、约定及相关内容作一具体描述,从而可作为公司开发人员、测试人员的指导性文件。 定义 负载均衡(Server ? Load ? Balance)一般用于提高服务器的整体处理能力,并提高可靠性,可用性,可维护性,最终目的是加快服务器的响应速度,从而提高用户的体验度。   负载均衡从结构上分为本地负载均衡(Local ? Server ? Load ? Balance)和地域负载均衡(Global ? Server ? Load ? Balance)(全局负载均衡),一是指对本地的服务器群做负载均衡,另一是指对分别放置在不同的地理位置、有不同的网络及服务器群之间作负载均衡。 参考资料 《代理服务器详细设计文档》 设计与实现的限制 Java代码编写,后台执行 支持主流数据库、操作系统、应用服务器; 概述 定义 项目总体设计要达到的目标,是通过明确代理服务器改造设计的概念、关系,明确系统开发的思路,作为指导应用系统开发的方法。 代理服务器改造体系结构 代理服务器由之前的多线程执行任务现改造为多进程来执行任务,改造所需要开发的功能主要有:进程管理和任务分配。 技术架构图 代理服务器改造总体架构图如下: 系统总体架构由六部分组成: 线程池:线程池由多个线程组成, 根据进程信息管理分配任务,建立线程池并执行任务,当任务完成时将其销毁。 进程池:进程池由多个进程组成每一个进程都是一个JDK实例,每一个进程中包括一个线程池,进程池的初始化由进程信息管理来决定。 进程信息管理:当任务队列获取任务时,如果进程存在由线程建立的通讯获取运行中进程的信息,并均衡分配至进程中;反之,根据任务队列中的任务数,创建线程去启动进程,并将任务均衡分配至进程中。 线程通讯:由进程信息管理,根据任务队列中的任务,创建出线程去启动进程,通过socket实现此线程与进程之间的通讯,当任务执行完毕时将线程和进程销毁并返回信息。 Socket时时通讯:利用socket实现线程与进程信息管理的时时通讯。 内存溢出处理:因无法计算每个任务所需要的内存使用情况,若在合理分配任务到进程中执行任务时出现内存溢出造成进程死掉则重新启动一个进程将致死内存溢出的那条任务返回到智能任务分发处;若其它情况导致进程死掉,则重新启动进程不在执行致死进程死掉的那条任务。 功能设计 任务获取 在任务队列类(TaskerQueuss)获取管理队列scheduleTasker(计划任务队列)。 线程的分配: 线程的分配。当任务队列中有任务时,便开始检查进程信息,将任务队列中的任务按照任务分配规则分配至每个线程中。线程的分配操作在ThreadPoolManager类执行,在代理服务启动时便为该类启动一条线程在监控是否在队列进入,若有任务进入时立即为任务分配线程。 线程的回收。当任务完成并离开执行线程时将已分配的线程减一,并释放自已线程。 线程池管理 线程池的管理分为socket服务端的线程池管理和socket客户端的线程池管理。 1、服务端的线程池管理 当代理服务器启动时会分别启动: socket服务端用于接收和分配任务。 任务队列监控。 当任务队列中有任务时,且任务数小于server.xml 中配置最大进程数时,则根据任务数启动线程数,反之启动最大进程数的线程(比如最大进程数为5个,那启动的最大线程数就是5个)。 服务端的线程池管理由任务队列中的任务来决定,每一个线程的启动都会在线程中去启动一个进程,在进程的主线程中启动Socket客户端。 2、客户端的线程池管理 由socket服务端分配的任务数和配置文件中设置的最大线程数来决定进程中启动执行任务的线程数。当socket服务端分配任务数小于配置文件中的最大线程数时,根据任务数启动线程数,反之则启动最大线程数。 进程池管理 初始化进程池如图 : 根据配置文件中最大进程数设置进程,将进程信息由ProcessVO对象存储,由Proce

文档评论(0)

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档