系统架构大提升
SF之前的系统架构是什么样的?响应没有结构。由于所有的服务都放在一个服务器上,这个答案很可能会让很多客户瞠目结舌。
是的,由于成立之初的资产限制,SegmentFault的网站只有一台服务器。中后期访问量在慢慢扩大,这个服务器的情况还在继续。如果有一天突然死了,就很难修复了。
云服务器加速
对于顺丰这样的初创企业来说,显然自己建立大数据中心是一个性价比非常低的选择,但系统架构的限制迫使SegmentFault做出改变。好在现在已经进入云时代,很多基础设施建设问题可以交给更有技术和专业的服务商来处理。经过一系列的衡量,SegmentFault最终选择青云作为SegmentFault的云服务器服务商。
4*web服务器(保留在其中一个)
1*db服务器(得益于ssd和缓存文件的应用,现阶段一个db就能满足需求)
1*检索服务器
1*缓存文件服务器
1*后台管理服务项目服务器
通用
更精细的系统软件分区
这一点在web服务器系统软件的设计方案中尤为突出,web服务器系统软件是所有服务器中压力最大的,所以设备总数最多。不过每台服务器的配置都是最少单核2GB的情况。
这种粒度分区具有以下优势
为了节约成本,如果SegmentFault一次性配备运行内存大的多核服务器,成本是非常高的,大多数情况下是消耗性能。
为了增强可信度,一个设备挂掉的概率远远高于其他几个设备挂掉的概率
。很有可能你已经注意到了,我设计了一个预留的服务器,一般挂在三层交换机的连接点上,就是不需要开机(不开机不容易充电)。当遇到流量骤增时,SegmentFault可以瞬间启动这个服务器,从而瞬间缓解其他连接点。当访问次数减少时,SegmentFault可以再次关闭它,降低应用成本。
比如上图就是典型的总流量影响解决方案。11点,网站访问量增加,前端web开发负荷全部封顶。根据它的生长曲线,SegmentFault认定它是故意爬行。SegmentFault必须在程序流程中做安全保护。另外,也不会损害客户在此期间的浏览。所以SegmentFault临时将第四台预约服务器的设备调整为4核2G,12点左右发布。系统软件负载立即恢复到所有正常水平。
更改代码发布方法
一般的发布步骤是根据rsync等将可发布代码立即上传到在线设备。
在SF的新版本中,SegmentFault根据PHP的特点这样改了。SegmentFault将代码打包成phar,发布到服务器。每发布一次,它就重新键入一个包,并将其文件夹命名为版本信息,例如14.9.5.195537340.phar打包有以下好处:
很容易管理。只有一份文件,而且比前一份传送得更快。它还可以防止一些文档在完成之前被客户错误地浏览
。回滚很方便。只需将必须加载到环境变量中的包版本信息改为需要回滚的版本号,就可以快速修复灾难。
最好依靠云服务器。
除了SegmentFault的云服务器,以下云服务器也适用于SegmentFault
SES,邮件群价格低且充足
mailgun,是现阶段SegmentFault的主要邮件服务项目。人人的公告服务项都是基于它的
SendCloud,备份数据邮件服务项,主要用来发送一些Mailgun收不到的邮件。比如QQ邮箱
再拍云,所有静态数据文档,包括用户头像和上传照片的存储
NewRelic,程序流程的性能测试
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)