开发分布式WebIm--1(设想)
1.基于xmpp协议的服务器都不提供用户花名册的功能,用其变通方式的花名册功能效率太低。
2.Erlang语言我研究了两天好不容易看懂了一个遍历程序,再往下看我就失去了兴趣。
3.手机上只能基于电信的CDMA连接,联通的GPRS只能用IP方式连接,移动就干脆无法连接。
于是自主开发一个基于分布式的WebIm就缓缓的萌发于我的脑海中。
随后我在网上查阅了大量的资料,随着一个问题又一个问题的提出与解决,一张又一张的流程图做出来。我脑海中的方案逐渐清晰,这里我把一些心得写一下,希望和朋友们分享。
1.Comet
Comet是一种服务器推技术,我看了很多的介绍,大把大把的框架和协议基本把我绕晕了,我打过一阵退堂鼓,但是Comet最大的优势是节约带宽,设想一下ajax技术轮询服务器:3s一次连接,用基于Utf-8的编码来发送一个HTTP头加内容估计是200byte,8个小时的流量是:200*20*60*8=1,920,000byte,一个月就是60M,太恐怖了,这样的软件肯定没人用了。不得已逼得我继续研究Comet,后来我发现Comet就是服务器端hold一段时间,保持和客户端的连接而已,一句sleep就搞定了。当然Comet是一个整体的浏览器解决方案,而我只是借用其中的HTTP用于通信,这点还是不同的。
2.IIS最大连接数
用sleep把线程hold住以后,我就关心IIS最多能支持多少个并发线程,这个太重要了,如果IIS只能同时并发几十个线程,那么这个方案也是没有意义的。网上找不到答案,用IIS最大连接数作为关键词搜索,只能得到卖虚拟主机的商家。于是我自己测试,把WAS打开一测,IIS只能同时连接36个线程,我顿时心凉了半截!郁闷了一天,到处找资料都没法解决,后来突然发现我系统是XP的(装xp是因为我开发蓝牙程序,只有xp的驱动),xp连接数是受限的。换到2003后马上跑出了3966个连接(一个WAS最大同时连接数了)。但还有个问题,虽然性能计数器上显示的是3966个连接,但多数线程还是处于等待状态中,又怎么办呢?
3.Web园
想要体会3967个连接同时运行吗?打开IIS-应用程序池-属性-性能-Web园,把默认的1改成100,马上运行WAS,性能计数器上显示的是3966个连接,再打开一个IE页面,数据缓缓的显示出来,IE进度条被hold住,说明服务器端没有释放连接,同时性能计数器上显示的是3967个连接,测试成功了!
for(int i=0;i<100;i++)
{
Response.Write(i);
System.Threading.Thread.Sleep(3000);
}
4.Remoting
使用Web园以后,Application变量和Static变量都无法使用了。观察任务管理器,你会发现出现了很多w3wp.exe程序,每个w3wp.exe进程对应一个Web园。Application变量和Static变量都无法跨进程存在,所以进程间的通讯只能使用数据库或者Remoting了.我选择使用Remoting是因为Remoting具备双向通信和事件通知功能,这样就大大节约了系统资源。设想4000个用户在线1秒去Select一次数据库查看自己的消息,那就需要数据库0.25ms内处理完这个select。我还没有接触过这种服务器,你有用过吗?发出来眼馋一下吧。
开发分布式WebIm--1(设想)相关推荐
- HarmonyOS 基于JS范式的应用开发 —— 分布式拉起、迁移
前言 对于分布式能力的接口,HarmonyOS 在 API Version 4 提供了一波,然后到 API Version 7 又提供了另一波,因此 API Version 4 的接口就不再被维护了, ...
- 使用c++开发分布式框架实践
目前比较流行的分布式框架有dubbo,springcloud,JMX等,都是java实现的,但是在做c++项目时,也有分布式的需求,这时我们可以基于grpc自己设计一套分布式框架. 整体思路如下: C ...
- 企业项目开发--分布式缓存memcached(3)
此文已由作者赵计刚授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 3.3.ssmm0-data 结构: 3.3.1.pom.xml 1 <?xml version=&q ...
- 深入浅出Node.js游戏服务器开发--分布式聊天服务器搭建
From: http://www.infoq.com/cn/articles/game-server-development-2?utm_source=infoq&utm_medium=rel ...
- 设计一个串口服务器设备.《需求分析报告》,《项目开发,分布式多串口交换服务器的设计与实现...
摘要: 随着信息技术和物联网技术的迅猛发展,TCP/IP网络应用呈现白热化趋势,各种以TCP/IP网络为主的通信设备已经成为主流,网络似乎无处不在.这种局面使得传统的以串行通信为主要通信方式的设备逐渐 ...
- WINX可视化开发工具的初步设想
以WINX界面库为开发平台 是的,WINX可视化开发工具本身,可能会成为第一个基于WINX并开源的完整应用(当然,不排除其他人比我们更早一步). 以VS2003/VS2005的插件融合到Visual ...
- Java学习之App开发公司手机端设想
背景:最近在学JAVA,看到JAVA做各种APP,而公司软件主要是做家居设计,使用者多是设计师和家具门店,很难让大部分非专业人士接触到我们的产品,由于设计复杂且占用资源较多不太可能用APP实现网站设计 ...
- oracle分布式数据库中间件,分布式数据库中间件设想
DB PROXY 功能 0 拥有分片数数据库和主数据库(非分片的) 1 前端SQL明文要求,并非绑定变量化,且客户端HASH成SQLID 2 前端MAXCONN限制,MAXPACKESIZE 3 返回 ...
- 开发分布式WebIm--3(Comet模型)
原文是:http://www.codeproject.com/KB/aspnet/CometAsync.aspx Asp.net环境下实现Comet就要用到 IHttpAsyncHandler接口 ...
- 分布式医疗挂号系统(十二) | 开发医院、科室、排班接口
开发医院.科室.排班接口 一.医院接口 查询医院接口 二.科室接口 (1)上传科室功能 (2)查询科室功能 (3)删除科室功能 三.排班接口 (1)上传排班功能 (2)查询排班功能 (3)删除排班功能 ...
最新文章
- pythonos pathjson_Python Json数据文件操作原理解析
- LLVM3.8停止了旧Windows版本,取消Autoconf,改进Clang
- C#控制管理VisualSVN Server
- 计算机基础:多媒体基础知识笔记
- html中视频播放完后可以跳到另一个html
- Kibana可视化管理页面详细使用说明
- 普华永道报告:三波自动化浪潮将依次出现,人类工作将显著受到影响
- 零基础学python还是c语言-零基础学Python之前需要学c语言吗
- 树(2)-----leetcode(层、深度、节点)
- Linux tcpdump命令详解
- 【idea使用】主题文字修改
- java 转换tif图片为jpg,解决转换后颜色异常问题
- 冒泡排序和鸡尾酒排序
- 项目验收测试是什么意思?项目检测具体流程有哪些?
- 汽车芯片“后短缺时代”,破局已定
- 项目管理铁三角:追求价值还是约束条件
- 人机交互及界面设计序言
- 想学爬虫的同学看过来,手把手教你利用Python网络爬虫获取APP推广信息
- 新生搜索神器Microsoft Academic Search与Google scholar、PubMed、wos、embase大PK!
- 视觉SLAM方案整理及摄像头选型调研(他首推ZED)