APP创业项目-基于阿里云的服务器架构

喜欢这篇文章吗?分享给你的朋友吧~ 

阿里云、AWS等各类云计算平台使得互联网创业成本大大降低,不仅仅是服务器硬件成本,更重要的是硬件运维成本。每多购置一台服务器,就多增加一份维护压力,而优秀的服务器运维人员是很难得的,因为这种技术在大学里面没有相关专业,仅凭经验摸索。阿里云不仅仅提供了云服务器硬件资源,更是有一群优秀的运维人员提供技术支持。回想2005年以前的互联网创业,购置服务器、托管服务器、运维服务器,每个服务器都要有一个备份服务器进行容灾,这门槛让很多创业团队难以跨越。如今,我们可以花费很少的成本,拥有一套大互联网公司级别的服务器架构。本文讨论一个APP创业项目如何基于阿里云架构服务器。

一个APP项目可能需要如下服务器:

应用服务器、数据库服务器、文件服务器(CDN加速)、图片处理服务器、LOG服务器、内存服务器、全文检索服务器、负载均衡器、NoSQL服务器(MongoDB)、消息队列服务器等。

应用服务器

提供网站代码运行所需的服务器,一般运行着Nginx,云服务器一般都提供多种灵活的配置组合和付费策略。通常为了容灾,至少需要两台应用服务器,一台用于故障备用。如果APP用户量很大,则需要多台应用服务器分布式处理用户请求,相应地就需要引入负载均衡器和内存服务器。

负载均衡器

处于应用服务器之前接受用户请求,并根据一定的算法将请求合理分配到背后的应用服务器,保证各个应用服务器负载尽量平衡,从而提升应用的处理能力。另外,当APP用户遍布全国、甚至全球,需要在世界各地部署应用服务器,那么负责均衡器可根据IP归属地进行分配,这部分工作也可以由域名解析服务器来做,阿里云解析、DNSPod等都能够根据用户ip实现智能解析负载均衡。

当使用多个应用服务器时,就会出现session共享的问题,通常应用服务器将session存储于本地文件系统,那么A服务器的session,B服务器无法访问到,负载均衡器为了解决这一问题,只能将同一个用户的请求始终分配到一台应用服务器,这明显会导致负载不均衡。如果将session存入SQL数据库(应用服务器共用),存在读写效率问题,每次读写session都需要连接远程数据库执行查询,不是一件高效的事情,如果用户量级很大的话,性能更是受限。同样,多应用服务器上传文件时,文件一般存储于应用服务器本地文件系统,也无法实现文件共享。

内存服务器

Redis内存服务器用于解决应用服务器之间的共享数据问题,发挥内存服务器的高速读写优势,将session写入到内存服务器,轻松解决了应用服务器之间的共享数据问题。

文件服务器(CDN)

为了解决应用服务器上传文件资源共享的问题,应用服务器将上传资源存储于文件服务器,或由客户端身份验证后直传。开启阿里云提供的CDN加速功能,则可以将文件资源同步到各个CDN节点,以加速各网络地区用户的资源访问速度。使用单独的域名(cdn.domain.com)指向文件服务器,并且在cdn服务器设置防盗链机制,即可通过cdn域名直接访问文件资源。这样带来的附加好处是,应用服务器无需任何写入权限,不写入任何上传资源,安全性更高。

图片处理服务器

在应用中经常会遇到一张图片要生成各种尺寸的场景,缩略图、中图、大图等,对每张图片生成不同的尺寸单独存储是一件比较繁琐的事情,且未来图片尺寸更改的话,需要重新生成新尺寸。阿里云提供了图片处理服务器,通过创建样式对图片进行实时缩略图、水印操作。甚至还可以鉴黄。

RDS数据库服务器

阿里云RDS提供独立的关系型数据库服务器,提供内外网双IP,应用服务器与RDS之间采用内网高速连接。RDS还提供方便的读写分离配置,实现主从数据库。如果应用服务器分布于全球各网络区域,那么可以在各网络区域建立RDS服务器,由数据传输服务实现数据同步。RDS实时对查询日志进行分析,列出耗时较长的SQL查询,有助于开发人员排除代码中的慢查询。独立的RDS服务器与应用服务器物理隔离,应用服务器被黑后,能够一定程度保证数据库服务器的安全,反之亦然。

全文检索服务器

应用中经常需要实现搜索引擎的功能,例如搜索商品、搜索文章等等,如果利用数据库的全文索引,执行效率非常低,且难以接入中文分词等组件。我们需要有一个专业的全文检索服务器,可以采用基于Solr自建服务器也可以使用阿里云的开放搜索服务。

NoSQL服务器

很多应用的数据适合使用NoSQL存储,例如用户的行为日志、用户的聊天消息记录等等,这类数据大且线性,可以采用阿里云的MongoDB服务器。

LOG日志服务器

记录应用的访问日志有助于进一步分析应用,可以使用阿里云的日志服务收集、查询、分析日志。

消息队列服务器

应用中一些耗时但不重要的处理应该异步执行,例如用户发文后,对文章建立全文检索的索引,建立索引是与用户无关的业务,应该将建立索引的事件记作消息发送到消息队列后立即返回用户Response,无需用户等待建立索引成功。随后由全文检索服务从消息队列获取消息进行处理。消息队列还可以用于组件的解耦,例如问答系统,系统接收到用户的问句后,需要对问句进行分词、语义分析、指代消解、问题判定、答案检索、答案生成等等一系列的动作,每个动作都是一个独立的服务器进行运算,服务器之间可基于消息队列进行通信。

 

总结

阿里云除了以上核心服务器之外,还提供很多有用的服务,例如搭建在线视频直播网站所需的视频流存储、编码、分发;邮件推送;短信网关等等。这里大部分服务都是弹性的,根据业务需要随时调整配置、带宽等方案。阿里云、AWS等云计算平台使得互联网创业的门槛大大降低,未来创业团队只需要专注自己的业务,把服务器运维交给他们吧。

最后声明,本文不是给阿里云做安利,AWS具有所有的这些服务。

声明:本文谢绝转载。

版权声明:本博客所有内容,文尾声明谢绝转载的文章禁止转载,未声明谢绝转载的文章,遵循 CC BY-NC-ND 协议,分享-署名-非商业-禁止演绎。
原文链接:APP创业项目-基于阿里云的服务器架构
来源站点:ComingX

0 Responses to “APP创业项目-基于阿里云的服务器架构”


  • No Comments

Leave a Reply

使用新浪微博登陆