▲ 点击上方“架构精进之路”关注公众号
回复“01”领取「程序员进阶大礼包」
这是「架构精进之路」公众号的第76篇原创文章
求从客户端发出,到达Proxy Layer(执行一些公共的逻辑,如逻辑、流控、审计等),完成后,发往App Layer(执行具体业务逻辑),执行完毕后,发向Data Laye(进行数据持久化)。
1、防御性设计(Defensive Design)
例如,在Android开发中使用到的Monkey Test就是用于这样的目的。
2、边界情况(Edge Case)
比较常见的例如,闰年情况、跨日情况等边界。
3、防误措施(Mistake Proofing)
4、解耦(Decoupling)
再引申一下,解耦的作用就在于复用,把所有的高内聚功能独立成一个个模块,然后就可以像乐高积木一样根据调用方的实际需求进行组装。
5、冗余(Redundancy)
6、重试(Retry)
当链路中的其中一个服务故障率异常的时候,那重试风暴便开启了,因为重试为服务器带来额外的开销和线程的占用,然后其他新来的请求又形成排队,这样的话就形成了类似的DDos恶性事件。
7、冷备(Cold Standby)
8、熔断(Derating)
9、容错(Error Tolerance)
-
failfast 更多指的是快速失败,避免线程积压导致系统滚雪球式崩溃。
-
failover 指的是失效转移。
-
failsafe 指的是失效安全。
-
failback 指的是失效自动恢复,将故障实例切换到备实例。
10、失效安全(Fail safe)
例如:我们使用token进行安全登录也是一种失效安全的体现,如果token失效了(如时间过期),用户是无法登录的,因为正常登录需要token有一种约束因素,这种因素就是时间。如果时间过了,代表这种约束因素不存在或者不再有效了,登录功能就不能正常工作了。
11、优雅降级(Graceful Degradation)
在微服务框架中,一般会使用Hystrix的@HystrixCommand或Feign的@FeignClient对服务进行声明,然后为每个服务配置相应的fallback类,最终结合起来进行服务降级。
12、耐用性(Durability)
例如数据,为什么我们一定要持久化到数据库,因为就是要借助数据库硬件各种维度的耐受性。
监控实际上是为了更好的主动防御,一套完善的告警监控系统,能够快速通知开发与运维,开发侧能够完成紧急修复并能够协同运维进行快速部署。
? 福利:关注公众号回复关键字:重构,即可免费获取《重构:改善既有代码的设计》
·················· END ··················
关注公众号,免费领学习资料
十年研发路,大厂架构师,CSDN博客专家
专注架构技术学习及分享,职业与认知升级
坚持分享接地气儿的干货,期待与你一起成长
「架构精进之路」专注架构研究,技术分享
本文分享自微信公众号 – 架构精进之路(jiagou_jingjin)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
{{o.name}}
{{m.name}}
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/71293.html