后台server常用技术学习总结

一、常用架构

1、Interface与Server

Interface负责接收外部请求并分发到具体的Server,并在包头记录外部请求者的地址,其实就是interface负责转包,这样就能使得系统对外呈现出单一的接口IP,同时方便扩容。Server负责从interface接收请求,并实际处理请求并发出的回应包,目标地址即为interface在包头中的记录地址。

问题就出现了短板在interface,首先因为interface只负责转包,不进行业务处理;但是如果interface故障了,那么就出现了单点故障问题,如何解决这个单点故障问题呢?

目前可以想到的方法是1、使用热备,主备机器进行切换,主备切换可以通过心跳和dns切换来实现。


2、server间转包

1)不同的server处理不同的用户,分用户的方法包括号段、尾号、hash等

2)业务请求包经过多台server进行处理和转发,最终形成回应包

数据包同时包含请求部分和结果部分,第一台server在包记录请求者地址,这在1中已经有说明

接下来每一个server将自己处理的部分处理完成然后填写结果部分

最后一台机器发现没有数据需要处理,则组织包返回

存在的问题是经过环节过多导致丢包率过高,其中解决方法可能是通过TCP实现,其二尽量在同一个IDC机房,最后就是加监控,让这些丢包统计都监控起来,发现短板。

中间某一台机器挂了应该如何处理?


3、用户资料server和在线业务server

用户资料和在线业务分开


二、常用机制

1、签名授权

这个功能就是QQ客户端登录到IM服务器,服务器派发签名,通过客户端访问网页会同时将这个签名发送到网页CGI,CGI负责检查签名是否合法,这样实现一个认证子系统和业务子系统件的授权传递。


2、高负载系统共享冲突处理

需要避免使用OS提供的PV原语,每次PV操作都会进一次内核态,开销太大。

替代方案:1)、敏感写操作转包到一个进程同意处理。2)、使用汇编级指令进行原子读写操作。


3、资源回收

要求持续回收,不造成业务的暂停,方案1、另一个进程扫描已分配的资源,找出可以回收的资源 方案2、主服务呈现每次回扫几百个资源,进行回收。

数据结构可以是单独的回收队列,也可以是原来数据结构中增加链表节点。


三、常用数据结构

1、分级存储

2、多阶hash表

3、index和内容数组



你可能感兴趣的:(程序设计,数据结构与算法)