怎么才能以最小的代价(就是说钱), 时间精力不算.
为什么个人不能架设一个象样的服务器? 让我们首先看看我们为什么要服务器, 服务器单元应该具备哪些特点.
1. 定位功能
看看 RFC 3261 对于其功能的描述:
用户定位: 检查终端用户的位置,用于通讯。
用户可达性:检查被叫用户是否愿意参与通讯。
用户能力:检查媒体和媒体的参数。
事务建立:”ringing”,主被叫建立会话参数。
事务管理:包括发送和终止会话,修改会话参数,激活服务等等。
==> 对应到IM
用户定位:用户输入自己的名字, 应该能利用此服务器给出注册上的IP.
用户可达性: 可以不用服务器参与
用户能力: 可以不用服务器参与
事务建立: 可以不用服务器参与
事务管理: 可以不用服务器参与
所以,关键要能提供定位功能.(1)
2. 海量记录
用户定位, 用户密码管理等信息都需要放在服务器上. 虽然每个用户不需要太多存储空间, 但如果用户数量太大, 一个家庭PC就不能对付了.
3. 备份机制
服务器应该足够强壮(2), 最好有备份机制,这样,即使一台服务器当机,另外一台也能顶上.
解决办法: 使用P2P协议 + 免费DDNS 服务
使用P2P协议, 可以使我们对服务器的依赖变成对种子节点的依赖. 也就是说, 只要我们知道P2P网络中任意一个节点IP就可以了. 做为个人,这点是可以做到的.
我们知道,个人IP每此都可能变化,所以你需要注册一个免费的DDNS服务.这样你每天开机就可以保证知道有一个种子节点在网络中.
当然,节约用电,人人有责. 为此,我在软件中内置DDNS登陆和种子检测算法, 就没必要一定由我来开机了. 任意一个人开机就可以.
----------
该吃饭了, 过两天再写具体的协议和编码实现