新闻APP后端系统架构成长之路高可用架构设计图文详解php教程

因为工作安排,一些原APP后端的前辈们转移到了其他业务部门,2015年底开始接手客户端后端工作,初入圣地,可谓如进炼狱。

当时因手里还有很多业务开发工作需要小伙伴们继续支持,只能自己先单枪匹马闯入了APP后端开发。

从原来得心应手的内容业务开发,转变到APP后端接口开发,有很多APP方面的专业领域知识还不了解,只能一点点和端上的同学进行请教学习,同时也感谢端上的同学进行的帮助。虽然面临各种困难,但是业务还要继续前进,版本迭代还在紧张进行中。

就这样一天天一边Coding一边修BUG一边和十几位漂亮的产品妹子的各种需求进行周旋。

但是业务发展和版本迭代不能停滞,只能从原有内容业务开发调来两位同学一起继续支持老API开发,同时我开始对新接口架构设计进行调研。

因对APP开发经验不足、水平有限,接口重构开始发现无从下手一片空白,连续两周反反复复熬夜写了几套框架,白天和同学们讨论,发现各种问题,一一推翻。

无奈只能查询各种资料,借鉴各大互联网应用经验,同时遍访名师【感谢:@青哥,@徐大夫,@晶晶,@强哥@涛哥及APP端和WAP端小伙伴们的指导】,通过大量学习,慢慢对整个新接口架构搭建思路有了整体的规划,感觉见到曙光。

通过一周的日夜赶工,我把整体框架结构初步搭建完毕,马不停蹄,不敢停歇,那就开始带领小伙伴们开干吧!

虽然对整体设计有了大概思路,但是接口重构也面临着很大的问题,需要APP端及产品、统计同学的鼎力支持才能进行下去。

新接口与老接口无论是从调用方式还是数据输出结构完全不同,导致APP端代码需要大量修改【感谢@辉辉@明明支持配合】

当然统计也面临同样的问题,所有的接口都变了,也就是原来所有的统计规则都需要修改,同时也感谢【@嵘姑娘@统计部门@产品同学】的大力配合。没有两端及产品,统计的支持,接口重构工作进展就无从谈起,同时也感谢各位领导的大力支持,保障重构工作如期进行。

新接口主要从下面几个方面进行了着重设计:

1,安全性,

1>,接口请求增加签名验证,建立接口加密请求机制,每个请求地址生成唯一ID,服务端客户端双向加密,有效避免恶意刷接口。

2>,所有业务参数注册制,统一安全管理

2,可扩展性

高内聚低耦合,强制版本分离,APP版本扁平化发展,同时提高代码复用性,小版本走继承制。

3,资源管理

服务注册制,统一入口出口,所有接口需向系统注册,保障可持续发展。为后续监控调度降级提供保障。

4,统一缓存调度分配系统

APP有一个PUSH特性,每次发PUSH会瞬间召回大量用户访问APP。

新接口每次发完PUSH,服务器必挂,悲剧了。

故障表现:

1,php-fpm堵死,服务器整体状况无异常,

2,nginx倒是没有挂,服务正常。

3,重启php-fpm短暂服务正常,几秒钟后又会死掉。

4,接口响应慢,或超时,app刷新无内容

故障排查猜测

一开始怀疑下面几个问题,

1,MC有问题

2,MYSQL慢

3,请求量大

4,部分请求是代理的老接口,会导致请求翻倍

5,网络问题

6,一些依赖接口慢,把服务拖死

但是因为缺少日志记录,上面都没有追查到任何依据。

问题追查:

PHP是顺序执行,只要有一个后端接口慢,就会造成排队等待,高并发情况下,吞吐量直线下降,直到PHP完全被拖死。

1,push时会大量召回APP用户,同时打开客户端是平时的3-5倍如图(早晚高峰会叠加)

4,用户规模增长,APP用户规模已经和年初相比翻了一倍,工作重心一直放到了代码重构,但是服务器方面的资源一直被忽视,一直没有任何新增机器,也是本次故障的一个原因。【注:硬件投入其实是成本最低的投入】

然后,然后就挂了。。。

问题解决:

1,优化NGINX层缓存,可以缓存的内容【如正文】,在NGINX层做CACHE,减少后端压力

2,停用不必要的接口处理【如统计】,NGINX直接返回,不走PHP,减少PHP-FPM压力

4,新增设备,重新根据用户规模计算及配置服务器资源

5,记录资源调用日志,监控依赖资源,一旦资源出现问题,及时找提供方解决

6,调整MC缓存结构,提升缓存利用率

7,与端充分沟通仔细梳理APP对接口请求的次序及频次,提升有效接口利用率。

通过这一系列改进措施,效果还是比较明显,新API的性能优势与老API相比如下:

旧:小于100ms的请求占比55%

问题总结:

1>,应对不足

2>,缺少沟通

没有与APP端同学及运维部门保持充分沟通,只关心了自己脚下一摊。一定要和端上,及运维同学保持足够充分的沟通,融为一体。根据现有资源条件【硬件,软件,依赖资源等】,详细约定各种资源请求时机、频次等,适当延迟非主应用接口请求,保障主业务可用,充分利用服务资源。

注:特别是要和端上同学保持好沟通,端上同学开发是根据APP端的业务逻辑需要来请求接口,如果请求接口过量,就相当与自己的APP对自己的服务器发起了大量Ddos攻击,非常可怕。。

3>,健壮性不足

过度依赖信任第三方接口,对依赖接口超时设置不合理,缓存利用不充分,无灾难备份,依赖资源出问题,只能眼睁睁的等死。

4>,突发大流量

PUSH和第三方拉起瞬间带来巨额流量,系统无法承受,缺少有效的熔断限流及降级自我保护措施。

盼望着,盼望着,流量来了,奥运临近!

BOSS涛哥放话:如果奥运不出故障,请同学们吃大餐!如果奥运出故障,请涛哥吃大餐!所以为了大餐坚决不能出任何问题!

奥运前我们一直处于备战状态,进行了大量优化工作,确保完美度过奥运流量高峰。

1,对所有依赖的资源进行了仔细梳理,重点业务接口进行细致监控

2,在APP端部署日志上报模块,实时上报异常日志,进行监控

3,对MC集群进行升级扩容及对系统缓存统一优化管理

4,上线多级业务熔断降级策略

虽然奥运期间突然闯入宝宝事件,我们还算是平稳度过,整体服务没有出现问题,APP整体业务数据随着这两个事件也有了极大提升。

BOSS也请同学们一起吃大餐HAPPY了一把!

原有服务器结构如下:

后续我们又对服务器进行了各机房分布式部署,重新分配VIP网络访问节点,优化网络调用资源,避免用户跨运营商、跨南北访问可能对用户体验造成的不良影响。

通过上面的大量优化调整,我们的整个系统承载能力也得到了很大提升。

目前峰值QPS达13.4万,日最高请求HIT数达8亿左右,量级别已非常可观。

单机的QPS承载量也有了很大提升,原来单机500-800QPS系统就已满载,到现在单机2.5K系统依旧坚如磐石、微丝不动。

新闻APP接口目前依赖第三方接口及资源上百个,一旦某个或多个接口及资源发生问题,容易对系统可用性造成影响。

基于这种情况我们设计开发了本系统,主要系统模块如下:

同时客户端业务在持续飞速发展,各功能模块更新迭代也很快,为了满足快速迭代同时又不能出现任何严重代码问题,我们也增加了代码灰度与发布流程。新功能上线首先进行灰度验证,验证通过之后上线至全量,同时预留新旧切换模块,新功能一旦出现问题,随时切换到旧版,保障服务正常。

服务治理平台搭建完毕之后,我们的系统服务架构大概如下:

高可用性的定义:

系统可用性(Availability)的定义公式为:Availability=MTBF/(MTBF+MTTR)×100%

从公式可看出,提高MTBF或降低MTTR都能提高系统可用性。

那么问题就来了,怎么通过这两个指标来提升系统可用性呢?

那我们就列一下都哪些问题会影响MTBF,可能的因素有:1,服务器硬件,2,网络,3,数据库,4、缓存,5,依赖资源,6,代码错误,7,突发大流量高并发只要解决好这些问题,就可以避免发生故障从而提升MTBF。

根据这几个问题,那新闻客户端目前是怎么做的呢?

第一个服务器硬件故障:如果一台服务器硬件故障会造成这台服务器上服务不可用,如下图结构,目前系统是LVS+HA上挂多台MEM服务器,LVS+HA上有生命探测系统,如果检测到异常,会从负载均衡及时摘除,避免用户访问到问题服务器造成故障。

第六条代码错误:以前也发生过因代码错误造成线上故障血淋淋的案例,而且很多问题都是低级错误导致,所以我们也重点在这方面做了大量工作。

首先要规范化代码开发、发布流程,随着业务增长,系统稳定性可靠性要求也日益增高,开发团队人员也在增加,已经不能像那种刀耕火种、单打独斗的原始社会状态,所有操作都需做到标准化、流程化。

我们完善了:开发环境,测试环境,仿真环境,线上环境及上线流程。工程师在开发环境自测完毕,提到测试环境,测试部门来进行测试,测试通过之后,提至仿真环境,进行仿真测试,测试通过提至上线系统,上线系统需经过管理员审批通过之后方可以上线,上线完毕进行线上回归验证,验证通过,代码上线流程关闭,如验证失败,通过上线系统一键回滚至上线前环境。

那针对第七条:突发大流量高并发我们是怎么处理的呢?

遇到这么情况我们就需要一个完善的流量调度系统及服务熔断限流措施。如果突发大流量来自于某些特定区域,或都集中在某个或多个IDC机房,可以把负载较高的机房流量切分一部分至流量空闲机房,一起来分担压力。但是如果切分流量不足以解决问题,或所有机房流量负载都比较高,那我们只能通过熔断限流来保护整体系统服务,首先按照业务模块优先级进行排序,按照低优先级的业务进行依次降级,如果业务降级仍不能解决问题,那就开始依次停用低优先级业务,保住重要功能模块继续对外服务,极端情况下业务降级不能挺过流量高峰,那我们就采取限流保护措施,暂时舍弃少部分用户,来保住大部分高价值用户的可用性。

解决这个问题主要有以下几点:1,发现故障,2,定位故障原因,3,解决故障

这个三点同等重要,首先要及时发现故障,其实出现问题了并不可怕,可怕的是我们很久都没有发现问题,造成大量用户流失这才是最严重的。那么怎么来及时发现故障呢?

监控系统是整个系统环节,乃至整个产品生命周期中最重要的一环,事前及时预警发现故障,事后提供详细的数据用于追查定位问题。

一般而言一个完善的监控系统主要有这五个方面:1.系统资源,2.服务器,3.服务状态,4.应用异常,5.应用性能,6,异常追踪系统

1,系统资源监控

2,服务器监控

服务器的监控,主要是监控各个服务器,网络节点,网关,等网络设备,的请求响应是否正常。通过定时服务,定时去ping各个网络节点设备,以确认各网络设备是否正常,,如果哪个网络设备出现异常,则发出消息提醒。

3,服务监控

4,应用异常监控

主要有异常超时日志,数据格式错误,等

5,应用性能监控

6,异常追踪系统

我们目前线上使用的主要监控系统如下:

尽管使用了HTTPS技术,部分邪恶的运营商,会在HTTPS之前拦一刀,使用DNS污染技术,让域名指向的他们自己服务器,进行DNS劫持。

这个问题不解决,即使HTTPS的话也不能从根本上解决问题,仍然会有很多用户的访问出现问题。轻则对产品不信任,重则直接导致用户无法使用产品,导致用户流失。

那么根据第三方数据,对于鹅厂这样的互联网公司来讲,域名解析异常的情况到底有多严重呢?每天鹅厂的分布式域名解析监测系统在不停地对全国所有的重点LocalDNS进行探测,鹅厂域名在全国各地的日解析异常量是已经超过了80万条。这给业务带来了巨大的损失。

通过新闻APP端的日志监控分析发现:有1%-2%的用户存在DNS解析异常及接口访问不通的情况。

DNS异常,及无法访问接口

无形中造成大量用户流失,特别是在业务飞速发展的时期对业务的体验造成了非常大的损害。

那么有没有一种技术上的方案,能从根源上解决域名解析异常及用户访问跨网的问题和DNS劫持呢?

HttpDNS基于Http协议向DNS服务器发送域名解析请求,替代了基于DNS协议向运营商LocalDNS发起解析请求的传统方式,可以避免LocalDNS造成的域名劫持和跨网访问问题,解决移动互联网服务中域名解析异常带来的困扰。

THE END
1.美发教学烫发技巧教程线上课程让技术更有价值免打理烫发00:00/00:00 美发教学 烫发技巧教程 线上课程 让技术更有价值 免打理烫发 拳击那点事发布于:江西省2024.10.18 00:00 +1 首赞 美发教学 烫发技巧教程 线上课程 让技术更有价值 免打理烫发https://news.sohu.com/a/817657269_100114195
2.好发型设计今日好发型电影设计教程一、好发型在线设计教程介绍 5月29日,广州动物园一只剪”了齐刘海的狮子火了,视频中,这头狮子一身黄色毛发,不过额头上的毛居然朝下耷拉着,像是梳了齐刘海。而正常的雄狮额头的毛往往是直立向上长的。动物园的工作人员表示:它自己打理的!我们不敢剪!大概是因为广州空气湿度大,毛发耷拉下来了。当天,广州动物园官https://edu.xinpianchang.com/article/baike-271601.html
3.发型设计与脸型搭配软件哪个好?发型设计与脸型搭配app发型设计男士女生app是可以根据脸型设计发型的软件,汇聚各种各样的潮流发型,支持自定义搜索发型,智能拍照在线换发型,剪发前试一试快速了解什么样的发型最适合自己,还有最新的资讯报道有利于用户实时把握时尚动态!http://www.downcc.com/k/faxingshejiapp/
4.Maya课时:Xgen发型制作进阶上视频教程翼狐网致力于推动CG艺术发展,为用户提供海量的CG视频教程,本节内容主要介绍高级影视角色《流浪骑士》全流程制作中文教程【良心教程】之课时43:Xgen发型制作进阶-上.https://www.yiihuu.com/v_129834.html
5.RE从零开始的异世界装逼横溪交警中队民警迅速赶往现场处置。经调查了解,驾驶员李某没来得及吃早饭,到了中午时间肚子感觉很是饥饿,于是拿起手机点起外卖,操作手机过程中一分神,结果轿车方向偏移撞上了护栏。李某被认定承担事故全部责任。-- 其实,在这个快节奏的社会里,压力已经成为了每个人生活中不可或缺的一部分。无论是普通人还是明星,都http://www.ylyc.cn/adaplp78862.htm
6.高端图片怎么制作?高端图片制作教程步骤模板修改完成后,点击编辑器右上角即可一键将设计好的作品保存到本地了,完全不懂设计的人也可以快速搞定高端图片制作。 常规高端图片的标准尺寸是多少? 高端图片根据使用场景和设计需求不同,尺寸大小也会有所不同,一般高端图片尺寸为( * )其中线上展示高端图片分辨率一般为72dpi(像素/英寸),线下印刷(高端图片)分辨率https://m.chuangkit.com/searcheo/course/3715.html
7.沙宣剪发技术(发型教程)尤其是脖颈部分。举个例子来说.如果脖颈处的头发向上长或是向外翘的话,那么在脖颈处剪的很轻很平的发型就不适合。永远都不要逆着头, 发的自然长势做发型。任何特征的发际线都会显示出不同程度的难度, 而这将是你在发型设计中的主要因素,也会成为正确形式的工作基础。 在发旋处永远都要坚持按照其自然的落点https://tnmfw.com/fxlxdp/jiaocheng/2qe35.html
8.保姆级教程!手把手教你做超实用的插画组件库(附组件库下载)我认为 UI 设计师是最应该去建立的,在我们线上接触的 banner、功能页、启动页、海报等等,很多都可以用到插画去设计,不管是针对于在公司还是针对于自己私下接私活都是一大利器,可以让你高效的完成甲方的任务,更大程度保证设计的统一性以及输出的质量。(相信大家都遇到过到处找插画素材拼凑 banner 的时候吧,有了个人https://www.uisdc.com/illustration-component-library
9.quinovare.com/xxxr84821217<!DOCTYPE/802721.shtml成人发型教程视频网站免费 36.94MB 69%好评91人) 被塞跳蛋去健身挨草健身房 熟妇的奶头又大又长奶水50p 午夜激情三级片欧美网站 01.46MB 52%好评231人) 农夫云涩涩涩 free性日本老熟妇 嗯啊哦好爽好舒服用力使劲操我视频 11.28MB 36%好评3581人) 狠狠操麻豆网 午夜福利男女免费 美女裸交视http://quinovare.com/xxxr84821217%3C!DOCTYPE/802721.shtml
10.网上有哪些推荐的络腮胡子修剪教程?针对络腮胡子修剪教程,常见的推荐来源包括医院诊所、专业美容博主、男士理发店和线上服装和美容平台。每种推荐来源都有其独特的优势和特点,可以根据个人的需求和喜好进行选择。不论选择哪种来源,学习正确的络腮胡子修剪技巧都是非常重要的,这样可以确保获得满意和理想的修剪效果。https://www.tuimy.com/news/174718.html
11.3D时装设计软件CLOStandalone5.2.382.30312破解版含图文教程CLO Standalone5破解版是一款功能强大的3D虚拟时装设计软件,这款强大的软件为用户提供强大的计算机图形技术,旨在帮助用户以最先进最优化的方式来模拟各种织物的物理特性,并非常精准的展示出它们在现实生活中所产生的不同垂坠感,精细的呈现不同面料带来的不同视觉效果,新版本5.0已经到来,它带来了全新的功能,包括GPU模拟http://www.sd173.com/soft/7855.html
12.2019级空中乘务专业人才培养方案求,组织开展教学活动、安排教学任务的规范性文件,是实施专业人才培养和开 展质量评价的基本依据。 本方案以习近平新时代中国特色社主义思想为指导,深入贯彻党的十九大精 神,按照全国教育大会部署,落实立德树人根本任务,坚持面向市场、服务发展、 促进就业的办学方向,健全德技并修、工学结合育人机制,构建德智体美劳全面https://www.hnwmxy.com/jiaoxuekeyan/jiaoxuebiaozhunfabu/rencaipeiyangfangan/2019re/2019/1023/5252.html
13.单色背景两人双重曝光教程PS溜溜问答 > 平面设计 > 单色背景两人双重曝光教程PS 单色背景两人双重曝光教程PS浏览量:395PS两人合照教程 PS两人合影教程 PS抠图教程两人分开 PS头像互换两人教程 PS把两人合成一人教程 怎么PS两人合影照片 PS把两人变瘦教程 PS两人互换发型教程 为您找到1500条“单色背景两人双重曝光教程PS”相关问题https://www.3d66.com/answers_relation/relation_1411866_81.html
14.线上直播技巧教程培训课件20240328.pptx线上直播技巧教程培训课件CATALOGUE目录直播基础知识线上直播技巧与策略直播内容策划与运营策略线上直播技术实现与操作指南线上直播风险防控与法律法规遵守案例分析与实战演练01直播基础知识直播是一种实时的、互动性强的在线视频传输方式,主播通过直播平台向观众展示内容,观众可以实时观看、评论和互动。直播定义根据内容形式可https://m.renrendoc.com/paper/321249894.html
15.www.vita361.com/mokslip56442.html据介绍,在材质选择与制造工艺上,萤石智能锁同样亮点突出。它采用全金属机身与钢化玻璃面板的完美结合,不仅坚固耐用,而且时尚美观。数字键盘采用磨砂质感设计,透过率高,操作简便且不易留下指纹痕迹,即便是老年人也能轻松看清并操作。 在安全防护方面,萤石智能锁采用了先进的指纹识别技术和人脸3D结构光识别技术,结合深度双https://www.vita361.com/mokslip56442.html
16.www.zhilitong.net/moken86051.html3月8日电 香港《大公报》8日刊文说,连日来,国际上不时传出对“新普京”的强烈呼唤。普京注定会调整,但无论怎么“变”,恐怕都很难令他的“对手”高兴。||。 伊格纳蒂耶夫伯爵空军基地位于保加利亚第二大城市普罗夫迪夫附近,是目前美国与保加利亚共同使用的四个军事基地之一。4月20日至5月11日,保加利亚和美国联https://www.zhilitong.net/moken86051.html
17.化妆师工作计划最后,需要重点掌握常用化妆技巧。这包括如何选择合适的底妆、配色技巧、画眼线、修眉、打造唇妆等等。只有掌握这些技巧,才能让自己的化妆技能更上一层楼。 总之,学习化妆需要不断努力和坚持。通过制定学习计划、找到合适的教程、参加化妆课程、不断练习和自我完善,可以让自己的化妆技巧得到有效提高。在学习过程中,需要始终https://www.yjbys.com/gongzuojihua/2014/4367873.html
18.如何制作美发短视频赚钱(怎么制作美发短视频)如何赚钱在开始制作美发短视频之前,首先要确定主题和风格,主题可以根据自己的专长和兴趣来选择,比如发型设计、发型教程、美发技巧分享等,风格则要根据自己的特点和观众喜好来定位,可以是清新自然、时尚潮流、简约大方等。 2、准备设备和工具 制作美发短视频需要准备相应的设备和工具,如手机、相机、三脚架、灯光设备、美发工具等http://www.ixiaozhu.net/post/183001.html
19.人脸融合H5活动制作实践教程文档中心人脸融合适用于线上短期广告营销、品牌推广、演出票务、游戏等互动传播场景。 典型案例包括:人民日报“全民换装照”、人民网“我的年代照”、OPPO 新品星空紫礼盒宣传“就要这样紫”等。 常见接入方式 确定活动主题,主题类型一般有换装、年代照、换发型等其他个性化主题。在 H5 活动中用户可通过拍照或上传正面清晰人像https://cloud.tencent.com/document/product/670/42650
20.全网知识付费网课资源:瑜伽会员全网知识付费网课资源瑜伽会员-社群教程目录持续更新 全网知识付费网课资源 一、瑜伽会员,课程介绍: 瑜伽健身会员,拥有市面主流瑜伽、健美、健身、塑身、美型、美体、美妆的热门课程,内容超6000G,专业人士的详细视频讲解与实操示范,适合零基础小白与专业人士进阶,无论是提升自我形体、形零基础减脂塑形象的人士,还是有志https://www.dklx.com/15274.html