- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
服务器端程序通用细节设计.doc
服务器端程序通用设计 by冲出宇宙 2010-5-1
概要
服务器端程序的主要功能是提供对外服务。它可以是挂载多个后端的分发和合并程序,也可以是自身包含数据的数据提供程序。
服务器端程序一般包含3种功能:查询、写入、控制。
设计服务器端程序的关键点包括:
大并发,多线程;
过载保护;
负载均衡
及时返回;
读写分离;
错误恢复;
实时监控。
基本构架
网络层
支持大并发有很多种网络结构的选择,一般直接使用epoll技术。其基本结构为:
epoll模型
在Epoll模型下,需要做如下的几点的负载保护:
接受的前端socket连接个数;
前端socket的短时超时。
第一个根据实际情况设置,第二个根据任务处理平均耗时决定(一般至少为平均耗时的4倍,或者1分钟)。第一个避免大量连接,第二个避免客户端长时间连接占资源。
异步发送线程
有的时候,网络或者客户端进程调度,会导致发送数据发不出去的情况。如果傻傻的等待数据发送完毕,会导致大量请求超时(因为一个socket可能一次发送了N个请求)。
异步发送线程会把数据存储起来,异步发送。当数据堆积严重的时候,需要断开连接,抛弃所有数据。
一般用一个线程处理异步发送即可。
后端socket自动重连
后端socket是指本程序需要调用的远程服务的连接。一般来说,这些连接是长连接,需要保持时刻通畅。
重连的时机包括:socket错误、socket长时间无数据通讯。第一种情况好理解,第二种情况的来源比较复杂。举例来说:
现在有3台后端服务器,其中2台是主服务器,1台是备服务器。备服务器一般不提供服务,它仅仅在主服务器超时(负载过高或者挂掉)时提供服务。为了保证和备服务器之间连接的通畅,需要隔一段时间重连一次(当然,不断发送某个通知包也可以,只是比较麻烦)。
另外一种情况是:某台服务器程序处理一个请求耗时特别严重(有可能是因为某个bug,或者被程序抛弃),从而等了很久都没有响应。某些负载均衡策略会根据这种情况尽量减少发送给它的请求量。但过了很久之后,如果这个服务器还没有数据返回,一个比较好的做法是断开重连。
协议头解码
解码协议头的好处在于:1)可以判断数据包是否正确;2)可以判断数据包的实际长度;3)可以判断数据包的类型(如查询、写入等)。
只需要解码协议头,协议体等待任务处理线程去解码。
过载保护
当数据队列里面未处理的数据过多时,应该抛弃新来的数据。可以直接返回一个错误值。
数据队列
数据队列可以是一个同步队列。
处理线程
处理线程包括查询处理、写入处理和控制处理3个。其中,查询处理可以一般为多线程,写入处理一般为单线程(数据库不同,它可以进行行锁定,故写也是多线程的),控制处理一般为单线程(多线程会比较麻烦,比如,2个人一个要求它停止,一个要求它继续)。
因为查询线程是并发的,所以必须对公共数据进行锁定。常见的包括:cache数据、全局数据等。
控制处理可能会修改全局数据或者进行统计计算,它也需要对公共数据进行锁定。控制处理主要包括如下几个功能:
状态控制,如:可写、可读;
监控数据,如:5分钟内请求耗时。
监控数据要尽量完整,方便分析程序状态。常见的监控数据包括:
磁盘文件大小;
Cache内存占用、cache数据实际内存数、cache数据个数;
关键内部数据结构统计信息;
最近一段时间的请求数、平均耗时、超时数;
被抛弃的包个数、被超时的请求数等。
这里面的那些非实时的数据可以直接输出到日志。
负载均衡
负载均衡的目标有2个,一个是保证服务可用,另外一个是尽量降低处理时间。保证服务可用的策略一般在后端,如多台服务器、多机房部署、多idc部署、多国家部署等。负载均衡需要保证的是,当若干台机器不可用(或者速度很慢)时,可以把请求发到其他机器。
我们把所有的服务器都放到一个链表里面,当一个请求过来时,我们直接选择链表的第一个节点。那么,现在我们需要决定链表的次序。计算链表次序常见的做法有:
均匀
即每个节点的权重都是1,每当一个节点提供服务后,都被放到链表的最后。这样的结果是请求被均匀发往后端服务器。
最近耗时
可以计算最近1次的请求耗时,也可以计算最近多次或者一段时间内的请求平均耗时。耗时最小的排在链表的最前面,每当一个节点提供服务后,就把它放到链表中的某个位置(具体在哪里需要根据实际情况决定,比如,放到中间;不能放到最前面,否则会导致短期的大量请求都发给它)。
负载
计算当期服务器的负载(即正在处理的任务个数),把负载最小的放到链表的最前面。每当发送请求给它后,把它的负载加1。
注意:如果后端服务器对某些请求不返回任何结果(抛弃或者超时严重),计算服务器的负载是不准确的,这个时候,可以通过断开连接重连来重置负载。
最近慢请求数
计算最近一段时间每个服务器耗时严重的任务个数,把数字最小的服务器
您可能关注的文档
- 最简单减肥法.doc
- 月-销售管理-销售渠道管理-真题.doc
- 月8日信息技术与信息安全公需科目标准答案第二次更新后题库.doc
- 月access试卷及答案.doc
- 月C语言国二考试模拟卷之一.doc
- 月C语言真题.doc
- 月E等级考试三级数据库技术笔试真题及答桉.doc
- 月GSM资格认证考试答案.doc
- 月IPA现代汉语考试模拟题.doc
- 月PC笔试.doc
- c程序员面试题及答案.doc
- 第01讲 运动的描述(练习)(解析版)-【上好课】2025年高考物理一轮复习讲练测(新教材新高考).pdf
- c的面试题及答案.doc
- 第01讲 运动的描述(练习)(原卷版)-【上好课】2025年高考物理一轮复习讲练测(新教材新高考).pdf
- 2003年非典后航空复盘分析报告.pdf
- 第02讲 匀变速直线运动的规律(练习)(解析版)-【上好课】2025年高考物理一轮复习讲练测(新教材新高考).pdf
- 第02讲 匀变速直线运动的规律(练习)(原卷版)-【上好课】2025年高考物理一轮复习讲练测(新教材新高考).pdf
- c考试题库及答案.doc
- c面试题及答案.doc
- 汽车管件及座椅骨架、异形金属结构件生产线改造项目(技术改造)报告表.pdf
文档评论(0)