← Recent posts

论坛微博化的一种实现的可行性

2011-12-19 · 40 comments

最近时间富裕打算写两个bot,一个twitter <-> XMPP gateway,一个是春菜的Bot扩展,于是在整理xep-0060和PEP的时候,挖出了年初读到Pubsub的时候写的一个project,大体就是类微博形式的论坛:

1:整个论坛以用户为出发点,以XMPP为backend

2:其中每一条发言的本体是一条微博

3:以relation的方式通过XMPP-Proxies的形式发布到主体为Pubsub节点的论坛下并广播给关注某一Topic的主体(用户)

4:每一条微博都以Atom的形式输出并持久化

5:Web从数据库抓取历史条目,前端通过Strophe实现实时交互

6:为保证Low latency,持久化过程和Web发布端均为XMPP的Consumer.

7:全站点皆可实现自由组合多用户聊天室或单点聊天,同时或许可以在以后实现视频或音频多用户交流。

8:或许能够遵从OMB协议(目前对于该协议唯一的障碍就是是否要有字数限制)。

当时因为对XMPP协议还不是很熟悉,于是只是写了这么一个设想。

现在面对当时写的该形式的论坛,仔细想想和现在已有的Twitter并没有太大的区别,不过细微已有的区别如下:

1:Twitter是以Tag的形式实现类论坛的,和现在的贴吧和tora有些相似,每个人都可以建立自己的tag或者参与trending的tag,来实现Topic指向用户间交流。但是这样对于一些指向性的主题而言缺少可控性,不利于搜索所需。

2:Twitter的交流形式和Chatroom(MUC)有些相似,不过缺少XHTML-IM特性,虽然用户可以修改客户端来改进体验,不过客户端的构建是需要大量的时间和精力的.一旦有新系统平台介入很难找到高度对应的客户端。

3:实时完整的XMPP API,可以在任何平台下以任何喜欢的XMPP客户端进行交互。

 

和当前各种论坛框架相比,这种形式的论坛有如下区别:

1:高度实时:对于每一条Topic可以拥有一种实时的聊天的体验(Web端下采用BOSH,XMPP可能在Websocket成熟后采用Websocket,也可以使用XMPP客户端参与讨论)

2:用户指向性:每个用户本身都是一个XMPP用户。

3:可简单的更改或分离特性。(Web,db,xmpp是完全分离的,同时除了xmpp自身以外每个service都以xmpp消费者的形式在网络中存在)

4:是一种类SNS的存在。

 

目前来看,实现这种方案主要的问题是:

1:全局的负载瓶颈在XMPP的负载能力上。虽然Openfire和ejabberd都支持cluster,不过具体承载能力依然未知。

2:每个Service Consumer bot的承载能力,这个问题估计不会太大。

3:XEP部分协议还未敲定,偶目前最关心的就是XEP-253和XEP-254,对于Persistence,本身就不打算通过XMBB Backend来做。

4:论坛的Spam.......这个绝对是个大问题...

 

依然是个雏形,打算先做些小的测试,到时候可能写个beta出来玩玩,看看时间够不够吧...~

Comments (40)

zxw11211 zxw11211
2011-12-19 15:32 · ##1

嘛 有兴趣和咱们论坛一起搞么

2011-12-19 15:35 · ##2

@zxw11211

偶这个暂时只是个想法,还没开始动工,如果能完成的话到时候可以看看,毕竟你现在用的是比较成熟的框架。而我准备写这东西XEP-0060现在找点有用的文档都觉得困难,所以风险是不小的~

zxw11211 zxw11211
2011-12-19 15:46 · ##3

@EmiNarcissus
点链接进来的时候告诉我地址不存在……是BUG么

关于这个 我的设想是 第一步 先集成SNS一些特色 比如高版本PW里仿照微博的@人等 集成相关功能

下一步再深入

2011-12-19 15:46 · ##4

話說論壇這樣的話,感覺對服務器壓力會比較大的說吧

2011-12-19 15:51 · ##5

@zxw11211
最关键的地方是这个后面的实现,pw是自包含的,从论坛主体到论坛功能,关键是我考虑把用户这边剥离开,如果做论坛的话,就是通过OAuth来做,最终的实体用户XMPP的用户,这样才能够实现实时。目前来讲实时体验最好的开放平台也是XMPP,有了这个后面一系列功能都很好实现。

@kita
恩,论坛其实还好,Web和XMPP服务器是分开的,我担心的是大量的Visitor用户(XMPP的Anonymous+Subid用户)导致XMPP受不了负荷,不过按照多数人的实践分析来说一台老旧家用电脑P3+2G内存能承载大概6k+用户是不成问题的,瓶颈主要在内存

2011-12-19 15:53 · ##6

@EmiNarcissus
乃用自己的機器啊,話說mysql並發什麼的。。。

2011-12-19 15:54 · ##7

還有春菜bot是神馬啊,小生對這個比較有興趣的說

2011-12-19 15:57 · ##8

@kita
不是自己的机器啦,不过租的dedi的配置是Atom的U和2G内存我用来做XMPP的Backend而已~类似的配置做个估计而已。
嗯,春菜Bot,这个其实就是个XMPP Bot了,可以以Chatting的方式来调教:)

2011-12-19 15:58 · ##10

@EmiNarcissus
哦哦,通過積累來形成人格麼?話說一直想要一隻春菜有學習功能的,通過慢慢的積累什麼的,話說性格什麼的話,按照一定機率偏向的隨機值麼。。。

2011-12-19 16:01 · ##11

@kita
bot学习这个暂时也没想到什么太好的方法,肯定还是数据库里先定义一些,然后通过正则匹配来实现一些学习功能吧,最近也在找资料~

zxw11211 zxw11211
2011-12-19 16:06 · ##12

我跳转过来还是错误了 - -

2011-12-19 16:07 · ##13

@zxw11211
再试一次?我刚改的~~错误是因为地址里多了一个'/'......

zxw11211 zxw11211
2011-12-19 16:09 · ##14

@EmiNarcissus
这次没问题了 嗯 访客访问也是我想实现的功能 实际上我希望论坛可以做到想匿名版一样访客发言 会员邀请注册提高会员质量

2011-12-19 16:12 · ##15

@zxw11211
访客发言我考虑过,不过还是不打算投入大功夫,因为在索引上会存在问题,和管理困难。访客只有subscribe帖子的权限,还有参与多用户聊天的功能,发帖,发microblog,不打算加入。
不过如果真的介入Oauth的话,可以通过Openid的方式来登陆,这也就无所谓匿名用户的问题了

zxw11211 zxw11211
2011-12-19 16:14 · ##16

@EmiNarcissus
对 OPENID是个好东西 其实利用微博快速注册也是很棒的

2011-12-19 16:16 · ##17

@zxw11211
嗯,目前来看openid肯定是最好的方式~最终需要管理的是xmpp的user,所以web端还是需要做不少修正的,还有db的分离,不少问题~

zxw11211 zxw11211
2011-12-19 16:28 · ##18

@EmiNarcissus
我看好你哟 有问题的话 就和我们坛子上的开发一起聊聊吧
拿我们做实验平台也可以 反正也没什么人上 233

2011-12-19 16:32 · ##19

@zxw11211

= =~之前和冷夜草聊im的时候他说其实只是需要很基础的聊天功能,不过这东西要把整个用户的backend给换掉,所以风险是很大的= =~等先做个雏形再说吧~

zxw11211 zxw11211
2011-12-19 16:34 · ##20

@EmiNarcissus
安全风险么 那确实要重视了

2011-12-19 16:36 · ##21

@zxw11211
不是安全问题,是整合问题啦~嗯,总之要先把Core做出来再谈后话了~[:deny]

2011-12-19 18:34 · ##24

发现评论翻页已经不需要刷新页面了么...
唔... 看到这么大大的东西,我bgm38了...

2011-12-19 18:36 · ##25

@conanshang
不是ajax的所以不用刷新的说,加载页面的时候就加载全部评论,然后用js分下页而已~~~
P.S.这种东西,绝对不是什么大大的东西了(摔[:bye]

kita kita
2011-12-19 20:33 · ##26

@EmiNarcissus
如果有辦法形成人格就好了。。。嗚。。。這樣的事情。。。

2011-12-19 20:41 · ##27

@kita
主要是找不到什么成型的文档(挠头
接着找~~~

kita kita
2011-12-19 20:42 · ##28

@EmiNarcissus
以前看到過一個(http://alice.pandorabots.com/),乃看看

2011-12-19 20:47 · ##29

@kita
参考になるわ〜頂きます〜〜
先去啃一啃[:confuse]

2011-12-19 21:06 · ##30

@kita
还是从Markov chain开始啃吧....ai-programming有不少说明,实现简单的bot应该不是什么难事

2011-12-19 21:10 · ##31

Spam 什么的。。丢给 Akismet 解决

2011-12-19 21:13 · ##32

@illusionwing
好像是个好办法...不过貌似没怎么见过有microblogging平台或者论坛平台有在用Akismet的?

2011-12-19 22:46 · ##34

@EmiNarcissus
呃。也不是非常。。。
但是好象到一定量就要单独签协议什么的了。刚刚看了下
Personal $0~$120/yr
Pro $5/mo
Enterprise $50/mo

2011-12-19 22:50 · ##35

@illusionwing
嗯,正常情况申请pro的就够了,不过不知道中文到底怎么样~年初刚刚部署的时候感觉误判的情况不少~

2011-12-20 00:03 · ##36

@kita
挠头,多语言很头疼呢,看来现在最好的实现方式就是后做句法分析,然后做高频匹配了,不过句法分析确实很头疼呢....英文的感觉还好办点,中文的和日文太头疼了...

2011-12-26 17:32 · ##37

话说留言加验证码难道无法阻止SPAM么?哪怕是人肉SPAM看到验证码基本也1条退缩吧....

2011-12-26 23:24 · ##38

@linfcstmrrrrrrr
captcha是最好的方法,不过会给便利性带来一些麻烦,尤其是整合xmpp系统的时候,因为毕竟web并不是唯一的发推方式,目标是通过MUC+PUBSUB实现和Web的整合,这样用任何的xmpp客户端都可以发推发文~

2011-12-27 17:57 · ##39

@EmiNarcissus
那设定规则如何呢,比如第一次需要captcha或者触发了某些类似SPAM行为即增加captcha?话说怎么突然感觉这里变成用户体验的突破点了.....

2011-12-27 19:16 · ##40

@linfcstmrrrrrrr
貌似这样好点,确定是公开消息且第一次验证过非bot之后随机向akismet异步请求,如果多次得到bot token的话就再次要求captcha验证,倒是xmpp也支持image的base64传输,感觉这个还真可行~

Leave a comment