BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

专访SegmentFault开发团队:垂直问答社区的架构升级

| 作者 水羽哲 关注 0 他的粉丝 发布于 2012年9月5日. 估计阅读时间: 11 分钟 | AICon 关注机器学习、计算机视觉、NLP、自动驾驶等20+AI热点技术和最新落地成功案例。

SegmentFault是一个面向国内IT行业开发者的问答社区,经过两个月的设计和开发SegmentFault团队于8月对网站进行了升级,不仅UI整体改版,交互流程和网站功能也有了很大的不同。InfoQ就SegmentFault的这次升级对团队成员进行了采访。

InfoQ:SegmentFault于近日进行了升级,能介绍一下升级的背景吗?

祁宁:如果说SegmentFault以前只是一个心血来潮的结果,那么现在已经算我们比较正式的事业了,毕竟各位参与者都放弃了手中现成的工作来到了杭州,一起共谋这个在他人眼里注定艰难的事业。这次升级其实也是这么一个背景,以前的网站只能算是一个个人作品,但是现在我们要把它变成一个产品了,这两者的差距我相信做过项目的人心里都清楚。相比较来说,技术架构上的升级都是顺其自然的,因为一切都已经有了这个前提。

InfoQ:当前的网站和之前在架构上有哪些不同?

祁宁:网站的框架已经全部重写了,层次更加分明,不过重构这东西对技术人员来说就跟家常便饭一样。要说真正的不同其实有几个方面。在框架上来说我们在PHP里引入了Java中注入变量的概念,虽然不是完全相同,但也已经到了神似。实现起来其实很简单,只是几个PHP的小技巧,但是却解决了PHP项目中一个让人头疼的问题,就是模块的自由引用。

另外一点升级就是我们对Redis使用更加成熟,如果说以前我们看Redis只是一个见猎心喜的小孩,什么数据都要一股脑的往里面放,现在我们就更加理智了,因为我们已经知道Redis什么能做什么不能做,使用的时候也更加有的放矢。

在数据层次上,可以看到我们已经统一了所有对象的id,也就是说在SegmentFault中所有资源都有一个各自对应的完全独立的id。这为以后功能的扩展提供了极大的方便。

高嘉峻:祁宁描述了技术架构上的变化,我说一下这次升级在产品架构上的变化。之前SegmentFault的产品和设计很大程度上借鉴了StackOverflow,在过去一年左右的时间里,我们也在不断思考,什么样的产品模式才适合国内的技术环境。

这次改版,我们更强调了产品的社交属性,提供更多个性化的功能,增强用户发现答案的可能性;另一个重要的变化,就是对搜索框的强调,我们希望搜索框可以成为SegmentFault最重要的入口,通过减少入口简化解决问题的流程。

可以说这次改版,我们摆脱了StackOverflow的影子,这是一个属于我们自己的SegmentFault。

董锋:产品设计之声望与等级:声望单纯从数字上看,很难看出用户的声望值与提问或回答的价值关系,所以我们引入了等级概念。将用户声望按高低排名分成了 11 个等级,参见这里,这样问题和答案的价值就能通过作者的等级很直观的区分。

InfoQ:SegmentFault希望能够为国内的程序员提供最有用的问答,那么在搜素上我们是如何做优化的?

祁宁:首先我们提供了实时搜索功能,当然这是redis实现的,实时搜索能让用户更快更准确的定位资源。

然后我们的主力搜索引擎使用了国人开发的xunsearch,虽然它是基于Xapian的二次开发,但是封装后的API非常好用,而且也满足了我们的基本需求,它对中文的良好支持也是我们选择它的重要原因。

高嘉峻:之前说过我们希望强化搜索框的入口功能,所以这个产品对搜索要求会比较高。现阶段我们对搜索引擎的设计,更多考虑的是高扩展性,尤其是产品和功能上的扩展性。

早期SegmentFault的数据量还非常小,所以我们没有在搜索性能上做太多工作。功能上,我们希望随着网站的发展和运营,通过对用户行为的深入挖掘再扩展,我们使用xunsearch为问题、标签和用户建立了三份索引,也是出于易扩展方面的考虑。

高阳:新版网站搜索的改进很大程度上归功于Redis的使用,也可以通过这个文档来了解相关内容。

InfoQ:SegmentFault的问题URL是无语义的,这一点和Stackoverflow不同,这是基于哪些考虑?

祁宁:是的,现在的url已经是由纯id组成。其实这也不难理解,Stackoverflow或者国外网站用标题切分作为URL的一部分无疑就是为了SEO,但是这一点英语上有天然优势,首先它每个单词是切分好的,再用中横线连接就可以自然形成一个个关键字,但汉字却不行,大多数标题连一个标点符号都没有,在SEO中的效果不会很好,其次,英文的字节长度要小于中文,可不要小看了这一点体积,因为我们的中文字节码都是要经过urlencode,所以一个汉字的实际长度就很可观了。

因此对我们来说,与其在url这种细微末节上想伎俩,不如扎实的做好内功,做一个真正高质量的社区相信对搜索引擎的影响总比URL来的高吧。

InfoQ:我看到SegmentFault的邮件系统采用的Amazon Simple Email Service(Amazon SES),那在SegmentFault的整个系统中是否还采用了其他的SaaS服务?在集成这些服务的时候您觉得需要注意哪些问题?

祁宁:在选择SaaS服务上来说我们显得很谨慎,主要是国内这一点还太欠缺,没有什么可靠的选择,我们还不想当试验品,另一点就是选择过多的SaaS服务,特别是这些服务还来自不同的提供商,会增加系统本身的复杂度,让它难以维护,可靠性也会降低。

但是选择国外的服务也会有风险,比如有段时间SES就会因为众所周知的原因而导致网络无法访问,这时候就需要你用另外的服务器做中转了,这也是我们没有贸然选择的原因,这其中的坑实在比较多。

InfoQ:在整个SegmentFault的开发过程中您能分别列举最让人激动和纠结的两个技术实现吗?

高嘉峻: 我个人比较兴奋的一个技术实现是我们这个PHP框架中一个Data模式,Data模式加上以上Joyqi提到的注入。

我们解决这个问题,多场景要求不同的数据模型进行不同组合,而我们却不需要为这些场景分别定义数据结构,只需要在使用时直接调用,框架会在运行时注入数据。无论是开发效率还是运行效率都有提升。

董锋:在使用LESS还是Sass语法编写CSS纠结了很久。先用LESS写了一段时间,发现代码量控制不太好,与HTML结合过于紧密,有不少局限性,于是转投更成熟的Sass,很好的将样式表模块化,提高复用率和效率。

我们还大胆了引入了响应式web设计(responsive design),使网页在不同分辨率的终端下都能良好的展示。

InfoQ:SegmentFault社区当前讨论比较热烈的话题有哪些?SegmentFault如何跟踪这些热点话题?

高嘉峻:首先我想解释一个问题,SegmentFault提供的不是一个讨论平台,SegmentFault是一个发现答案,解决问题的地方。

现在在SegmentFault平台提及最多的技术还是Web开发这个领域,如果说具体的技术上,PHP和MySQL是最活跃的。我想这个现象与当下SegmentFault的发展阶段比较初级,会员还集中在Web开发领域有关。我认为随着SegmentFault的发展,用户组成会逐渐扩展到各个技术领域,趋于平衡。移动开发技术的问题会逐渐多起来,移动技术发展阶段比较初级,而且初入这个领域的人也会越来越多,需要SegmentFault的人在这个领域更集中。

我们正在构思一些数据挖掘类的产品,随着我们数据量的上升,对这些热点问题的跟踪和挖掘才会有意义。

InfoQ:SegmentFault使用的PHP语言做开发,那么作为PHP语言的资深用户,据你的观察最近整个PHP社区都主要关注哪些热点问题?

祁宁:要说PHP的发展,确实还是比较让人振奋的。首先是Laruence成为了为数不多的PHP核心开发组一员,作为一个中国的PHP开发者,我感到由衷的高兴。另外一个就是PHP的开发者越来越务实了,最近看到开发语言排行榜,PHP的排名下降了一些,其实这也是件好事,肯定很多人明白了PHP能干什么,不能干什么,这可以让这门语言的社区少一点浮躁。我希望的是PHP在擅长的领域做到极致,而不是什么都做个大概。

InfoQ:能和大家分享一下垂直型问答社区发展的探索、感悟,以及SegmentFault接下来的开发计划?

高嘉峻:其实不管做什么社区,最重要的是要有一个属于自己的性格。社区有性格,才能吸引志趣相投的人,留住这些人。我们最垂直的问答社区,就是要找到这个性格,踏踏实实做技术,做一个勤奋,聪明的技术宅,坚持展现这个性格,是我们要做的最重要的事。

说到接下来的计划,我们仍然是坚持帮助用户发现答案,解决问题的原则,围绕用户个性开发一些产品。

另外,我们还发现很多朋友对SegmentFault的私有技术很感兴趣,我们会逐渐把这些技术完善,在合适的时候开源。

高阳:对于SegmentFault接下来的发展,我想在保证更好产品设计的前提下,接下来的重点会在社区运营方面加强。对于创业公司而言面临的是综合的竞争,除了你熟悉的产品和技术,运营能力在国内互联网环境中显得极其重要。国内的竞争环境更加复杂甚至恶劣,好的产品自动脱颖而出的可能性小,所以我们会转变思路在运营以及对外合作上面下一些功夫。我相信通过不断的运营可以发掘迭代出真正满足用户需求的产品。

相关内容


感谢贾国清对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

技术贴 by Han Qinghai

关于云端服务可以参考海豚浏览器的那篇,我同意楼主不要选择多个服务商的意见,既然已经用了SES也可以尝试Amazon的其他服务。www.lotiar.com

BTW, 文中xunsearch和Xapian的链接有误。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

1 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT