对于前端和Serverless的一些思考

C 2020-6-16 2287

近些年互联网技术发展相当快,JS已经升级到ES10,各种前端框架层出不穷,然而我的技术理念还停留在2014年左右……

简单看了下,个人理解不一定正确。CDN已不再是传统的反向代理,而是在CDN服务器上直接运行Serverless代码。

 

【过去的模式】

中国访客>CDN中国节点>服务器0(程序+数据库+文件)

美国访客>CDN美国节点>服务器0(程序+数据库+文件)

 

【未来的模式】

中国访客>ServerlessCDN中国节点(程序)>服务器A(数据库)+服务器B1(中国文件分发节点)

美国访客>ServerlessCDN美国节点(程序)>服务器A(数据库)+服务器B2(美国文件分发节点)

 

有些Serverless可以走不同数据库,但这样只适合读取,写入的话还是要放入同一个数据库才靠谱。

但是我对这个新模式还是有些质疑的,除了上面说的同步性,整个网络系统的复杂度也有所提升。

抛开这两点不论,Serverless模式实际效率提升能有多少?

 

网站基本构成就是程序、数据和文件。文件的话,多地分发和CDN缓存本身效果就差不多,不放入讨论范畴。

Serverless把程序放在前端,效率肯定比服务器执行再反代要高得多,这点应该加分。但问题就来了,Serverless支持的语言一般都是Node.js、Go这些,我却只会PHP[em_24]。如果自己组建CDN,不同地区访问不同服务器,每台都部署相同的PHP程序,原理相同,可以替代。

涉及到的另一个重要问题是数据库,动态程序都是要数据库支持的,如上所述写入都要进入同一个数据库。多个前端服务器写入同一个数据库,效率就和CDN没啥差别了,而且还可能出现连接失败。程序和数据库放在同一台主机时,效率是就会好很多。

但对于时效性不强的应用,如果在数据库读取上进行缓存,隔一段时间更新一次各地数据,那么性能就会高很多了。但要考虑到高时效性,数据源必须要统一,那这点相比传统的网站模式就没有优势了。

最新回复 (1)
  • 玄冥不倒翁 2020-6-16
    2

    Serverless CDN目前支持的CDN也不多,看场景应该多用于小游戏之类不需要太多数据库支撑的环境,或者时效性不高的网站,才有这种需求~不然开放数据库%访问极度不安全~~