SLB优雅的滚动发布

又是新的一年了,距离上一次写文章已经过了2个多月了,作为新年的第一篇文章,对最近使用SLB的心得进行总结,作为以后备注,也可以让各位读者少走一点坑。

阅读更多

Redisson lua脚本执行踩坑之神秘的引号

最近项目需求,在redis中需要执行批量删除指定key,并且要支持原子操作,那么当然只有自己写lua脚本了。

阅读更多

Eureka 优雅下线,上线

项目中使用SpringCloud时,Eureka作为注册中心基本是标配了,作为AP的一个实现策略,基本能够满足项目的需要。在微服务的世界中,每个模块发布是常有的事,那么如何安全地发布呢?

阅读更多

SpringCloud2.0.1--Ribbon 重试监听

在SpringCloud中,通常使用的是客服端发现作为负载均衡。SpringCloud全家桶中提供了Ribbon作为客户端负载的优秀框架。
服务器之间的调用直接使用Feign进行调用。Feign默认使用了Ribbon作为负载的实现。
通常来说,进行服务拆分后,每个服务之间都需要支持幂等性,因为可能由于网络的原因,一个接口可能会被重试多次,如果没有做好幂等性控制的话,容易出现数据重复等异常情况。
比如将Ribbon的连接和读取时间设置为2s,最大调用次数为4次,则有如下配置:

阅读更多

SpringBoot 优雅的进行单元测试

随着项目的功能不断增多启动项目需要的时间就越来越长,如果每个功能都从Controller入口进行测试,不仅费时而且费力。
那么这时候单元测试就体现出非常大的优势了,对所有的接口进行测试,可以非常快速的发现问题,而且方便调试。而且通过编写单元测试来发现代码结构的不合理性,通常来说代码结构越合理,单元测试写的越方便。
假设有这个场景,我们的项目启动需要30s,共有A、B、C、D这四个service,A依赖B、C这两个service,D Service为需要自动注入属性值的Service。这里使用线程睡眠的方式模拟启动延迟:

阅读更多