西安云笔 当前的技术架构
当前,我们云笔目前使用了PHP为核心的技术体系,基本的思路是多进程+NIO。在整体的系统架构上,我们总体如下:
上图是我们目前使用的整体的技术架构,我们的服务器部署也基本上是这样的结构。目前我们使用了阿里云的云服务器,在最开始的阶段,我们使用的LBS、CDN、存储,这些目前都是使用现有的阿里云的服务。
为什么使用阿里云的服务?使用阿里云的好处在于:
1. 它极大地减少了我们的运维工作
2. 它的抽象也做得不错,不会有太多功能上的耦合,使得我们可以在这个基础上去增加我们自己的功能
3. 动态扩容,使得我们花非常小的代价就可以实现系统的扩容,并且能够实现接近实时的扩容效果
在很多场景下,负载均衡和路由分发会放在一起,在这里,我们将它分成两部分:LBS和Router。这样做的原因是:
1. 可以直接使用阿里云的SLBS(它不支持Router),它除了能够解决分发的问题之外,还能帮助进行流量清洗(过滤掉网络攻击、无效请求)
2. 使用自己的Router,配置灵活,可以根据业务的使用情况灵活调整
这样做的代价是系统的复杂度增加,性能上会有折损(很小),成本略微增加;但是好处也很明显。
在业务层,我们使用了PHP作为我们的开发语言。这里就不多说为什么了(PHP是世界上最好的语言)。目前我们使用的是PHP-5.6的版本,配合使用PHP-FPM和opcache。PHP-FPM作为PHP进程的管理而存在;opcache进行运行级的优化存在。另外,本身php-fpm是nio+多进程的机制,整体的性能上可控。对于非IO消耗的应用来讲,多进程和多线程是比较好的稳定的解决方案。
再往下层,我们引入了中间件和通用服务,帮助系统做解耦。目前中间件部分还没有正式使用(没时间开发),目前,计划在需要一些高稳定性场景下,我们会引入消息队列、任务调度等组件。通用服务上,目前计划使用的有:通知服务(包括短信、邮件、APP推送等)。
最下层就没有什么好说的了,存储使用最常见的mysql、云存储(s3)、Redis等,使用上也没有特殊的用法。
这里,我们引入了CDN,目前我们使用CDN,主要作为我们静态文件的分发而存在。
目前,我们使用的服务器部署环境如下:
西安云笔,专注于西安的互联网技术环境建设。