分布式支付中心设计,配置中心@RefreshScope注意事项
对接上游支付接口,定义一个BaseHandler,其中getPayType用于获取当前Handler的支付类型。支付的核心逻辑和公共处理都在BaseHandler,个性化的处理交给各个实现类。 public abstract class B...
对接上游支付接口,定义一个BaseHandler,其中getPayType用于获取当前Handler的支付类型。支付的核心逻辑和公共处理都在BaseHandler,个性化的处理交给各个实现类。 public abstract class B...
springcloud家族有很多不错的组件,其中Netflix开源的微服务网关zuul也被整合到了其中。Zuul 担任着网关的角色,对发送到服务端的请求进行一些预处理,比如安全验证、动态路由、负载分配等。 Zuul 的核心是 Filters...
定义数据库CRUD后的处理接口 有时候我们在数据库的CRUD操作后,需要做一些缓存的清理或缓存的重置;比如select操作后添加到缓存,update、insert、delete操作后需要清理缓存。我们定义一个接口AfterCrud用于实现C...
缓存穿透及解决方法 访问一个不存在的key,缓存不起作用,请求会穿透到DB,流量大时DB会挂掉。 解决方案通常有两种: 采用布隆过滤器,使用一个足够大的bitmap,用于存储可能访问的key,不存在的key直接被过滤; 访问key未在DB查...
网站架构1.0(All in one) 公司创业初期还处于移动互联网不太盛行的时代,整个业务系统一开始只有PC Web,所以只有一个API网关工程main——基于spring mvc,当时底层的业务系统还只有一个工程——openapi,作为...
Elastic Job是一个不错的分布式定时任务调度开源组件。使用它实现定时任务简单又方便,网上有很多种做法,今天记录一下我在项目中的一种简单使用方式。在介绍具体做法之前,先给出Elastic Job的官网,没用过想了解的可以前往: htt...
如何生成不重复的伪随机数? 相信这个问题,很多java研发人员都遇到过,或许在面试的过程中,或许在实际的项目开发中。既然是随机,就避免不了不重复,任何算法都实现不了真正的随机,只能够在一定程度上防止高频度的碰撞和相似度,从而给人感觉一个随机...
有时候我们在操作数据的时候会更改多张表的数据,我们往往期望的结果是要么都修改成功,要么都修改失败。这个时候就会使用数据库事务,spring/spring boot框架对事务有较好的支持。随着业务的不断拓展、用户量、数据量不断的扩张,网站总会...
电商网站经常打折促销,什么双十一、双十二、六幺八、八幺八的。最常见最直接的就是对商品打折,比如A商品9.8折、B商品8折、C商品5折。而且有的商品打折还有库存限制,比如C商品打5折,但只限前50名。一般电商网站每做一次促销对系统来说都是一次...
最近在做一个利用微信公众号引流的活动,其中有一个需求点是当系统收到用户回复的任意关键词两分钟后,系统会给用户发送一张带有二维码的图片,用户长按识别二维码会跳转到活动的落地页。这是一个典型的“事件驱动型延时处理”需求,触发条件时收到用户消息,...