通过代码学习熔断器
本文是学习熔断器后的一些总结,之前就对微服务相关的东西进行一些了解,其中熔断器肯定是需要了解的。
为什么需要熔断器呢?
分布式系统中经常会出现某个基础服务不可用造成整个系统不可用的情况, 这种现象被称为服务雪崩效应。为了应对服务雪崩,一种常见的做法是手动服务降级
(将一些不重要 或 不紧急的服务或任务进行服务的 延迟使用 或 暂停使用)。而Hystrix(熔断器)的出现,给我们提供了另一种选择。
本文是学习熔断器后的一些总结,之前就对微服务相关的东西进行一些了解,其中熔断器肯定是需要了解的。
为什么需要熔断器呢?
分布式系统中经常会出现某个基础服务不可用造成整个系统不可用的情况, 这种现象被称为服务雪崩效应。为了应对服务雪崩,一种常见的做法是手动服务降级
(将一些不重要 或 不紧急的服务或任务进行服务的 延迟使用 或 暂停使用)。而Hystrix(熔断器)的出现,给我们提供了另一种选择。
单元测试在一定意义上能够保证代码的质量,用以衡量软件工程的质量,帮助我们规避重构的风险。
每一个单元测试代表着一个业务逻辑,修改代码后,运行单元测试,就能帮助我们确定新代码会不会影响已有的业务逻辑,可以降低线上的风险和测试的问题。
文中有感于卓老板聊科技,以及科学思维课上所提到的科学指导性知识,常年听知识,有时间可将其收纳起来,做成思维导图形式的东西,方便自己,同时也分享出来。
希望在田野,科学在人间。
bufio 包实现了缓存IO。它包装了 io.Reader 和 io.Writer 对象,创建了另外的Reader和Writer对象,它们也实现了 io.Reader 和 io.Writer 接口,不过它们是有缓存的。
ReadLine
可以读取单独的行,一般读文件的时候,我就使用它,但由于缓存的问题,造成使用上出了些问题。
stringSlice转换——无需内存copy,这是之前写过的一篇文章,可以将结构体,byte,string以指针这种形式达到转换的作用,效率非常高效,可以说是黑魔法
。
而问题也就是出现在这里了。在使用过程中,我出现了sweep increased allocation count
错误。
每到节假日期间,一二线城市返乡、外出游玩的人们几乎都面临着一个问题:抢火车票!虽然现在大多数情况下都能订到票,但是放票瞬间即无W票的场景,相信大家都深有体会。尤其是春节期间,大家不仅使用12306,还会考虑“智行”和其他的抢票软件,全国上下几亿人在这段时间都在抢票。“12306服务”承受着这个世界上任何秒杀系统都无法超越的QPS,上百万的并发再正常不过了!笔者专门研究了一下“12306”的服务端架构,学习到了其系统设计上很多亮点,在这里和大家分享一下并模拟一个例子:如何在100万人同时抢1万张火车票时,系统提供正常、稳定的服务。