专利名称:网站系统及其通信方法
技术领域:
本发明涉及网络技术领域,尤其涉及一种使用PHP扩展技术实现网站与服务器高并发通信及可扩展机制的方法及系统。
背景技术:
当前大型社区网站服务大多采用PHP (Hypertext Pr印rocessor,超级文本预处理语言)+mySql方式实现,WEB服务器将PHP页面呈现功能和业务应用功能集成于一体,通过多年实践发现此架构至少存在不能随意扩展自定义的应用、承载访问量及访问效率低等局限。
发明内容
本发明的主要目的在于公开一种网站系统及其通信方法,用于解决现有的网站系统不便于扩展、承载访问量及访问效率低等问题。为达上述目的,本发明公开一种网站系统,包括用于PHP页面呈现的TOB服务器及与之分离的应用服务器集群;所述应用服务器集群至少由代码由C语言编写的两级服务器及其共同连接的数据库组成,第一级为主要用于为业务请求分配应用服务器的接入服务器,第二级为按功能分类的两个或两个以上的应用服务器,所述应用服务器集群连接成一局域网;其中所述WEB服务器与PHP解释器建立有通信连接,所述PHP解释器与PHP扩展模块建立有通信连接,所述PHP扩展模块与所述应用服务器集群的接入服务器建立有通信连接。根据上述网站系统,本发明还公开一种与之对应的通信方法,包括以下步骤用户通过PHP页面发送业务请求;WEB服务器调用PHP解释器以解释该业务请求;所述PHP解释器调用PHP扩展模块将该业务请求转换成应用服务器集群能识别的业务请求;所述PHP扩展模块从所述应用服务器集群中择一接入服务器分配所述业务请求, 并向该接入服务器发送转换后的业务请求;该接入服务器根据业务请求的类型择一应用服务器处理所述业务请求;处理完成后,该应用服务器将处理结果沿所述业务请求的反向路径返回给PHP页与现有技术相比,本发明公开的网站系统及其通信方法至少具有以下优点1、由于C语言编写的代码的效率在所有语言编写的代码中是最高的,成熟代码也是最多的,可扩展也是最灵活的;因此本发明公开的网站系统架构中后台服务器采用C语言编写的代码提高了通信及数据处理的效率,为网站系统的稳定运行提供了保障,降低了维护的成本。2、将业务应用功能从TOB服务器中分离出来,并采用C语言编写的代码来实现,并通过PHP扩展模块来桥接后台应用服务器集群与WEB服务器之间的通信,当用户新增一自定义应用时,只需要在应用服务器集群中新增一应用服务器就成;而PHP扩展模块更是无需知道后台是怎样进行数据处理的。因此该架构为业务功能的扩展提供了很大的便利。3、由于后台的应用服务器集群的载荷是可扩展的,而基于PHP的TOB服务器也具有高并发的特性,且后台的应用服务器集群通过负载均衡机制可以减轻单台应用服务器的业务处理压力,从而使得本发明所公开的网站系统及其通信方法满足了大容量、高并发及高效率的访问需求。4、由于本发明采用应用服务器集群来处理业务请求,只要不是全部应用服务器出现故障宕机,则可以通过服务器集群内部的故障检测、恢复机制以及应用服务器之间的协作机制来确保整个系统的稳定运行。5、本发明所公开的网站系统相比于现有的TOB服务器将PHP页面呈现功能和业务应用功能集成于一体的PHP+mysql架构而言,用户请求的转发链路更加多样化,后台服务器的处理方式也更加多样化,以根据用户请求来读写数据库中相关数据为例,则该服务器集群内的任一服务器都可以对该用户请求进行相应处理,并可将处理的相关数据先缓存在本地,以缓解数据库的数据处理压力,从而使得该网站系统灵活性高、处理效率也相应提尚ο
图1为本发明实施例公开的网站系统的架构图;图2为本发明实施例公开的一种网站系统的通信方法流程图。
具体实施例方式本发明提供一种高并发、可扩展的网站系统及其通信方法,以下结合说明书附图对本发明的具体实施方式
做详细说明。实施例一如图1所示,本发明公开的网站系统包括基于PHP的TOB服务器1,PHP扩展模块 2和应用服务器集群3。其中WEB服务器1 (其是由企业发布的完成其特定商务需求的在线应用服务,其他公司或应用软件能够通过hternet来访问并使用这项在线服务),用于PHP页面呈现及接收用户通过PHP (Hypertext Pr印rocessor,超级文本预处理语言)页面发送的业务请求;本实施例中,该WEB服务器1还嵌入有PHP解释器,该PHP解释器用于执行PHP程序,将PHP生成HTML (Hyper Text Mark-up Language,超文本标记语言或超文本链接标示语言);当用户通过PHP页面发送业务请求时,该TOB服务器会调用PHP解释器解释该业务请求。在其他实施例中,该该PHP解释器也可部署在与WEB服务器分离的另一服务器上,此种变换也同样属于本发明的保护范围。PHP扩展模块2,用于与PHP解释器共同完成WEB服务器1与应用服务器集群3之间的通信,以实现业务请求、数据的转换及传输。本实施例中,该PHP扩展模块2主要用于将PHP解释器解释出的业务请求转换成应用服务器集群3能识别的业务请求,并将转换后的该请求转发给后台的应用服务器集群3 ;以及将应用服务器集群3返回的处理结果转换成PHP页面能呈现的内容,并将转换后的处理结果转发给WEB服务器1。应用服务器集群3,包括连接成一局域网的接入服务器31、32、数据库33 (包括按照数据结构来组织、存储和管理数据的数据库服务器)以及应用服务器35、36、37、38。其中该接入服务器31、32用于为业务请求分配应用服务器,并与PHP扩展模块2完成通信,为该应用服务器集群的第一级服务器。本实施例中,以文件数据共享为目标,需要将供局域网内多台计算机共享的文件存放于一台计算机中,这台计算机就被称为文件共享服务器。其中, 该文件共享服务器及局域网内的交换机/路由器在图1中均未示出,此皆为本领域技术人员能轻易实现的搭建局域网的现有技术,在此不作赘述。本实施例中,上述接入服务器31、32主要用于分配处理业务请求的应用服务器; 在分配应用服务器时,可以根据业务请求的类型进行分配,以一个语音聊天室网站系统为例,用户的业务请求类型包括但不限于下述几种登录聊天室,身份认证,读写用户注册资料,找人聊天,聊天室管理等业务请求类型。为此,在本实施例公开的应用服务器集群中,将处理不同类型业务请求的应用服务器按功能分类;如图1所示,按功能分类的应用服务器35、36、37、38为该应用服务器集群的第二级服务器。其中与WEB服务器主要用于处理HTTP请求(request)不同的是,应用服务器通过很多协议来为应用程序提供商业逻辑,因此又称应用程序服务器。本实施例中, 与用户的业务请求的请求类型相对应的,各应用服务器35、36、37、38可分工实现下述的一种、两种或两种以上的功能登录聊天室,身份认证,读写用户注册资料,随机速配,音频处理,聊天室管理,聊天室信息发布等。本实施例中,该应用服务器集群3设有两个接入服务器31、32,其中接入服务器31 为主接入服务器,接入服务器32为备用接入服务器,当主接入服务器31出现故障时,由备用接入服务器32来执行相应的数据处理。采用主备接入服务器的机制,有效解决单接入服务器出现故障时所导致的网站系统业务中断问题。在其他实施例中,该应用服务器集群3还可以设置三个或三个以上的接入服务器,当接入服务器的数量增多时,PHP扩展模块2与接入服务器之间的数据传输链路也相应增多,因此该网站系统可以并发处理的用户请求也随之增多。其中该PHP扩展模块2在为业务请求分配接入服务器时,可以根据随机的方式进行分配,也可以给予轮询等算法进行分配,也可以根据各接入服务器当前的负载情况进行流量均衡分配。本实施例中,上述应用服务器集群3内的各应用服务器的代码由C语言编写。在计算机的发展史上,C语言编写的组件积累了大量经验和成熟代码,而且效率是最高的,可扩展性也是最灵活的。而且上述应用服务器集群3的内部各级服务器之间及其与PHP扩展模块2之间都是通过UDP^ser Datagram Protocol,用户数据包协议)方式建立通信,通过 C语言的高效编程手段,将用户发出的业务请求分为对立的UDP对象访问,而不是采用一惯的TCP (Transmission Control Protocol,传输控制协议)方式连接,由于UDP不需要建立连接就可同后端的应用服务器集群建立通信,进一步提高了网站系统的访问效率。本实施例公开的网站系统的架构具有非常灵活的可扩展性,当该系统需要新增一应用时,由新增的应用服务器向在先的应用服务器集群3群发新增业务类型的消息,然后由该应用服务器集群3在先的各服务器31、32、35、36、37、38在内存中保存该新增业务类型与该新增应用服务器之间的映射关系,当任一在先的服务器31、32、35、36、37、38在接收到 PHP页面发送的业务请求时,根据该业务请求的类型和内存中的映射关系判断其是否由该新增的业务服务器处理,如果是,向该新增业务服务器转发相应的业务请求。由此使得本系统中,应用服务器1 4也具有了接入服务器的按类型转发业务请求的功能,从而任一应用服务器1 4可以作为接入服务器的备份,确保了业务请求准确地送达对应的应用服务器, 提高了系统的稳定性和可扩展性。综上,本实施例公开了一种可提高网站的访问效率和应用的可灵活扩展的 PHP+PHPExtend+C+UDP+MYSQL (MYSQL为一种开放源码的数据库)网站架构,该架构简称 PPCUM。其中应用服务器集群3至少由代码由C语言编写的两级服务器及其共同连接的数据库组成,第一级为主要用于为业务请求分配应用服务器的接入服务器31、32,第二级为按功能分类的两个或两个以上的应用服务器35、36、37、38,应用服务器集群连接成一局域网; 其中WEB服务器与PHP解释器建立有通信连接,PHP解释器与PHP扩展模块建立有通信连接,PHP扩展模块与应用服务器集群的接入服务器建立有通信连接。由此使得该PPCUM网站系统具有以下优点1、由于C语言编写的代码的效率在所有语言编写的代码中是最高的,成熟代码也是最多的,可扩展也是最灵活的;因此本发明公开的网站系统架构中后台服务器采用C语言编写的代码提高了通信及数据处理的效率,为网站系统的稳定运行提供了保障,降低了维护的成本。2、将业务应用功能从TOB服务器中分离出来,并采用C语言编写的代码来实现,并通过PHP扩展模块来桥接后台应用服务器集群与WEB服务器之间的通信,当用户新增一自定义应用时,只需要在应用服务器集群中新增一应用服务器就成;而PHP扩展模块更是无需知道后台是怎样进行数据处理的。因此该架构为业务功能的扩展提供了很大的便利。3、由于后台的应用服务器集群的载荷是可扩展(例如通过增加应用服务器和/或接入服务器的方式进行扩展)的,而基于PHP的WEB服务器也具有高并发的特性,且后台的应用服务器集群通过负载均衡机制可以减轻单台服务器的业务处理压力,从而使得本发明所公开的网站系统及其通信方法满足了大容量、高并发及高效率的访问需求。4、由于本发明采用应用服务器集群来处理业务请求,上述应用服务器集群连接成一局域网(值得说明的是,上述WEB服务器和PHP扩展模块也可以视为该局域网的一部分, 其中该WEB服务器通过防火墙与公网连接),只要不是全部应用服务器出现故障宕机,则可以通过服务器集群内部的故障检测、恢复机制以及应用服务器之间的协作机制来确保整个系统的稳定运行。5、本实施例公开的网站系统相比于现有的TOB服务器将PHP页面呈现功能和业务应用功能集成于一体的PHP+mysql架构而言,用户请求的转发链路更加多样化,后台服务器的处理方式也更加多样化,以根据用户请求来读写数据库中相关数据为例,则该服务器集群内的任一服务器都可以对该用户请求进行相应处理,并可将处理的相关数据先缓存在本地,以缓解数据库的数据处理压力,从而使得该网站系统灵活性高、处理效率也相应提尚ο值得说明的是,本发明中,PHP扩展模块可以是PHP解释器的外部模块,也可以是该PHP解释器的内建模块或者直接在knd引擎里面进行扩展。其中外部模块可以在脚本运行SOO函数载入,这个函数从磁盘载入一个共享对象并将它的功能与调用该函数的脚本进行绑定并使之生效。本发明中,优选在Php. ini文件中使用扩展标签来创建一个外部的 PHP扩展模块,该PHP扩展模块完全与PHP解释器分离,其优点是该PHP解释器通过“外包” 的方式让自己的体积保持很小。当采用内建模块时,该PHP扩展模块被直接编译进PHP解释器并存在于每一个PHP处理请求中,其缺点在于在修改该PHP扩展模块时需要重新编译 PHP,而且PHP 二进制文件会变大并且会消耗更多的内存。至于通过knd引擎来扩展PHP, 则容易导致和其它代码的不兼容,通常应尽量避免。实施例二针对实施例一所公开的网站系统架构,本实施例公开该网站系统内部的通信流程,如图2所示,该网站系统的通信流程包括以下步骤步骤Si、用户通过PHP页面发送业务请求。步骤S2、WEB服务器调用PHP解释器以解释该业务请求。步骤S3、PHP解释器调用PHP扩展模块将该业务请求转换成应用服务器集群能识别的业务请求。步骤S4、PHP扩展模块从应用服务器集群中择一接入服务器分配业务请求,并向该接入服务器发送转换后的业务请求。该步骤中,当该网站系统的应用服务器集群内接入服务器的数量为两个或两个以上,PHP扩展模块从应用服务器集群中择一接入服务器分配业务请求的择取方式可为随机择取或轮询方式择取。当上述应用服务器集群之间及其与PHP扩展模块之间通过UDP方式建立通信时, 优选的,该PHP扩展模块在向该应用服务器发送转换后的业务请求前,将该业务请求打包成UDP对象并绑定一个动态端口 ;以及在通过该动态端口发送上述业务请求后,该PHP扩展模块还通过同步或端口阻塞方式在该动态端口上等待应用服务器及接入服务器返回的处
理结果。步骤S5、该接入服务器根据业务请求的类型择一应用服务器处理业务请求。其中, 当该网站系统的数据库或文件共享服务器或该接入服务器的本地中存储有应用服务器集群当前各服务器的负载状态,接入服务器可以根据请求类型选择负载轻的应用服务器处理相应的业务请求。进一步的,该接入服务器还应根据各应用服务器的存活状态分配业务请求,为此,该接入服务器维护有一反应各应用服务器存活状态的服务器列表,并定时检测和 /或根据事件触发去检测各应用服务器的存活状态,当任一应用服务器出现故障宕机时,在服务器列表中将该应用服务器标识为未存活;而后,该应用服务器在宕机状态恢复后,通过 UDP告知接入服务器,再由接入服务器在服务器列表中将该应用服务器标识为存活;以便于接入服务器根据请求类型选择负载轻且存活的应用服务器处理相应的业务请求。优选的,在该业务请求的转发及处理过程中,接入服务器及上述步骤S4提到的 PHP扩展模块根据该业务请求生成一个唯一的会话,并在该会话端口上等待应用服务器返回的处理结果。如此,则应用服务器集群之间的各服务器具备了一个同步机制,通过会话机制保证了每个应用服务器所处理业务请求的唯一性,有效避免了数据业务出现混乱。步骤S6、处理完成后,该应用服务器将处理结果沿业务请求的反向路径返回给PHP页面。本实施例中,当网络系统新增一应用服务器时,上述通信方法还包括下述步骤 S7 S9 步骤S7、该新增的业务服务器向应用服务器集群群发新增业务类型消息。优选的,该新增的应用服务器还可以进一步将其新增业务类型及该类型与自身的映射关系保存到服务器集群所共用的数据库或文件共享服务器中,以供在先的各服务器获取。步骤S8、该应用服务器集群在先的各服务器在内存中保存该新增业务类型与该新增应用服务器之间的映射关系。步骤S9、任一在先的服务器在接收到PHP页面发送的业务请求时,根据该业务请求的类型和上述映射关系判断其是否由该新增的业务服务器处理,如果是,向该新增业务服务器转发相应的业务请求。由此使得本系统中,应用服务器也具有了接入服务器的按类型转发业务请求的功能,从而任一应用服务器可以作为接入服务器的备份,确保了业务请求准确地送达对应的应用服务器,提高了系统的稳定性和可扩展性。与此同时,该新增的应用服务器也可以从数据库或文件共享服务器中获取在先各服务器的业务类型信息,并根据该信息转发相应的业务请求。本发明公开的上述通信方法至少具有以下优点1、由于C语言编写的代码的效率在所有语言编写的代码中是最高的,成熟代码也是最多的,可扩展也是最灵活的;因此本发明公开的网站系统架构中后台服务器采用C语言编写的代码提高了通信及数据处理的效率,为网站系统的稳定运行提供了保障,降低了维护的成本。2、将业务应用功能从TOB服务器中分离出来,并采用C语言编写的代码来实现,并通过PHP扩展模块来桥接后台应用服务器集群与WEB服务器之间的通信,当用户新增一自定义应用时,只需要在应用服务器集群中新增一应用服务器就成;而PHP扩展模块更是无需知道后台是怎样进行数据处理的。因此该架构为业务功能的扩展提供了很大的便利。3、由于后台的应用服务器集群的载荷是可扩展的,而基于PHP的TOB服务器也具有高并发的特性,且后台的应用服务器集群通过负载均衡机制可以减轻单台应用服务器的业务处理压力,从而使得本发明所公开的网站系统及其通信方法满足了大容量、高并发及高效率的访问需求。4、由于本发明采用应用服务器集群来处理业务请求,只要不是全部应用服务器出现故障宕机,则可以通过服务器集群内部的故障检测、恢复机制以及应用服务器之间的协作机制来确保整个系统的稳定运行。5、本发明所公开的网站系统相比于现有的TOB服务器将PHP页面呈现功能和业务应用功能集成于一体的PHP+mysql架构而言,用户请求的转发链路更加多样化,后台服务器的处理方式也更加多样化,以根据用户请求来读写数据库中相关数据为例,则该服务器集群内的任一服务器都可以对该用户请求进行相应处理,并可将处理的相关数据先缓存在本地,以缓解数据库的数据处理压力,从而使得该网站系统灵活性高、处理效率也相应提尚ο综上,本实施例公开的通信方法具有用户高并发的处理机制,可以动态扩展应用服务及确保每个应用服务器处理业务请求的唯一性,并可以在应用服务器出现故障时,通过接入服务器的存活检测机制来及时发现及解决故障。从而解决了现有的网站系统所存在的不便于扩展、承载访问量及访问效率低等问题。 以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
权利要求
1.一种网站系统,其特征在于,包括用于PHP页面呈现的TOB服务器及与之分离的应用服务器集群;所述应用服务器集群至少由代码由C语言编写的两级服务器及其共同连接的数据库组成,第一级为主要用于为业务请求分配应用服务器的接入服务器,第二级为按功能分类的两个或两个以上的应用服务器,所述应用服务器集群连接成一局域网;其中所述WEB服务器与PHP解释器建立有通信连接,所述PHP解释器与PHP扩展模块建立有通信连接,所述PHP扩展模块与所述应用服务器集群的接入服务器建立有通信连接。
2.一种如权利要求1所述的网站系统的通信方法,其特征在于,包括以下步骤用户通过PHP页面发送业务请求;WEB服务器调用PHP解释器以解释该业务请求;所述PHP解释器调用PHP扩展模块将该业务请求转换成应用服务器集群能识别的业务请求;所述PHP扩展模块从所述应用服务器集群中择一接入服务器分配所述业务请求,并向该接入服务器发送转换后的业务请求;该接入服务器根据业务请求的类型择一应用服务器处理所述业务请求;处理完成后,该应用服务器将处理结果沿所述业务请求的反向路径返回给PHP页面。
3.根据权利要求2所述的通信方法,其特征在于,所述接入服务器的数量为两个或两个以上,所述PHP扩展模块从所述应用服务器集群中择一接入服务器分配所述业务请求的择取方式为随机择取或按轮询方式择取。
4.根据权利要求3所述的通信方法,其特征在于,所述PHP扩展模块及应用服务器集群在转发及处理所述业务请求时,还包括所述PHP扩展模块及所述接入服务器根据所述业务请求生成一个唯一的会话,并在该会话端口上等待应用服务器返回的处理结果。
5.根据权利要求4所述的通信方法,其特征在于,所述应用服务器集群之间及其与PHP 扩展模块之间通过UDP方式建立通信;其中所述PHP扩展模块在向该应用服务器发送转换后的业务请求前,还包括将该业务请求打包成UDP对象并绑定一个动态端口 ;以及在通过该动态端口发送上述业务请求后,所述PHP扩展模块还包括通过同步或端口阻塞方式在该动态端口上等待应用服务器及接入服务器返回的处理结果。
6.根据权利要求2至5任一所述的通信方法,其特征在于,当所述网络系统新增一应用服务器时,所述通信方法还包括该新增的业务服务器向所述应用服务器集群群发新增业务类型消息;该应用服务器集群在先的各服务器在内存中保存该新增业务类型与该新增应用服务器之间的映射关系;任一在先的服务器在接收到PHP页面发送的业务请求时,根据该业务请求的类型和上述映射关系判断其是否由该新增的业务服务器处理,如果是,向该新增业务服务器转发相应的业务请求。
7.根据权利要求6所述的通信方法,其特征在于,还包括所述新增的应用服务器将其新增业务类型与自身的映射关系保存到所述服务器集群所共用的同一数据库或文件共享服务器中。
8.根据权利要求7所述的通信方法,其特征在于,还包括所述新增的应用服务器从所述数据库或文件共享服务器中获取在先各应用服务器所处理的业务类型的信息,并根据该信息转发所接收的业务请求。
9.根据权利要求8所述的通信方法,其特征在于,还包括所述接入服务器定时检测各应用服务器的存活状态,当任一应用服务器出现故障宕机时,在服务器列表中将该应用服务器标识为未存活;以及该应用服务器在宕机状态恢复后,通过UDP告知所述接入服务器,再由所述接入服务器在所述服务器列表中将该应用服务器标识为存活。
10.根据权利要求9所述的通信方法,其特征在于,所述服务器列表中还记录有当前存活的各应用服务器的负载状态,以供接入服务器根据请求类型选择负载轻且存活的应用服务器处理相应的业务请求;所述服务器列表同步存储在所述数据库或文件共享服务器。
全文摘要
本发明公开一种网站系统及其通信方法,用于解决现有的网站系统不便于扩展、承载访问量及访问效率低等问题。本发明公开的网站系统包括用于PHP页面呈现的WEB服务器及与之分离的应用服务器集群;所述应用服务器集群至少由代码由C语言编写的两级服务器及其共同连接的数据库组成,第一级为主要用于为业务请求分配应用服务器的接入服务器,第二级为按功能分类的两个或两个以上的应用服务器,所述应用服务器集群连接成一局域网;其中所述WEB服务器与PHP解释器建立有通信连接,所述PHP解释器与PHP扩展模块建立有通信连接,所述PHP扩展模块与所述应用服务器集群的接入服务器建立有通信连接。
文档编号H04L29/08GK102316160SQ20111022339
公开日2012年1月11日 申请日期2011年8月5日 优先权日2011年6月14日
发明者向万里, 周平, 晏利平, 曾精石, 李晓鹏, 李锐, 杨晓东, 潘年华, 王伟, 王海, 胡海, 黄国宏 申请人:贵阳朗玛信息技术股份有限公司