对segmentfault很感兴趣,想了解一下segmentfault背后的架构与服务器配置

Viewed 10095
  1. 使用什么语言和框架写的
  2. 服务器是个什么配置,做了怎样的优化,因为我觉得segmentfault的访问速度是很快的,想学习一下

这个标签下面有些相关的讨论,可以看看 http://segmentfault.com/tag/segmentfa...

4 Answers

InfoQ对我们的访谈中,谈到一些,全文:http://www.infoq.com/cn/articles/inte...

InfoQ:能否从技术上再介绍一下咱们这个网站,比如说用到了哪些框架,或是开源的一些组件?

Joyqi:这个网站整体上来讲是使用PHP语言开发,数据库存储采用的是MySQL,但是我们没有使用MySQL的发行版,用的是MySQL的Percona,主要是针对InnoDB的引擎做了一些优化。然后后端缓使用的Redis,PHP框架上我们没有用其他第三方框架,因为我本身也做PHP的,以前也有过一些积累,所以说框架什么的都自己写的。然后在这个我们用了一些第三方的组件,比如说分词,分词是用的那个SCWS,它的分词还是比较快的,另外它还支持PHP的扩展,所以我们用起来也会比较方便。现在我们把头像以及上传的图片全部都放在了又拍云存储,这使得在头像载入这方面可以做得比较快,而且又拍云存储与其他CDN不同的是,他针对图片做了很多优化,比如说可以自定义图像的缩放尺寸,自定义一个规格,这点其实对我们做头像来说是非常方便的,而且我们也非常喜欢这种方式。

InfoQ:作为垂直类的问答网站,您觉得需要优先解决的技术问题有哪些?

Joyqi:引用文本:我们从一开始就会把搜索作为一个优先解决的技术问题。我们在做站内搜索时花了很大的力气。最开始我们用的是Lucene的引擎做了一个Java的一个后端搜索服务,后来我们是把整个搜索全部转移到Redis平台上,用Redis来做站内的搜索,这样效率会比较高,而且搜索起来准确度比较高。
引用文本存储方面我们因为当时正好Redis比较流行,后来发现Redis其实它不但能够满足Memcached的一些服务,它本身有很好的数据结构可以满足我们需求,比如说Hash、List以及有序List都能很好的满足我们的需要。在语言的选择上,开始我们有很多选择,但是后来还是选择了比较熟悉的PHP语言。而且我们在客户端的服务上很多也是用PHP,比如说发邮件的服务,我们现在用的是亚马逊的SES(Amazon Simple Email Service),可以解决我们一些发送邮件的问题。因为如果我们自己搭建邮件服务器的话,很可能会被看作垃圾邮件,还会遇到其他的问题,但是如果用亚马逊这个服务就不会有这种问题。

之前作者有讨论过,从下面footer看出,使用http://www.elinkhost.com/,应该是基于php,具体架构不知,如果能用好缓存,db,因为是在国内网络,速度得到保障。

好广告,呵呵

@Joyqi 用Redis来做站内的搜索,这样效率会比较高,而且搜索起来准确度比较高。
我以前尝试过使用mongodb做搜索,先用分词把需要搜索的字段切分存储,然后使用正则来搜索,redis也是这样做吗

我也想知道这个怎么做的?

Redis与网站架构.pdf http://vdisk.weibo.com/s/9DexM

数据库为什么用mysql,而没有用Mongodb类似的数据库,总觉得这样存储更加自然。

簡單給鏈接還需要跳轉纔能獲得答案,不是很方便。建議修改下答案,比如「基於開源框架Typecho Framework,詳見 <鏈接> 」之類