很多同学知道我在美团点评负责稳定性保障平台的研发,平台中的功能之一就有服务的熔断降级,提起熔断降级,大家可能熟悉的是Netflix的开源组件Hystrix,但是我们并没有在它的基础上进行二次开发,而是重新撸了一个,可能有人说,重复造轮子不是浪费时间吗?那如果造出的轮子更好用、跑的更快呢,所以不要怕造轮子,只有不断的创新,才有不断的进步。
首先看看为什么需要熔断降级呢?
服务的稳定是公司可持续发展的重要基石,随着业务量的快速发展,一些平时正常运行的服务,会出现各种突发状况,而且在分布式系统中,每个服务本身又存在很多不可控的因素,比如线程池处理缓慢,导致请求超时,资源不足,导致请求被拒绝,又甚至直接服务不可用、宕机、数据库挂了、缓存挂了、消息系统挂了...
对于一些非核心服务,如果出现大量的异常,可以通过技术手段,对服务进行降级并提供有损服务,保证服务的柔性可用,避免引起雪崩效应。
如果ServiceA调用ServiceD一直失败,或者失败率很高,就可以采用“一种机制”确保后续请求不会调用ServiceD,而是执行降级逻辑。
这里的这个机制就是熔断降级,熔断降级的实现原理也很简单,看下面这个图:
1、实时监控接口的健康值,在达到熔断条件时,自动开启熔断
2、开启熔断之后,如何实现自动恢复?每隔一段时间,释放一个请求到服务端进行探测,如果后端服务已经恢复,则自动恢复
当然了,具体实现,这里就不细讲了。
这里说下,为什么没用使用Hystrix进行二次开发,主要是有下面几点考虑:
1、内置的参数配置无法动态修改
2、复杂的代码设计,扩展新功能难度大
3、业务接入负责,方式不够人性化
4、压测时性能,令人担忧
通过自研,可以自由把控任何细节,和内部框架无缝集成。
给自己的星球做个广告,期待你的加入
虽然是付费,但绝对物超所值
网友评论
--------------------------------------------------------------------
哈,原来狼哥也是轮子哥!!佩服佩服...
对了,美团千亿级别那个招聘,加分项感觉要匹配很难啊。
--------------------------------------------------------------------
加分项规则,如下:
-------------------------
职位描述:
商家生态后台业务分析、架构设计、功能开发
商家生态后台服务质量保障工作:性能分析和优化、服务可用性、服务容灾、服务过载保护、服务降级
指导低级别的工程师,加强团队的人才培养和技术储备
攻克技术难点,快速解决线上故障
良好的沟通协作能力,卓越的自我驱动能力,跨组推动项目
岗位要求:
必须项
本科以上学历,扎实的计算机基础,优秀编码能力
3年以上Java开发经验,熟练掌握Java及面向对象设计开发,对Java技术有较深的研究
熟悉常见设计模式,熟练掌握Spring,MyBatis、jetty等流行开源框架
了解mysql应用场景,能够根据业务特点对表进行设计和优化
良好的业务分析、业务抽象能力,至少会用一款常用的工具对业务建模
加分项
设计并主导过每天千亿访问的、集群规模1000+台机器的大型在线并发系统,对向量时钟、paxos、NWR一致性分布式算法有深入研究和独立见解
主导过百T级别的数据无缝迁移、同城&异地数据容灾,对业界的两地三中心、异地多活、set容错等技术方案有深入研究,并清晰知道它们的应用场景
主导过大并发访问下几十个服务组成业务群降级方案,根据业务特性,保证最短关键路径的可用性,对常用降级方案(消息中间消峰、梯度限流、最少关键数据)等有最佳实践经验
熟悉安全领域常见攻击手段,了解黑产链条,有大量攻防实战经验,并形成自己的方法论
对jvm原理和机制有深入探究,能解决jvm产生一系列疑难杂症,关注jvm演进的方向,提交一些patch并被