高并发服务器设计总结2

 高性能服务器设计总结(2)

       服务器和客户的通讯,存在两种基本的情况,

1.      客户到服务器。

2.      服务器到客户。

 

基于消息的通讯系统,特别是在HTTP之上实现的诸如soap,xmlrpc,xmlpp等,这些都是短连接,易于构建从客户到服务器的通讯,但服务器要主动向客户发数据就没那么容易,原因是客户可能在子网或是子网的子网中。

基于短连接的通讯也可变相的实现服务器向客户发送数据,这要求客户要主动到服务器上去检索有没有发向自己的数据,若有需要主动的取数据。在实时性要求较高的系统中这是无法满足要求的。

更有效的实现方案是服务端保留客户的连接,使用长连接,原则上仅有客户可关闭这个连接。这样服务器就能通过这个连接主动的向客户发送数据了。但在单位时间内的接入量就没有短连接那样多了。

保留了客户的连接就能解决问题了吗?没有这么简单,这在客户和服务直接连接的系统中易于实现,但在复杂系统中难度就高了。


通常,客户连接进来的套接字都存在接入服务器上,而接入服务器使用少量的线程,每个线程使用一个套接字与应用服务器交互,客户的每个请求必须有至少一个回应,这样接入服务器转发一个请求,然后再回收一个或多个数据转发给客户。

这一点容易实现,试想一种场景,当应用服务器处理完了发来的请求,需要向当前客户发送一个回应,同时还要向其他客户发送数据。这怎么办呢?这是一种典型的应用,多人会话和视频会议就有这样的特点,网络游戏更是篇布这样的特点。

 

解决这个问题的方法很多,目前我还没有见到让我十分钟情的方案,我的实现如下:


另建一条有应用服务器到接入服务器的连接,服务端在接入服务器上,应用服务器要告诉接入服务器,要向那些客户转发数据转发的数据是什么。

但现在问题又来了,当有多个接入服务器怎么办?这就意味着要转发的客户可能分布在不同的接入服务器上。这时结构应做一下调整。


接入服务器将客户在那个服务器的消息注册在转发服务器上,转发服务器根据这些信息转发数据。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wolfseek

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值