当前位置:K88软件开发文章中心编程资讯编程资讯20 → 文章内容

美团点评智能支付核心交易系统的可用性实践

减小字体 增大字体 作者:华军  来源:华军资讯  发布时间:2019-2-18 3:16:36

③ 可以用影子数据表来隔离流量,但是需要注意磁盘空间,建议如果磁盘剩余空间不足70%采用其他的方式隔离流量。④ 外部调用可能需要Mock。实现上可以采用一个Mock服务随机产生和线上外部调用返回时间分布的时延。压测工具上,核心交易这边使用美团点评开发的pTest。1.故障恢复要快之快速定位定位需要靠谱的数据。所谓靠谱就是和要发现的问题紧密相关的,无关的数据会造成视觉盲点,影响定位。所以对于日志,要制定一个简明日志规范。另外系统监控、业务监控、组件监控、实时分析诊断工具也是定位的有效抓手。1.故障恢复要快之快速解决要解决,提前是发现和定位。解决的速度还取决于是自动化的、半自动化的还是手工的。核心交易有意向搭建一个高可用系统。我们的口号是:“不重复造轮子,用好轮子。”这是一个集成平台,职责是:“聚焦核心交易高可用,更好、更快、更高效。”美团点评内部可以使用的用于发现、定位、处理的系统和平台非常多,但是如果一个个打开链接或者登陆系统,势必影响解决速度。所以我们要做集成,让问题一站式解决。希望达到的效果举例如下:工具介绍HystrixHystrix实现了断路器模式来对故障进行监控,当断路器发现调用接口发生了长时间等待,就使用快速失败策略,向上返回一个错误响应,这样达到防止阻塞的目的。这里重点介绍一下Hystrix的线程池资源隔离和信号量资源隔离。线程池资源隔离优点使用线程可以完全隔离第三方代码,请求线程可以快速放回。当一个失败的依赖再次变成可用时,线程池将清理,并立即恢复可用,而不是一个长时间的恢复。可以完全模拟异步调用,方便异步编程。缺点线程池的主要缺点是它增加了CPU,因为每个命令的执行涉及到排队(默认使用SynchronousQueue避免排队),调度和上下文切换。对使用ThreadLocal等依赖线程状态的代码增加复杂性,需要手动传递和清理线程状态(Netflix公司内部认为线程隔离开销足够小,不会造成重大的成本或性能的影响)。信号量资源隔离开发者可以使用Hystrix限制系统对某一个依赖的最高并发数。这个基本上就是一个限流策略,每次调用依赖时都会检查一下是否到达信号量的限制值,如达到,则拒绝。优点不新起线程执行命令,减少上下文切换。缺点无法配置断路,每次都一定会去尝试获取信号量。比较一下线程池资源隔离和信号量资源隔离线程隔离是和主线程无关的其他线程来运行的;而信号量隔离是和主线程在同一个线程上做的操作。信号量隔离也可以用于限制并发访问,防止阻塞扩散,与线程隔离的最大不同在于执行依赖代码的线程依然是请求线程。线程池隔离适用于第三方应用或者接口、并发量大的隔离;信号量隔离适用于内部应用或者中间件;并发需求不是很大的场景。RhinoRhino是美团点评基础架构团队研发并维护的一个稳定性保障组件,提供故障模拟、降级演练、服务熔断、服务限流等功能。和Hystrix对比:内部通过CAT(美团点评开源的监控系统,参见之前的博客“深度剖析开源分布式监控CAT”)进行了一系列埋点,方便进行服务异常报警。接入配置中心,能提供动态参数修改,比如强制熔断、修改失败率等。总结思考王国维 在《人间词话》里谈到了治学经验,他说:古今之成大事业、大学问者,必经过三种之境界:第一种境界昨夜西风凋碧树。独上高楼,望尽天涯路。第二种境界衣带渐宽终不悔,为伊消得人憔悴。第三种境界众里寻他千百度,蓦然回首,那人却在,灯火阑珊处。核心交易的高可用目前正在经历第一种:高瞻远瞩认清前人所走的路,以总结和学习前人的经验做为起点。下一阶段,既然认定了目标,我们会呕心沥血孜孜以求,持续发展高可用。最终,当我们做了很多的事情,回过头来看,相信会对高可用有更清晰和深入的认识。敬请期待我们下一次的分享~~

上一页  [1] [2] [3] 


美团点评智能支付核心交易系统的可用性实践