内容简介:参加了各种高并发架构分享,却不适合小小的系统,怎么才能如大牛那样介于牛A和牛C之间?PS:我们搭建了一个
来这里找志同道合的小伙伴!
作 者 简 介
刘慎宝 —— 京东财务研发部架构师
主要负责财务研发部的基础组件和各系统技术方案支持,10+年互联网研发专家。
2010年入职京东并历经几乎所有618和双11挑战。精通高并发服务搭建和业务建模,曾多次主导京东财务系统架构升级和数据库升级,主导结算魔方重构,订单台账优化、价保优化等重大研发项目,对财务系统有深刻理解。
参加了各种高并发架构分享,却不适合小小的系统,怎么才能如大牛那样介于牛A和牛C之间?
> > > > 引言
系统搭建,小有小的灵活,大有大的难处,从小到大,系统该怎么打怪练级呢?
> > > > 首先:守住你的底线
-
底线?单体实例的最大处理量
-
单体实例 ?泛指单个应用实例、单个缓存实例,单个存储实例
-
底线从何而来 ?压测
-
底线恒定不变 ?随着服务的架构变化随时调整
如:一个实例【java实例+DB】的处理峰值为500/秒,在缓存化数据后处理峰值可以调整的5000/秒,但是缓存异常情况下,系统降级,那峰值必须要回到500/秒。
-
守不住底线? 打怪如同碰见一个大 BOSS,经由负载均衡一个个秒掉你的服务,最终全局502
-
怎么守住底线 ?限流、限流、限流!
-
限流 :一个系统稳定的最底层的护城河,永远不要轻视它。
线上的情况千变万化,交易峰值你可以规划,但是 异常流量 永远不可预测
如我们的限流拆分:
-
调整线上限流依据?监控,分流监控
监控的力度也是根据限流层次同步细化
PS:我们搭建了一个 流量分析平台 ,通过接入系统,可以通过自定义规则定义流量拆分报表,并且实现精细化流量控制
> > > > 其次:不断提高底线
> > > > 提高单位处理量
优化数据结构和使用缓存等手段,提升单体实例的最大吞吐量。
常用手段:
-
网站静态流量分流:页面静态化、APP本地缓存、CDN分发
-
数据缓存化:配置性数据本地预加载缓存,热点数据 redis 预加载缓存[注意:缓存也是吞吐量阀值和容量阀值]
-
流程简化:收单流程和生产流程拆分
-
请求流量清理:启用gzip压缩、ajax清理掉多余的数据信息
> > > > 无状态化
高内聚,低耦合,将应用+DB打包成一个对外可扩展的服务模块
标准有三:
-
对内依赖数据的多源化
-
对上游实现无依赖化
-
对下游实现数据的自动传递
价保系统流程处理中心样例:
> > > > 最后:统筹变化,横向扩展
1、 监控为眼
统筹变化,首先要对系统的流量情况了若指掌,是通过监控系统来实现的。
2、 流程优化
只有简单的业务流程才是稳定可靠的,将业务流程和接单流程拆分,针对性配置资源,才能实现性能和资源的灵活安排。
针对现在的微服务化,要根据系统所处阶段灵活拆分,任何过度设计都会导致开发量和运维量飙升,最终影响系统的稳定性。
3、 横向扩展
集群化计算中心【容器+DB】,横向扩容缩容, 外部依赖异常可灵活切换。
> > > > 系统练级标准
1、 单实例不死
通过DB限流和应用限流,保证单实例在大流量下冲击下,会出现服务性能变差,但是不会死掉。
2、 分类型限流
在细化监控基础上,针对不同业务不同流程配置不同的限流阀值,保证异常流量可监控,可阻截,高效的提供正常服务。
3、 集群扩展【DB+实例】
将DB和实例打包成一个集群,可以根据服务流量动态调整扩容缩容。
该集群具备标准:对上游通过接口扩容,数据流内部自我驱动流转,对下游主动同步。
4、 外部依赖无感化
简而言之就是外部依赖接口挂掉不影响系统的核心功能, 通过将相关依赖数据预抓取实现热数据备份,保证接口挂掉后自我降级,保证服务的可用性。
每个阶段都是应该随着系统的流量的增加,逐级优化,反之就是过度设计,导致研发和线上运维成本等上升,反而影响系统稳定性。
脑洞
那些越级挑战的高手,是怎么炼成的?唯装备牛、微操6尔
那系统呢?越级挑战?设备牛[IBM小型机],国字队也
疑问
你的系统下一步该怎么去做呢?
---------------------END ---------------------
下面的内容同样精彩
点击图片即可阅读
京东技术 ∣ 关注技术的公众号
长按,识别二维码,加关注
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 【译】前端练级攻略
- 系统练级攻略 | 京东架构师倾情解读
- 程序员练级攻略(2018):前端基础和底层原理
- 程序员练级攻略(2018):前端性能优化和框架
- 程序员练级攻略(2018):技术资源集散地
- AI公司的练级之道:如何更具扩展性?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。