LNMP经验分享

王帅:目前的SaaS平台架构根据产品和量级的需求经历过多次演变,最终演化成了现在的结构。

由最初的快慢分离和简单容灾,增强容灾和提供灰度发布能力,逐渐抽取统一数据层/减少无用请求,强化多set模型和立体监控,到最后统一数据存储。最终演变为:DNS+GSLB+LVS/TGW+业务逻辑机(Nginx+php-fpm+APC)+中间层和异步系统(PHPServer)+cache层+UDS、Redis、CKV等存储层。 

LNMP经验分享

1. 基于PHPServer的中间层:采用PHP作为UDP/TCP Server提供中间层数据服务,每秒可以处理请求2万次以上。中间层封装大部分缓存和数据逻辑,因为由PHP扩展和纯PHP开发,开发人员无需关心内存泄露和core的问题,极大的提高了开发效率。同时我们实现了CPU亲和性绑定,PHP的Epoll支持,消息队列,Unix Socket等Linux底层特性提高Server的吞吐能力。

2. 基于C++的PHP扩展:部分逻辑用C++封装成扩展,提高运行效率。公司级业务对接大部分使用C++为PHP编写扩展,是PHP与公司级C/C++ API的产品无缝对接。

3. PHPServer旁路系统:使PHP的pctnl,主进程管理和监控所有的业务进程,所有后台服务器天然支持自动拉起,接入便利,极大提高了后台服务器的可服务范围。

4. Xhprof:可以在运营环境部署的性能调优插件。为提高QPS,降低服务器CPU,提高机器利用率在业务层级提供了可靠的仰仗。

5. 数据上报和监控:基于PHPServer及公司成熟组件的UDP上报和展示以及RTX、微信通知机制进行全面系统的监控,及时发现服务器异常

6. Cache技术:采用APC进行PHP的OPCode缓存。利用共享内存进行第一层cache,缓存高频数据,采用业界常见的memcache、redis进行分布式cache,按照数据单元组合分为多级cache。采用公司级别的CKV作为落地Cache方案。 

7. 数据库技术:采用基于MySQL的数据库UDS系统托管。部分数据使用腾讯提供的CDB托管,保证写热备。

8. Yii框架:利用Yii框架的WebApp和ConsoleApp构建所有的PHP工程。

9. 前端技术:我们产品非常重视前端体验。随着RIA富因特网应用程序类型产品的盛行,我们在前端技术方面采用了分模块按需加载(自研的LBF框架)、前端MVC模式的使用(BackBone)、Single Page Application单页开发模式(SPA)等等。同时在移动端页面的开发上,借助html5的各种便利新特性,大大提高了用户体验(LBF Mobile)。未来,随着在多平台多终端上的发展,在前端方面我们也会采用响应式布局等的新理念,来优化多终端之间的智能适配。

10. 前端系统:自建NodeJS+ULS(海量log系统)上报JS的错误,使我们对用户浏览器可能出现错误了如指掌。前端代码发布前对模板文件预编译(ArtTemplate),同时多个静态资源文件合并和压缩(Combo机制),推送到CDN,加速用户侧的加载。使用公司级OZ测速系统,能够了解全国的接入速度,针对性的优化服务器拓扑。

CSDN:如此规模下,平台打造的主要挑战在什么地方?贵团队在这些技术上都做了哪些方面的调优?能达到一个什么样的级别?

王帅:作为一款企业级服务,稳定、安全性是我们最重要的挑战。在稳定性方面,我们坚持进行灰度发布,在正式发布前已经经过多轮灰度用户验证。服务的多Set隔离,在极端情况下一个set出问题,其他set依然能够提供服务。服务器提供各个维度的监控(CPU、内存、流量、磁盘、程序错误等等),同时也有各种触达运维人员的告警(手机、短信、微信、RTX等等),此外,在平行扩展方面也下了很多功夫,服务器负载过大的时候可以通过增加机器轻松扩展。安全性方面,我们的功能在上线前均接受公司的XSS、CSRF等各种漏洞扫描,并且时刻关注所使用的开源软件的漏洞发布情况,及时防堵。

另外,很多查询和操作需要以企业为单位进行操作,在Cache设计上我们支持了多级的Cache模型。

大部分公司的上班时间是一致的,因此很多请求会在早高峰上班时撞车,我们也一直致力与削峰和减少高峰期CPU占用率。

性能调优经验分享

  • 所有数据Cache化,多级Cache
  • 使用Linux的运维命令查找高峰期耗时较高的CGI和进程,运用Xhprof定位业务性能问题
  • 同步网络请求异步化
  • 使用Epoll提到Select提高网络IO效率,为使用PHP做后台server提供基础架构能力
  • 快慢请求业务分离,互不影响。
  • 有效的利用Nginx反向代理能力,将部分(如灰度逻辑)做在nginx层以提高处理性能。

采用上述调优后,我们团队在流量增大2倍的前提下未加一台机器,CPU保持不变。

前端方面,在大型企业人员规模巨大,依然要展现整个公司组织的情况下,我们进行前端json文件本地缓存,对部门和成员数据查找检索算法方面做了算法优化,能够基于拼音首字母、多音字、ID、中文等进行检索,该检索算法已经申请专利。在CGI方面也做了按场景和权限分离,分批拉取,在一个页面上用户量达到3万级别,也能保证用户体验和加载速度。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值