ownCloud无限规模:用Go代替PHP,用微服务代替LAMP

2021-01-22 19:48:54

OwnCloud在一个安静的小房间里开发软件的新版本已有一年多了,现在正首次展示其新的Infinite Scale项目-但是开发人员并不慢,他们有宏伟的计划。直到并包括ownCloud X,该软件都是经典的LAMP应用程序:MySQL在后台运行,Apache提供PHP页面,并且整个结构通常在Linux安装上运行。

但是,多年来,ownCloud开发人员遇到了越来越多的性能和可伸缩性限制,其原因主要是由于PHP中的相应限制。任何运营大型ownCloud安装的人都知道这一点:实例管理的用户和文件越多,随着时间的推移它就会变得越慢。管理员还经常会遇到存储空间不足的问题,因为到目前为止,ownCloud已将其用户的文件本地保存在普通文件系统中。如果那里的空间变得狭窄,那么解决问题就不那么容易了。

ownCloud Infinite Scale中的开发人员计划永久切断所有这些旧的辫子。这是革命而不是进化:开发人员几乎完全废弃了您的旧代码,并用Go中的完全重写替换了它。 oCIS遵循三层模型:最低层负责文件的存储,中间层包括所有核心服务,第三层是完全重写的Web界面。

将来,ownCloud的核心将由各种微服务组成,这些微服务通过gRPC相互发送命令和指令。开发人员将MESH软件Traefik与oCIS牢固捆绑在一起,从而不必担心诸如负载平衡和服务网络内的安全通信之类的问题。相反,这意味着:如果某个ownCloud服务的运行实例不再足够,则可以临时启动同一服务的其他实例。

在架构上,oCIS利用Go的各种优势来加速。如果将来用户通过API或Web界面请求特殊操作,则各个oCIS微服务将在后台进行处理。用户不必等到成功执行了相应的操作,便可以发送下一条命令。在代码级别上也可以找到效果,与PHP不同,Go掌握了真正的并发性,因此可以同时执行多个操作。

最重要的是,切换到微服务可减少ownCloud的管理工作量。该软件将不再需要外部数据库(例如MySQL)-它自己的微服务将负责其数据存储。