关于C/S做集群的问题

问题描述

现在做的一个C#写的C/S内网聊天的软件,想考虑做成集群,资料说用memcached做集群,希望大家能给出思路。现在问题是这样,C1想与C2通信,但是如果出现C1的消息发给了S1,C2的消息发给了S2,这样怎么实现2个C端的通信,有资料说用一个中转服务器只负责监控SESSION状态,请问具体应该怎么实现,包括方法,所用到的技术,工具等。第一次发帖,有点语无伦次,希望大家指证和教导,非常谢谢!

解决方案

解决方案二:
1)就是Socket通信,做一个Server,然后所有的Client都连接到Server,然后Client发送消息给Server,Server转发给其他Client。2)写Socket的时候,要考虑到Client端的数量,不同的数量,采用不同的模型去写,你可以去百度里面找“socket通信模型”,一共有5种。3)通信协议。自己去定义。
解决方案三:
服务器(包括远程)集群需要有一个统一的任务调度系统。当一个处在广西的服务器收到一个用户C1的消息,目标是发给C2一个聊天消息,它首先要高速地查询系统上C2连在哪一个服务器上,例如在位于新疆的一台服务器上,然后它就会发一条消息给整个集群的一个Master服务器(因为新疆的这台服务器在“国中之国”的某个NAT网关之后,无法直接访问,而所有这类服务器都连在Master上双向通讯),然后Master就会把消息推送到新疆的这台服务器上。实际上,服务器不仅仅可以在公网上,也完全可以在局域网里边。只要它们全都连在Master服务器上,就能形成一个服务器联邦。而这个Master服务器通常也是可以通过“服务器选举”而自动选择的(以便处理受到攻击、宕机等情形)。
解决方案四:
你可以按照这个方向,自己找资料。你所看到的“memcached做集群”跟这个业务集群的控制逻辑设计无关,是用作内存数据库(或者也被许多人叫做缓存——外部的)的功能。而所谓“中转服务器只负责监控SESSION状态”大概也只是考虑到单个服务器(单个S、多个C),而不是多个服务器的场景。是低一层的设计。如果你设计不出来集群任务系统,那么就先搞一个“单服务器”或者“主-从热备”结构的双服务器IM架构,这比较简单。
解决方案五:
S与S之间的通讯信令,远比S与C之间的通讯信令简单多了。也许只是1:100的关系。但是当你有服务器集群,需要创建一个简单而独立的服务器集群的任务分发系统,才能玩儿起来集群。绝不是拿着c-s的设计思路去玩儿s-s系统。
解决方案六:
谢谢您二位提供的思路和讲解,很受用。自己在这条路上确实还差的很远。

时间: 2024-10-25 06:43:42

关于C/S做集群的问题的相关文章

tomcat+apache入门做集群

源于网络  一.集群和负载均衡的概念  (一)集群的概念  集群(Cluster)是由两台或多台节点机(服务器)构成的一种松散耦合的计算节点集合,为用户提供网络服务或应用程序(包括数据库.Web服务和文件服务等)的单一客户视图,同时提供接近容错机的故障恢复能力.集群系统一般通过两台或多台节点服务器系统通过相应的硬件及软件互连,每个群集节点都是运行其自己进程的独立服务器.这些进程可以彼此通信,对网络客户机来说就像是形成了一个单一系统,协同起来向用户提供应用程序.系统资源和数据.除了作为单一系统提供

请问在Asp.net里面如何实现Web服务器集群 ,做集群的时候需要注意点什么 ?IIS如何集群 ?请大师们解惑

问题描述 请问在Asp.net里面如何实现Web服务器集群,做集群的时候需要注意点什么?IIS如何集群?请大师们解惑 解决方案 解决方案二:集群应该是操作系统或者专用软件实现的,不是编程实现的,另外还涉及到硬件设备是否支持集群,有专门的集群设备.解决方案三:回复:1楼:不会的,例如WebSphere它就有支持集群的版本

我做了一个消息推送系统,客户端与服务器建立长连接,但是由于客户端越来越多,服务器怎样做集群呢

问题描述 我做了一个消息推送系统,客户端与服务器建立长连接,但是由于客户端越来越多,服务器怎样做集群呢 我做了一个消息推送系统,客户端与服务器建立长连接,但是由于客户端越来越多,服务器怎样做集群呢 解决方案 这个有很多方案.首先你要说你用的是什么语言做的消息推送系统. 例如Java,还是C++,还是其他的. 另外 把连接接入与业务处理分开,那么做分布式自然很简单.内部可以使用 RPC进行通信.等级每个用户的实时地址. 解决方案二: 用java语言做的,使用的androidpn

什么场景需要做数据库(mysql)集群?

问题描述 对于一个普通的XXX管理系统,数据量不是很大,生产环境需要做数据库集群么?生产环境中,是不是一台服务器就只跑一个数据库(mysql),不跑其他的应用?如果不做集群,对于大部分一般的应用系统,数据库都是单点的么?什么场景需要做数据库集群? 解决方案 对于一个普通的XXX管理系统,数据量不是很大,生产环境需要做数据库集群么? 不用生产环境中,是不是一台服务器就只跑一个数据库(mysql),不跑其他的应用? 通常是如果不做集群,对于大部分一般的应用系统,数据库都是单点的么?什么场景需要做数据

实例讲解配置之——TOMCAT集群配置

我的运行环境:Windows2003 Server SP4 + J2SDK1.5.0 +Tomcat5.5.9 准备软件:Tomcat 5.5.9   JDK1.5.0 一.配置过程 1.安装JDK1.5.0.采用默认安装就可以. 2.安装tomcat到C:\ tomcat 50,采用完全安装,该程序用于实现负载均衡功能. 3.将tomcat50的内容进行完全复制,生成C:\ tomcat 51.C:\ tomcat 52.C:\ tomcat 53,分别用做集群中的节点. 4.修改负载均衡规则

分布式与集群的区别

简单说,分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率. 例如: 如果一个任务由10个子任务组成,每个子任务单独执行需1小时,则在一台服务器上执行改任务需10小时. 采用分布式方案,提供10台服务器,每台服务器只负责处理一个子任务,不考虑子任务间的依赖关系,执行完这个任务只需一个小时.(这种工作模式的一个典型代表就是Hadoop的Map/Reduce分布式计算模型) 而采用集群方案,同样提供10台服务器,每台服务器都能独立处理这个任务.假设有10

【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之集群概念介绍(一)

集群概念介绍 集群术语须知 服务硬件:指提供计算服务的硬件,比如 PC 机.PC 服务器. 服务实体:服务实体通常指服务软体和服务硬体. 节点(node):运行 Heartbeat 进程的一个独立主机称为节点,节点是 HA 的核心组成部分,每个节点上运行着操作系统和Heartbeat 软件服务. 资源(resource):资源是一个节点可以控制的实体,当节点发生故障时,这些资源能够被其他节点接管.如: 磁盘分区.文件系统.IP 地址.应用程序服务.共享存储 事件(event):事件也就是集群中可

从单机到集群会话的管理之集群模式一

为什么要使用集群?主要有两方面原因:一是对于一些核心系统要求长期不能中断服务,为了提供高可用性我们需要由多台机器组成的集群:另外一方面,随着访问量越来越大且业务逻辑越来越复杂,单台机器的处理能力已经不足以处理如此多且复杂的逻辑,于是需要增加若干台机器使整个服务处理能力得到提升. 如果说一个web应用不涉及会话的话,那么做集群是相当简单的,因为节点都是无状态的,集群内各个节点无需互相通信,只需要将各个请求均匀分配到集群节点即可.但基本所有web应用都会使用会话机制,所以做web应用集群时整个难点在

漫谈分布式集群的负载均衡—口水篇

1 什么是分布式集群 为了理解分布式集群这个概念,我们先说说这两个概念:"集群"和"分布式".艺术来源于生活,计算机科学亦是如此.我们先通过例子,来了解一下现实生活中的"集群"和"分布式". 从开餐馆说起:你开了一家餐馆,自己掌勺后厨(即做菜).随着生意越来越好,发现自己忙不过来.于是你聘请了两个厨师,你们三位厨师就是一个"集群".主要的职责是:洗菜.配菜.炒菜.你们关系如下: 随着生意越来越好,两种方式增