负载均衡(Load Balance):指将负载(工作任务)进行均衡,分摊到多个处理节点上。负载均衡是一个统一的流量入口节点,映射了多个处理请求的映节点,入口节点将请求任务分发到不同的处理节点,实现分治。
互联网应用服务为了能满足大流量请求处理,通常会集群部署,使用负载均衡来分担单台服务器的压力,避免单点故障。
负载均衡(Load Balance):指将负载(工作任务)进行均衡,分摊到多个处理节点上。负载均衡是一个统一的流量入口节点,映射了多个处理请求的映节点,入口节点将请求任务分发到不同的处理节点,实现分治。
互联网应用服务为了能满足大流量请求处理,通常会集群部署,使用负载均衡来分担单台服务器的压力,避免单点故障。
设计模式(十二):责任链模式(Chain of Responsibility)
生活或工作中经常会遇到一种情境,即要完成或处理某件任务时,需要经过层层传递到某一层级才能得到处理。
例如,加薪审批,直接的小组长可能并没有权限,需要向上报批,可能需要经过好几层到副总级别才得到处理。例如,击鼓传花游戏,花在多个人之间传递把大家连接起来,鼓声落,谁持有花谁就喝酒。
这种情境在软件设计中也是存在的,多个对象之间相互引用而形成一条链,最终链中的某一个对象处理了任务,而客户端并不需要知道具体是谁处理的,对象也不需要知道任务具体来自谁, 这就是责任链的最简单模型。
Spring Boot 2系列(五十二):Spring Statemachine 状态机详解与应用
状态机由基于事件或计时器的触发器驱动。可以通过发送事件、监听状态机的操作或请求当前状态来与状态机交互。
Spring Statemachine 是 Spring 提供的将状态机应用于 Spring 应用程序的框架。可以与 Spring IoC 无缝集成,可将 Bean 与状态机关联。
Spring Boot 2系列(五十一):状态设计模式实现简单的工作流
做软件开发的,经常会碰到流程性的业务需求,最常见的是工作流类型的需求。例如审批流程,下单支付流程。每个节点的每个状态分别由有相应权限的角色人处理。
实现流程性业务需求,通常会使用工作流引擎或使用状态流的方式来实现。常见的开源的工作流引擎有 Activity,Flowable。
Spring Boot 2系列(五十):Spring AOP 实现动态数据源切换
项目可能会有多个数据源,例如读写分离至少有两个数据库,或一个主库多个从库,或一个系统里面不同业务拆分有各自的数据库,在使用时需要确定使用正确的数据源。
Spring 多数据源实现方式大概有2种,一种是新建多个 MapperScan 扫描不同 Mapper 包,另一种是继承 AbstractRoutingDataSource 实现动态路由。
本篇是基于 Spring AOP 实现数据源动态路由,多个 MapperScan 扫描不同的 Mapper 包的方式可参考 Spring Boot 2实践系列(三十九):Spring Boot 2.x + Mybatis + Druid + Common Mapper 配置多数据源
Spring Boot 2系列(四十九):Spring AOP 实现统一记录请求和响应日志,解密并重设置请求入参值
在实际开发中,可能需要打印方法的入参和返回的数据以帮助出现问题时可快递定位.
常规的做法在方法中的业务处理之前使用 Logger 打印方法入参,在业务处理之后打印结果数据,这样就会在很多方法中存在重复代码。
像打印日志这类跨多个业务和模块的需求,可以通过 Spring AOP 来统一实现,完全省略了方法中手动添加 Logger 的操作。
Spring Boot 2系列(四十八):Spring AOP详解与应用
Aspect-oriented Programming (AOP:面向切面编程) 提供另一种思考程序结构的方式来补充(增强) 面向对象编程(OOP)。
OOP 中模块化的关键单元是类,倾向于采用封装、继承、多态等概念,将一个个的功能在对象中来实现。而在 AOP 中模块化的单元是 切面,切面使关注点(例如事务管理)模块化,可以跨越多种类型和对象。
Spring AOP 框架是 Spring 的核心组件之一。Spring IoC 容器不依赖于 AOP,但 AOP 是对 Spring IoC 的补充,以提供功能强大的中间件解决方案。
Spring Boot 2系列(四十七):Spring AOP 实现API接口处理请求耗时监控
本篇文章算是 Spring Boot 2实践系列(四十六):API接口请求限制之AOP与拦截器实现 的下篇,也是基于拦截器和 AOP 两种方式实现对 API 接口请求响应的耗时进行统计,也是对涉及的知识点学习和巩固。
开发任何一个系统,都应当对 API 接口响应时长进行监控以了解系统性能,帮助判断性能瓶颈(当然很多小公司或小系统并没有这个意识,或有这个意识但没有落地实行)。
Spring Boot 2系列(四十六):Spring AOP与拦截器实现API接口防刷
暴露在公网服务 API 通常需要做防刷机制,防止恶意请求,维护系统的稳定。
API 接口防刷前后端配合使用。后端实现主要有 拦截器方式 和 使用 AOP 对控制层(Controller)进行切面编程的方式。
Spring Boot 2系列(四十五):RestTemplate 源码分析与自定义请求和拦截器
Saas 项目分布式微服务架构,服务调用使用的是 RestTemplate,并且对 RestTemplate 的 Request 请求进行了自定义,做个记录。
自定义 Request 有很多作用。例如自定义请求实现安全认证,自定义请求拦截器实现负载均衡或请求代理等,可以非常灵活的做些定制化。
RestTemplate 相关文章:Spring Boot 2实践系列(二十一):RestTemplate 远程调用 REST 服务,Spring Cloud系列(四):客户端负载均衡 Ribbon。