实时数据分布式服务器的策略

对于多并发实时数据的服务器,需要考虑的一些策略,使负载能在不同的服务器进程中异步处理,含有当机恢复服务器进程数据,动态维护服务器进程,提高数据读写的速度。 其中的一些策略如下:

1、p2p :服务器网关中转客户端地址数据消息到另一客户端,客户端之间通信大文件。

2、多网关。

(1)用户网关

支持网关连接的负载均衡,通过网关的分配服务器分配用户连接到的网关。网关支持多端登陆,则每个端登陆不同的用户网关。

(2)分布式子系统网关

每个分布式子系统含自己的网关。用户进入子系统时会重新登陆子系统的网关(如进入视频/语音频道会重新登陆频道的网关)。

另外,用户的多端在子系统如果是互斥的就不需要考虑子系统下的多端登陆的多连接问题。

3、多会话服务器。主要负责中转消息。缓存角色重要数据。当机时数据会转移到另一台服务器(通过网关)。

对于多端登陆,会话服务器中的角色需要保存多个网关连接对象。

4、中转服务器,负责会话服务器之间转发消息。

5、业务服务器分为多服务器

服务器消息的选择方式:

(1)硬哈希(使用配置数量取模)

使用配置数量取模方式选择业务服务器。缺点:不可变化数量。

(2)根据业务服务器连接数量

转发消息服务器上根据业务服务器连接数量选择业务服务器,每次选择下一个。优点:可动态启动服务器,消息流程较简单,一定程度的负载均衡。缺点:数据及其操作分散。

(3)一致性哈希(负载服务器)

负载服务器负责同步服务器哈希列表。

优点:负载分布较好,负载服务器可动态获知当前业务服务器数量,可动态启动(可以根据连接对象数量)。

缺点:负载服务器需要较稳定,有维护哈希列表成本。

理论分析参考:http://blog.csdn.net/chenjiayi_yun/article/details/41624603

6、数据库

(1)数据表分片

针对记录较多的表,需要常查询与插入。

(2)分库

针对记录较多的一类表。

7、数据缓存

(1)自定义数据cache进程

热点数据的业务进程会对应有一个数据缓存进程。比如登陆数据cache服务器、好友数据cache服务器、其他业务数据cache服务器(如鲜花数据缓存服务器)。

(2)memcached数据备份(或者redis)

有不同的方式来使用,一般不可同时使用不同策略。

方式一:写策略,buffer数据,减少写db操作次数(目前较多使用)

把数据及时同步到memcached,使业务进程内存与memcached中的对象在短期内是一致的。 为了加速业务进程的意外数据恢复。

1)进程启动,缓存对象到memcached。

2)内存修改对象时,缓存对象到memcached。

3)内存对象删除时,删除memcached中对象。

4)根据内存对象活跃时间,删除不活跃对象对应的memcached对象(如3天没有访问的)。

方式二:读策略(cache数据),加速数据读取

把数据加载到memcached,为了加速读取

1)在数据访问时加载数据到memcached(或者在进程启动时完全加载,这种需要内存足够大,启动时会有一定时间消耗)。一般适合在中小型应用。

2)动态热加载,在第一次需要数据时同时加载到内存和memcached。 设置memcached对象时间期限(比如30天),让memcached根据回收算法自行回收。较好利用内存。

时间: 2024-10-22 20:33:25

实时数据分布式服务器的策略的相关文章

C# 数据推送 实时数据推送 轻量级消息订阅发布 多级消息推送 分布式推送

前言 本文将使用一个NuGet公开的组件技术来实现数据订阅推送功能,由服务器进行推送数据,客户端订阅指定的数据后,即可以接收服务器推送过来的数据,包含了自动重连功能,使用非常方便 nuget地址:https://www.nuget.org/packages/HslCommunication/            github地址:https://github.com/dathlin/HslCommunication                                 如果喜欢可以s

大数据分布式弹性搜索引擎

ElasticSearch大数据分布式弹性搜索引擎使用-从0到1 阅读目录: 背景 安装 查找.下载rpm包 .执行rpm包安装 配置elasticsearch专属账户和组 设置elasticsearch文件所有者 切换到elasticsearch专属账户测试能否成功启动 安装自启动elasticsearch servicewrapper包 下载elasticsearch servicewrapper 包 elasticsearch servicewrapper开源包的配置小bug servic

使用Socket通信实现Silverlight客户端实时数据的获取(模拟GPS数据,地图实时位置)

原文:使用Socket通信实现Silverlight客户端实时数据的获取(模拟GPS数据,地图实时位置) 在上一篇中说到了Silverlight下的Socket通信,在最后的时候说到本篇将会结合地图.下面就来看看本文实现的功能: Silverlight 与服务器利用Socket通讯,实时从服务器获取数据(本文中的数据是地理坐标),由于没有GPS,所以本文在服务器写了一个构造新坐标的函数(本文是一个三角函数),然后利用Timer组件,实时调用,得到新的坐标,并将新的坐标发送给客户端,客户端接收到发

如何设计实时数据平台(设计篇)

我抽数故我存在 | DBus 人人玩转流处理 | Wormhole 就当吾是数据库 | Moonbox 颜值最后十公里 | Davinci 导读:实时数据平台(RTDP,Real-time Data Platform)是一个重要且常见的大数据基础设施平台.在上篇(设计篇)中,我们从现代数仓架构角度和典型数据处理角度介绍了RTDP,并探讨了RTDP的整体设计架构.本文作为下篇(技术篇),则是从技术角度入手,介绍RTDP的技术选型和相关组件,探讨适用不同应用场景的相关模式.RTDP的敏捷之路就此展开

rsync+inotify实时数据同步单目录实战

rsync+inotify实时数据同步单目录实战 inotify是一个强大的.细粒度的.异步的文件系统事件监控机制,linux内核从2.6.13起加入了inotify支持,通过inotify可以监控文件系统中添加.删除.修改.移动等各种事件,利用这个内核接口,第三方软件可以监控文件系统下文件的各种变化情况,而inotify-tools正是实施监控的软件. inotify配置是建立在rsync服务基础上的配置过程 操作系统 主机名 网卡eth0 默认网关 用途 [email protected]

运维开发:python websocket网页实时显示远程服务器日志信息

功能:用websocket技术,在运维工具的浏览器上实时显示远程服务器上的日志信息 一般我们在运维工具部署环境的时候,需要实时展现部署过程中的信息,或者在浏览器中实时显示程序日志给开发人员看.你还在用ajax每隔段时间去获取服务器日志?out了,试试用websocket方式吧 我用bottle框架,写了个websocket服务端,浏览器连接到websocket server,再用python subprocess获取远程服务器的日志信息,subprocess,就是用Popen调用shell的sh

项目总结[2]_svg+ajax+webservice+pSpace sdk实现实时数据的web展示

1.使用svg实现组态画面和动态数据展示 通过js的定时器调用webservice方法获取数据后更新节点数据 /// <summary>启动定时刷新</summary> function Start() { InitSvgElement(); this.timer = setInterval("GetTagValues()", 1000); } /// <summary>启动定时刷新</summary> function Stop() {

基于 WebSocket 实现 WebGL 3D 拓扑图实时数据通讯同步(一)

今天没有延续上一篇讲的内容,穿插一段小插曲,WebSocket 实时数据通讯同步的问题,今天我们并不是很纯粹地讲 WebSocket 相关知识,我们通过 WebGL 3D 拓扑图来呈现一个有趣的 Demo.接下来我们就看看这个实时数据通讯是一个什么样的套路. 我们先来聊聊这次 Demo 的思路吧,首先我要有一个 3D 的拓扑图组件,在上面创建几个节点,然后通过拉力布局(ForceLayout)将这些节点自动布局,但是有一定,需要在不同的网页窗口下,对应节点的位置是一样的,简单地说就是不同网页窗口

分布式服务器集群架构方案思考

nginx-reverse-proxy-conf 研究了一套完整的分布式服务器集群架构方案. 0x01.大型网站演化 简单说,分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率. 集群主要分为:高可用集群(High Availability Cluster),负载均衡集群(Load Balance Cluster,nginx即可实现),科学计算集群(High Performance Computing Cluster). 分布式是指将不同的业务分布在