由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 聊天系统设计问题
相关主题
请教聊天系统设计讨论一道狗家的设计题
chat server long pull - facebook 面经a&G家电面超弱面经,求bless
下一轮startup是不是mobile为主?有经验的看进来
求指教:怎样成为full stack?问个multi threading code 题,同时请问高手mutil threading 编程有什么好书,网站和教程推荐?
【内推】西雅图HBO一道关于SMP and threading 题目
An opening in NYCcareer cup 如何测context switch花费时间?
和大家讨论一下设计一个在线象棋游戏two functons and two threads
程序员白菜价了通过中介/猎头找工作有问题吗?
相关话题的讨论汇总
话题: socket话题: client话题: port话题: number话题: server
进入JobHunting版参与讨论
1 (共1页)
a**********0
发帖数: 422
1
server side: 同一个port number下只有一个socket吧 那如果有许多client 则需要
很多socket 也就是很多port number 每个client分配一个socket/port number 但问题
是client需要事先知道自己的port number才可以建立一个socket去跟server通信 可是
如果没有socket 则server无法把client分配到的port number发给client
有一种解决办法是server定义一个公用的port number 作为constant server开一个
socket来服务所有client的connections
所有的client都使用这一个port number 但是多个client难道同时公用这个socket?
我的理解是同一个ServerSocket同时只能handle来自一个client的connection啊
Q**F
发帖数: 995
2
?难道不是把这个port收到的request根据一些request里面的信息,传到后面相应的
thread pool或者service group?
a**********0
发帖数: 422
3
你说的对
但是理论上可以开的socket数目为port的数目 也就是64k 如我我想同时为这64k的连接
提供服务 难道要开64k的threads吗? 这样并不scalable

【在 Q**F 的大作中提到】
: ?难道不是把这个port收到的request根据一些request里面的信息,传到后面相应的
: thread pool或者service group?

a**********0
发帖数: 422
4
而且这是一个聊天系统
假设我们最多开50个threads 每个thread负责一个socket/client
那最多五十个人聊天 而且他们如果每个人聊一个小时 就要占用那个thread一个小时
其他人就需要等待thread pool的free thread
现实的聊天工具是啥时候想聊就聊 不会让用户等待的 最多是首发消息延迟大一点
有一种办法就是用时间间隔比较小的异步通信方式 每个人每发完一个消息就向数据库
存他发的消息内容 同时掐断他的那个thread 和 socket 和他聊天的人享用同一个
channel id 数据库的表有userid和channel id 下次这个人需要再次发消息或者收消息
就要再次request to ServerSocket 然后得到了就用新socket通信
不过这都是我自己瞎想的 真实系统和这个差距大吗

【在 a**********0 的大作中提到】
: 你说的对
: 但是理论上可以开的socket数目为port的数目 也就是64k 如我我想同时为这64k的连接
: 提供服务 难道要开64k的threads吗? 这样并不scalable

Q**F
发帖数: 995
5
用nodejs可以解决这个问题吧。用户持续用一小时,并不是每一秒每一毫秒都在发信息
啊。这就是信息传送。nodejs每一秒可以处理成千上万条request,然后根据request的
信息传到后台的特定的service group,这些service group根据目标地址把消息送到另
外一头用户就是了。
a**********0
发帖数: 422
6
请问不用架构而自己用最基本的java写 如何处理每秒钟上万个request呢 其实还是
sequential处理request 然后发给thread pool处理 每个thread收发一条消息就去服务
另一个request 而不让一个用户长期占有吧

:用nodejs可以解决这个问题吧。用户持续用一小时,并不是每一秒每一毫秒都在发信
息啊。这就是信息传送。nodejs每一秒可以处理成千上万条request,然后根据request
的信息传到后台的特定的service group,这些service group根据目标地址把消息送到
另外一头用户就是了。

【在 Q**F 的大作中提到】
: 用nodejs可以解决这个问题吧。用户持续用一小时,并不是每一秒每一毫秒都在发信息
: 啊。这就是信息传送。nodejs每一秒可以处理成千上万条request,然后根据request的
: 信息传到后台的特定的service group,这些service group根据目标地址把消息送到另
: 外一头用户就是了。

Q**F
发帖数: 995
7
我们做的系统没有这么大需求,大概几百每秒。我们一般开150到200 threads,足够应
付了。
至鱼每秒上万了,出了每个机器的配置要强大一些,机器也要多一些应该可以处理吧

request

【在 a**********0 的大作中提到】
: 请问不用架构而自己用最基本的java写 如何处理每秒钟上万个request呢 其实还是
: sequential处理request 然后发给thread pool处理 每个thread收发一条消息就去服务
: 另一个request 而不让一个用户长期占有吧
:
: :用nodejs可以解决这个问题吧。用户持续用一小时,并不是每一秒每一毫秒都在发信
: 息啊。这就是信息传送。nodejs每一秒可以处理成千上万条request,然后根据request
: 的信息传到后台的特定的service group,这些service group根据目标地址把消息送到
: 另外一头用户就是了。

a*********0
发帖数: 2727
8
高并发问题
s*********n
发帖数: 35
9
server socket一个端口可以连无数个连接,取决于OS的限制,实际production中几十
万长连接也不稀奇。 一个unique连接是靠两侧的ip和port来标识的,不存在你说的问
题。



【在 a**********0 的大作中提到】
: server side: 同一个port number下只有一个socket吧 那如果有许多client 则需要
: 很多socket 也就是很多port number 每个client分配一个socket/port number 但问题
: 是client需要事先知道自己的port number才可以建立一个socket去跟server通信 可是
: 如果没有socket 则server无法把client分配到的port number发给client
: 有一种解决办法是server定义一个公用的port number 作为constant server开一个
: socket来服务所有client的connections
: 所有的client都使用这一个port number 但是多个client难道同时公用这个socket?
: 我的理解是同一个ServerSocket同时只能handle来自一个client的connection啊

u***n
发帖数: 21026
10
为什么要自己写,直接用Topic subcriber不就可以了
E****l
发帖数: 21
11
Java new IO, you don't have to have one thread for each socket connection.
you can take a look at Websocket, you don't need a unique port number for
each client.

request

【在 a**********0 的大作中提到】
: 请问不用架构而自己用最基本的java写 如何处理每秒钟上万个request呢 其实还是
: sequential处理request 然后发给thread pool处理 每个thread收发一条消息就去服务
: 另一个request 而不让一个用户长期占有吧
:
: :用nodejs可以解决这个问题吧。用户持续用一小时,并不是每一秒每一毫秒都在发信
: 息啊。这就是信息传送。nodejs每一秒可以处理成千上万条request,然后根据request
: 的信息传到后台的特定的service group,这些service group根据目标地址把消息送到
: 另外一头用户就是了。

1 (共1页)
进入JobHunting版参与讨论
相关主题
通过中介/猎头找工作有问题吗?【内推】西雅图HBO
求教神码是 Unix/Posix programmingAn opening in NYC
一道多线程的面试题和大家讨论一下设计一个在线象棋游戏
c++ thread 求助 (转载)程序员白菜价了
请教聊天系统设计讨论一道狗家的设计题
chat server long pull - facebook 面经a&G家电面超弱面经,求bless
下一轮startup是不是mobile为主?有经验的看进来
求指教:怎样成为full stack?问个multi threading code 题,同时请问高手mutil threading 编程有什么好书,网站和教程推荐?
相关话题的讨论汇总
话题: socket话题: client话题: port话题: number话题: server