新闻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.极客侠揭秘:植发与养发行业的常见骗局与防骗指南老人行骗乞讨,保安拿着喇叭紧跟播放,以防路人上当受骗 范竹视频 1跟贴 高压电线落地,该如何自救?为何不能逃跑? 科普六点半 6跟贴 讲真,是球网先动手的!!! 新媒体 论背景音乐的重要性!! 新媒体 旁边有个抢活的…怎么办?人都过去了? 新媒体 多喝热水,热水治百病! 新媒体 59跟贴 这滑的挺远的https://m.163.com/v/video/VUI6O4K42.html
2.我实名曝光,我真的太后悔了!我认为在这个价格里面真的就是 ,而且老师不怎么喜欢说话简直就是社恐人士的福音,所以全程没有推销一直都在安安静静的做头发,非常负责,我真的这么好的发型师我真的得要让全世界的人都知道! #上海发型设计 #上海剪发推荐 #上海发型师推荐 #上海发型师 #发型师推荐https://m.dianping.com/ugcdetail/229062759?sceneType=0&bizType=29&msource=baiduappugc
3.龙哥风向标20230411~20230418GPT拆解百万免费无资源广告下载设计师社区:例如站酷、Dribbble等 需要开发: 线上教学平台:如果公司没有现成的线上教学平台,可能需要开发一个用于发布课程、管丨理学员的线上教学平台。可以考虑使用Python或者其丨他适合的开发语言进行开发。 抖音,目前在布局小说漫画推广,申请方式分享 盈利点:利用抖音故事推广小说和漫画,可以通过申请方式分享,将自己https://blog.csdn.net/wizardforcel/article/details/135933078
4.坚果市场分析报告(精选6篇)全渠道模式通过结合互联网数字化运营重构消费体验,基于直接触达消费者的门店网络,实现消费者到店体验的优化,同时通过数字化平台分析消费者行为和偏好,更加有效地提高与消费者的互动交流能力,从数据到运营打通线上线下全渠道会员体系。随着坚果企业对全渠道布局的逐渐深化,线上线下将加速融合,品牌商在渠道打通和终端协同https://www.360wenmi.com/f/fileij9i5c25.html
5.混龄课程——幼儿园里别样的风景发现问题后,我们一边静静地等待,一边商讨对策。例如:带孩子们到各个区域参观、游戏,通过互动,他们发现了新游戏、新材料,时间久了,孩子们走得越来越远,能脱离班级老师的视线走进邻班、走到楼上、走进沙池、走到后操场,自主选择游戏,每个区域中都会有不同年龄、不同班级的幼儿参与游戏。https://fzzx.rdedu.net/Item/3562.aspx
6.www.ltsnzp.net/mokslip48429.html发布会上,厦门市科学技术局党组书记、局长孔曙光介绍,党的十八大以来,厦门市深入实施创新驱动发展战略,全市科技创新事业发生了系统性、格局性重大变化,科技创新对经济社会发展的支撑引领作用显著提升。期间,厦门市紧扣“4+4+6”现代化产业体系,累计引进30余家新型研发机构、培育176家未来产业骨干企业,90多项技术或产品http://www.ltsnzp.net/mokslip48429.html
7.发型设计换发型是一款线上模拟发型设计的app,用户可以在此app上随意更换自己的发型形象并导出,提前试发型不踩坑。 【功能特色】 【tony发型库】由传说中的tony老师打造的发型库,内含丰富的发型素材供选择,喜欢的可以收藏起来哦,快来体验吧~ 【秒换发型】上传照片进行即可试换发型,发型资源丰富,一键保存到本地。 【图片美化https://apps.apple.com/sg/app/%E5%8F%91%E5%9E%8B%E8%AE%BE%E8%AE%A1-%E8%AF%95%E5%8F%91%E5%9E%8B-%E5%8F%91%E5%9E%8B%E8%AE%BE%E8%AE%A1%E4%B8%8E%E8%84%B8%E5%9E%8B%E5%8C%B9%E9%85%8D/id1671744966?l=zh-Hans-CN
8.播映了…占个坑写分集影评,已更至大结局(古剑奇谭)剧评播映了…占个坑写分集影评,已更至大结局 这篇剧评可能有剧透 剧名:古剑奇谭类型:游戏改编剧天雷指数:★★★(最高五颗星)【开天辟地、雷动九天】适宜观看人群:只想看自家爱豆哪怕只在电视剧里转个圈都可以的明星粉,配音演员赵岭的声控粉丝,村口理发王师傅。数字媒体艺术、广播编导艺术、录音艺术、动画技术的大四https://movie.douban.com/review/6725499/
9.伪需求:互联网商业模式中最大的“坑”方法论满足了客户在某个体验点上的需求,是否会对其他环节产生影响呢?解决方案需要放回到整体场景中去,做“回归分析”,再次进行验证。 5.开始动手干 之前的四点只能帮助企业在规划设计期间避免一些明显的“坑”。但更重要的是着手开干,在做的过程中不断试错调整。https://www.iheima.com/space/2016/0417/155252.shtml
10.www.anqijituan.com/fancai13284279动漫新番线上看 一道手机dvd在线日韩 福利在线国产 俄罗斯美女插逼 亚洲野外露出白虎国产日韩 吃流血的逼视频 粗大龙根进出 我的大胸女友韩国伦理电影 wwwxxxxxxx菲律宾 麻豆乱婬一区二区三区m 又大又粗又硬日本 啊啊啊啊啊啊好疼app 朱可儿裸体大尺度图片 武侠古典综合区 swag,制服,在线观看站长工具 http://www.anqijituan.com/fancai13284279
11.无流海是否适合你?枚举法不忧虑被发型师坑枚举法不忧虑被发型师坑 对于本身是适合什么设计理念的头形,这事实上是很女士本身都比较迷惑的。总觉得如果寻找看起来还不错的头形,不论是哪些设计理念都觉得是适合本身的。像有一些女生,一直都是留长发,但突然截成短发后,发现也很适合本身,也挺漂亮的!因而头形就是要尝试,要多试才能够变化美。https://www.sxjwlkj.com/post/206.html
12.[剑阁]上古卷轴5新手指南并行开坑版!上古卷[剑阁]上古卷轴5新手指南并行开坑版! ,游侠NETSHOW论坛https://game.ali213.net/thread-3873575-1-1.html
13.看完视频避免踩坑发型师谢忠良化繁为简转圈圈一拇指设计师匠人看完视频避免踩坑发型师 谢忠良化繁为简 转圈圈一拇指 设计师 匠人精神 认知 发型 感受身体与心灵的对话 2024-10-22 00:00 · 0次播放 发布于:江西省 拳击那点事 +订阅 +1 评论 全部 还没有人评论过,快来抢首评 写评论相关推荐 查看更多精彩内容 https://m.sohu.com/a/818988469_100114195
14.不建议报的中专有哪些(你遇到过哪些坑人的民办中专)我去年遇到过一个这样的候选人,之前在市场部做经理,简历上基本上都是数据罗列,看上去很吸引人,但是他在中间加了一句话:“经我调查,贵公司存在问题,应该”,其实他本意是想吸引公司的注意,没成想自己挖了坑。 市场部总监让约来面试,果然跟我想的一样:夸夸其谈,浮想联翩,面试也就十几分钟市场部总监直接https://www.yanxiuedu.com/zhaoshengjianzhang/57751.html
15.[自翻][むらさきゆきや·溝口ケージ]14岁与插画家5(校对完成[译注:上一卷也说过,白砂对悠斗的称呼原文是一半用片假名写的先パイ(先辈),为表达这种俏皮感我处理成“仙贝”]「的确比起大冷天要好多了啊」剩下的两人也提着巨大的提包从机场里走出来。是横膈膜和茄子。横膈膜穿着橙色的背心,能从腋下和胸前的大开口里看到底下红色内衣。虽然肯定是以会被看到为前提设计的https://www.lightnovel.us/cn/detail/1007391
16.王笑宇:2021年文旅投资的“三大坑”切莫陷入通过基础的功能提升与主题多元细化体验,激活存量资产,提升产品吸引力与消费潜力;另一方面,通过政策突破,实现原有项目的经营性资产与非经营性资产分割,并对前者实施资产证券化改造,完善退出路径。 在传统渠道及服务线上化方面,不存在转化及提升的路径,只有孵化和投资的机会。因为两者属于不同时代、不同客群及不同消费https://www.meadin.com/zl/223806.html
17.主材避坑指南——灯光(无主灯设计)家居装修全屋就选择4000K的自然光吧;如果想稍微设计一下,建议餐厅用3500K,照在食物上,更让人觉得有食欲;https://go.cqmmgo.com/forum-148-thread-174751652771495888-1-1.html