免费开源的博客引擎,论坛系统,网站模板和轻量级的 CMS

2014-08-07 07:29:00 +08:00
 newghost
特点

简单,全栈
前后端均基于JavaScript技术,前后台没有技术差异,安装布署简单,在线升级方便。

NoDB,无配置
不仅仅支持数据库, 默认数据存储在JSON文件中,同样支持mongodb等;默认无需配置。

高性能
所有数据都会存储在缓存层(内存),数据访问无延时,系统资源消耗少。




Github地址: http://github.com/newghost/ourjs
6566 次点击
所在节点    Node.js
30 条回复
newghost
2014-08-07 12:29:41 +08:00
@towser

曾经也有一些人样问过,经过一段时间实践和测算应该不会。


1) JSON 数据并不会占用多少内存,我测试过一个网站,平均每天发贴1篇,回贴N篇(目前己有450+贴),内存消耗量比布暑初期并没有多占用多少内存(目前仍< 90Mb)。照这个趋势,保守估计1G内存最少可以使用10年。

2) 因为node.js的异步模型,内存消耗基本跟访问量无关,没有线程去消耗内存资源,我通过google analytics在测试网站上看到100~200人同时在线时的线程消耗内存量与闲时访问量并没有多大差别。

3) Node JavaScript V8可能单个线程有内存限制,如果流量和规模真的达到这个限制,可能会采取多进程来处理这个问题。但是现在离遇到这个问题还很遥远。
rentaro
2014-08-07 13:17:14 +08:00
感谢楼主分享,请问这个项目到今天为止做了多久
newghost
2014-08-07 13:27:10 +08:00
@rentaro

ourjs从去年开始,最初版本用了两周,10月份上线测试,在运行中不断调整,平均每周大概会花几个小时维护升级,最近一个月升级和整理代码花费的时间比较多。

websvr 是很早的一个项目,有很长一段时间没有维护,ourjs开始以后开始跟着一起修改。
jakwings
2014-08-07 13:53:49 +08:00
@newghost 啊,我都忘了是单线程的了。可是 Node.js 的 disk IO 并不是单线程的,无法保证回调函数的执行顺序。
jakwings
2014-08-07 13:57:32 +08:00
@jakwings 啊,我貌似说错了,貌似 Disk IO 也是单线程的。只是 fs.writeFile 回调顺序不知道是否确定……
newghost
2014-08-07 14:15:34 +08:00
@jakwings

应该所有的io操作都是阻塞的。

增删改操作会等数据IO,完成以后执行,下一步就是直接跳转或者是关闭请求,这里的回调顺序应该没有什么影响。而且实际上线时也并没有遇到执行顺序问题。

adapter.update(article._id, 'article', article, function(result) {
//After update merge other fields from the old article
utility.merge(article, Articles.all[article._id]);
Articles.update(article);
redirect(); //跳转url
});


你说的那种情况应该是两个有同时编辑一篇文章,一个人先保存,一个人后保存,然后后来的会把前面的覆盖的,但是应该所有的BLOG系统都有这个问题。
towser
2014-08-07 15:59:49 +08:00
@newghost 蛮好。给赞。
zzutmebwd
2014-08-07 16:52:17 +08:00
@shihty5 节点主题
jakwings
2014-08-07 20:14:58 +08:00
@newghost 你不是说这可以做论坛系统么,假如一篇文章太热,很多人在回复同一篇文章,这个问题应该会很常见吧……
还是模仿关系型数据库为每篇文章开一个 collection 收集独立的评论内容比较稳妥。
newghost
2014-08-07 21:05:09 +08:00
@jakwings

你说的这种问题还没有考虑过,如果遇到的话应该也可以解决,会优化一下,评论成功时将此评论 push 入 cache array 而不更新整个reply array。 q

最初也想过你说的这种方案,后来考虑到增加一种collection的话开销会比较大。因为评论的有时侯可能会非常随意,导致数量会特别多,评论又都特别短,信息量不大,这套系统又是要兼容文件系统的,每条评论存成一个文件会造成比较大资源开销,初始化的时侯每条评论都要载入内存的,然后进分类,在网站内容多了以后,这个过程可能会比较长。 所以权衡了下采用了比较简单的方案,把评论与article内容都存在一个json文件里。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/126496

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX