sjinny 发表于 2005-4-15 08:23:44

关于以后……

如果这个项目能保持长久的生命力,那么迟早有一天得开发自己的协议和服务器端(除非有其他开源的可以选择)。也许现在不是时候,不过我还是想讨论一下~
现状:
1.开源社区的服务器资源很紧张,所以有两个方向:依靠分布式的服务器架构来分散压力到各大开源站点的服务器上;开发不依赖于服务器或者对服务器依赖不大的架构。
2.其实现在各个操作系统上的即时通讯软件已经很多了,所以做出特色是生存的保证。
3.即时通讯软件目前已经比较成熟,以后的趋势应当是与其他软件的整合。
4.一个良好的架构也很重要。

1.分布式服务器架构在Linq里已有实现。不依赖于服务器的架构目前我还没听说过什么实现,不过如果网络使用了IPv6后如果每个人都可以有自己唯一的IP,那么不依赖于服务器的架构应该不难实现。
2.特色嘛……还请大家讨论……
3.整合是一件非常重要的事。
理想情况下,最终开发出的应不仅仅是个用来聊天的娱乐软件,应该能够与其他软件进行整合,使得它能在更广泛的范围内发挥作用,整合的对象可以有:
其他网络应用,比如:与网络游戏整合,与浏览器/网站整合,与P2P软件整合等
操作系统,比如:作为一个通用性强的通讯平台,为其他程序提供网络通讯服务,这样一来可以减轻其他软件中网络功能开发的压力,二来也可以方便与网络有关的各种软件的整合。
4.一是把功能和界面分离,二是良好的模块化设计,完善的插件机制和二次开发能力。

bamfox 发表于 2005-4-15 12:53:35

讲到操作系统,linux 操作系统本身就是为网络通信服务的。能否再具体说说 eva 与操作系统的关系? :oops:

yunfan 发表于 2005-4-15 14:48:20

目前, 可以说是借鸡下蛋,呵呵

目前阶段,
我个人觉得,首先是要基本功能的完善, 个人聊天,群聊天,文件传输要首先支持。
然后开始在易用性,和UI的设计上下功夫。 个人觉得如果一次做太多的设计,反倒束缚了
手脚,结果很容易流产。 反而这种阶梯式的功能和易用性方面的增强,更靠得住一点。

下一步,
我们何去何从,我也在思考, 是结束还是继续维护,升级, 因为这么跟着腾讯走,
终究受制与人,而且发挥的空间不大。

IPv6的大规模应用,至少在2年之内,我觉得是无法实现的。所以,服务器就是我们
唯一的选择。但是跨地域的分布式的结构实现起来,以及维护起来,都是十分麻烦的。
人力和财力,我们都是无法做到的。Linq我只是听说过,没有试过,无法评价。

但是我个人觉得如果我们有统一管理的服务器,就是我们自己的服务器,那么实现一
个分布式的中心即时通讯服务器端软件还是完全可行的。遗憾的是这个可能性很小

至于整合, 或者说附加功能等等, 都可以逐步添加。 像天气预报,滚动新闻。以及
点对点游戏,或者网络多人在线游戏,等等,都是可以实现的。

模块化加上面向对象, 这个从0.2.0 开始就已经开始了。这个是软件本身的问题。
不设计到未来走向。 唉, 总之,目前,我们还是有明确的目标的, 群和文件传输的
实现。 然后么, 只有慢慢摸索了。

sjinny 发表于 2005-4-15 15:33:34


如果一次做太多的设计,反倒束缚了
手脚,结果很容易流产。

偶以前就是…… :cry:

Linq的服务器架构我记不太清了,好像是这样的:
一个用户可以到某个服务器上进行注册,然后得到一个帐号,比如[email protected],然后这个帐号就归linuxfans.org这个服务器管理,登陆时也是登陆到linuxfans.org上,然后要获得好友状态信息时,可以根据好友的帐号名中@后面的域名去连接对方所在的服务器……
我现在想想其实这也不能说是分布式的服务器架构,因为基本上服务器之间根本不需要有多少交流,跨服务器的行为可以靠客户端自己去做,比如获取另一个服务器上的自己好友的状态,只要把请求发到那个服务器上就可以了,自己注册的服务器与这事一点关系都没有,所以与其说是分布式服务器架构,不如说是一个客户端与多个服务器相连……

yunfan 发表于 2005-4-15 16:23:17

像Linq这种方式, 似乎缺少一个统一的管理, 各个服务器之间没有联系。
一个问题就是新的服务无法统一提供,这就给增值带来了很大问题。

sjinny 发表于 2005-4-15 17:04:15

新的服务嘛……只好尽量去协调各个站点了……不管怎么说这是个开放的架构……

chaobill 发表于 2005-4-15 21:44:45

:evil: 刚写了段东西,但发不上去,什么网络

我也想过P2P模式的服务器。

其实主要是身份验证问题比较麻烦
可以使用的技术有邀请制,公钥制,图片验证也能用得上。

服务器的唯一用处是:标明有用户在服务器上。
我觉得要做好也可以达到实现Aka 的eforum 效果,不要局限于聊天

指令我没系统的想过。我的想法是把数据和指令分开两个端口(FTP)。指令里有个查询当前数据端口的数据流类型。



Friend协议是什么:
    Friend协议是帮助用户在没有服务器情况下找到另一个网络好友的工具,当然,有并不唯一的服务器会更好。

Friend协议不是什么:
    Friend协议不是聊天工具,尽管Friend套件里带有。Friend协议里的所有应用功能都是插件实现。

能举个例子看看Friends的应用么:
    比如默认的情况下Friends套件带了聊天工具,你只要输入你自定义的ID,然后搜索看有谁开了聊天服务就可以和他聊天了,但是你如果要把这个ID作为别人查找你的标记,或者防止别人冒充你,你可以向任何Friends ID认证服务器申请,之后你的ID就成立[email protected] 模式,你也可以用通过好友的认证服务器查询你的好友是否在线。当然,Friends协议还远不止这些。你还可以通过开了Friends协议的机子查找另一台开Friends协议的机子。 只要开了Friends协议,你就可以查询还开了什么协议。甚至通过插件,你可以把只能在局域网的应用搬到任何两台在国际网络上来


Friends协议是基于机器而不是用户的,尽管聊天的插件是基于用户
Friends通过TCP协议,如果不行则改 UDP 协议实现

Friends的报文,也许用XML,但XML太臃肿了
Friends_CLSIDstring

Name=chaobill
Type=固定IP/浮动IP/内网
//加一个“服务器”?
[email protected];[email protected] //more ...
//不在的时候可以向这些远程服务器做一些举动,比如Email只要远程服务器开了这些协议
OpenServices=80:HTTP;3322:BT //more ...
//我开的协议,
End_Friends_CLSIDstring

//有什么好友就在这里显示了,还没完工

{cao}
Name=cao
Type=LAN
[email protected]
Online=yes
ip=0.0.0.0
OpenServies=8888:Chat
Introduce=163.com
{lily}
Name=lily
Type=Float IP
RemoteServies=//这家伙没给他的远程服务器,所以是空的
//认证服务器是不是要独立出来
IP=222.28.208.28
OnLine=No


todo:
    找一个搜索算法:一般浮动的IP不可能离上次的IP跳动有多远。搜一个人有下面的几种算法:直接奔IP,问他的认证服务器,最不利的情况:搜索他的网段,并邀请搜到的开了Friends协议的机子一起

要上课了...
//////
我把想法再整理了一下:有独立IP的机子可以同时做服务器和客户端,如果没有IP只做客户端就行了,每个用户或者远程服务器,都有至少一个远程服务器,可以向远程服务器查询用户在不在线。
我这些天都没考虑具体的细节,只是想了一下报文:不用XML,用数据长度+CRC32+内容。考虑了一下编程的:太复杂了,尤其我又面临期末考试,无心想下去。
数据都是存在客户端。

sjinny 发表于 2005-4-15 21:49:28

晕哦……我想现在还是考虑一下服务器到底要做哪些工作,然后再考虑服务器的负荷到底会有多大,如果不大的话,开源社区的服务器应该还是可以承受的

Anomymous 发表于 2005-4-15 23:53:54

anyone have a look at jabber?

chaobill 发表于 2005-4-16 11:11:44

jabber 听说过但一点都不熟悉。

小锁 发表于 2005-4-17 09:38:24

jabber就是基于p2p的im!
页: [1]
查看完整版本: 关于以后……