一致性hash

假如我们有三台缓存服务器编号node0、node1、node2,现在有3000万个key,希望可以将这些个key均匀的缓存到三台机器上,你会想到什么方案呢?

我们可能首先想到的方案,是取模算法 hash(key)% N,对key进行hash运算后取模,N是机器的数量。key进行hash后的结果对3取模,得到的结果一定是0、1或者2,正好对应服务器node0、node1、node2,存取数据直接找对应的服务器即可,简单粗暴,完全可以解决上述的问题。

- 阅读剩余部分 -

消息队列MQ简介

消息队列,全称是:“MessageQueue”,很多时候我们也简称为:“ MQ”,本质就是一个保存消息的队列。

2024-07-08T11:58:39.png

允许不同的应用程序通过发送、和接收消息进行数据交换,从而实现系统解耦、提高系统可扩展性、和性能。

- 阅读剩余部分 -

幂等设计的8种实现方式

数学符号:f(f(f(x))) = f(x)
即无论操作执行一次还是多次,其效果始终如一,不会有差异。这就是幂等性。

什么是幂等性?

接口幂等性就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。比如:公交车刷卡,用户上车后刷码支付扣款成功,如果用户再次点击按钮刷卡并扣款成功,用户查询余额返发现多扣钱了,流水记录也变成了两条,这就没有保证接口的幂等性。因此,当你重复刷卡时,会提示:刷码重复。

- 阅读剩余部分 -

oauth2.0及oauth2-server 库在thinkphp中的使用

1.OAuth2.0

OAuth2.0 定义了四个角色

Client:客户端,第三方应用程序。
Resource Owner:资源所有者,授权 Client 访问其帐户的用户。
Authorization server:授权服务器,服务商专用于处理用户授权认证的服务器。
Resource server:资源服务器,服务商用于存放用户受保护资源的服务器,它可以与授权服务器是同一台服务器,也可以是不同的服务器。

- 阅读剩余部分 -

OAuth 2.0 Server 和 Client

OAuth 2.0 是一种授权框架,允许第三方应用以有限的权限代表用户访问资源。OAuth 2.0 是对 OAuth 1.0 的改进,简化了授权过程并增强了安全性。为了更好地理解 OAuth 2.0 的工作机制,我们需要了解 OAuth 2.0 Server 和 OAuth 2.0 Client 的角色和功能。

- 阅读剩余部分 -

PHP微信红包算法技术实现

微信红包最初在产品设计上有过很多思路,最初曾以多档次、按比例分配的方式,但最后大家试用下来发现还是随机才好玩。那种看到有人抢到 100 块,有人 0.01 元的快乐无以言喻。

最初的随机算法中,领取越早获得大额红包几率越高,为了避免抢红包变成一个拼手速的游戏,后来的随机算法也对随机范围区间进行了一定调整。

- 阅读剩余部分 -