../uis-be-development

uis_be 开发杂记

我希望后端服务程序能在几乎所有配置的机器上运行,因此不考虑node.js、php等框架/语言。目前以C++为uis_be的主要语言。

数据库

Pros

净网行动之前有许多大站点,如谷地、天空,它们均是单主机提供服务。参考过去的经验,我认为没有必要使用MySQL、PostgreSQL等网络数据库,最合适的数据存储方式是SQLite。原因有两点:

  1. 从必要性来讲:几乎所有的小圈站点规模都不需要多主机提供服务。

在圈子兴盛的年代,使用孱弱的主机与PHP语言尚且足以应对访问需求,现在圈子衰退,技术不断发展,使用更加低级的C++/C 就更不会遇到性能瓶颈了。在不需要多主机同时提供服务的前提下,网络数据库的延迟和资源占用要远高于本地的SQLite。

  1. 从便利性来讲:网络数据库的配置、迁移与备份较为繁琐

尽管网络中有许多相关教程,但想要完善地配置一个网络数据库还是挺麻烦;对其进行迁移与备份时也需要额外操作,无法直接传输内容到站长/技术人员的本地主机。日后UIS可能开源给所有希望建立自己社区的朋友使用,因此自然配置越便利越好。

Cons

但SQLite相比于网络数据库,在多线程并发写上很弱。需要设计单独的缓存系统,每隔一段时间把数据统一落入数据库。如文章/图片/视频等的阅读量数据,可以5s写入一次;对于实时聊天的数据,可以0.5s统一写入一次。

比直接用网络数据库会多很多工作量,也未经过验证,但不妨试试。设计合理的话,应当可以避开这个缺点。

部署方式

计划的部署结构为:

|- uis_be_folder

|- uis_be

|- config.yaml

|- dbs

|- assets

|- uploads

其中:

计划的运行方式为:将主程序及配置放置于任意目录中,执行主程序即可对外提供服务。