背景
在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。缓存的目的是提升系统访问速度和增大系统能处理的容量,可谓是抗高并发流量的银弹;而降级是当服务出问题或者影响到核心流程的性能则需要暂时屏蔽掉,待高峰或者问题解决后再打开;而有些场景并不能用缓存和降级来解决,比如稀缺资源(秒杀、抢购)、写服务(如评论、下单)、频繁的复杂查询(评论的最后几页),因此需有一种手段来限制这些场景的并发/请求量,即限流。
摘要: Venus Boot是Spring Boot的瘦身版,基于Spring Boot结合项目实战抽离,以中间件思想即插即用的开源项目集合。
上次写了一篇文章叫Spring Cloud在国内中小型公司能用起来吗?介绍了Spring Cloud是否能在中小公司使用起来,这篇文章是它的姊妹篇。其实我们在这条路上已经走了一年多,从16年初到现在。在使用Spring Cloud之前我们对微服务实践是没有太多的体会和经验的。从最初的开源软件云收藏来熟悉Spring Boot,到项目中的慢慢使用,再到最后全面拥抱Spring Cloud。这篇文章就给大家介绍一下我们使用Spring Boot/Cloud一年多的经验。
摘要: 本篇文章的场景是做调度中心和监控中心时的需求,后端使用TDDL实现分表分库,需求:实现关键业务的查询监控,当用Mybatis查询数据时需要从主库切换到备库或者直接连到备库上查询,从而减小主库的压力,在本篇文章中主要记录在Spring Boot中通过自定义注解结合AOP实现直接连接备库查询。
摘要:本文结合最近网关项目代码重构,总结介绍了ThreadLocal
是一种多线程间并发访问变量
的解决方案,用空间换时间,并用代码示例说明,还介绍了什么是单例以及单例的推荐两种写法分别是静态内部类
写法和dubbl check instance
的写法,扩展介绍了其它懒汉,枚举,饿汉的写法等。
摘要 本篇文章主要介绍使用mybatis-gennerator快速生成代码,但是每次生成的Mapper或接口都会覆盖自定义的Mapper,因此介绍了Mapper接口的继承方式解决,还介绍了如何使用分页工具使用pagehelper结合Mybatis快速实现分页。
Mybatis-Generator的下载地址:https://github.com/mybatis/generator/releases
摘要 本篇文章主要介绍在Spring Boot中使用Fastjson代替Jackson,以及实现自己的自定义异常和扩展Spring MVC全局异常解析器,以及为了给前端测试提供接口文档Spring Boot集成swagger,以及集成swagger遇到问题的处理。
Jackson最主要的原因是Jackson在处理对象之前的循环嵌套关系时不便。什么是对象间的循环嵌套?比如A有一个List,B对象里又有一个A对象,当然返回A对象的Json字符串时,如果是Jackson就会发生异常,因为Jackson天生不具备处理这种关系的能力,而Fastjson正好具备了这种能力。
如果你用的是 Jackson,可以使用相应的注解来支持对象间的循环嵌套。可以百度Jackson循环嵌套。
摘要: 接着上一篇《Spring Cloud Zuul遗失的世界(二)》,本文主要介绍Netflix Zuul core模块的Filter链的设计和Fifter Loader和Filter Manager相关代码的设计与分析。
摘要: 接着上一篇《Spring Cloud Zuul遗失的世界(一)》,ZuulController继承了ServletWrappingController,将当前应用中的ZuulServlet直接包装为一个Controller,暴露为入口访问,在本篇文章中介绍etflix-zuul-core的代码Zuul的执行的生命周期等。
com.netflix.zuul.http.ZuulServlet是ZuulFilter链执行的入口,通过service方法,提取请求到RequestContext,然后通过调用ZuulRunner,依次按顺序执行每种类型的Filter,完成整个Filter的生命周期,架构图如下所示。