PHP实现一致性哈希算法
我是借助一个三方库实现的 有时间再详细挖一挖这个库的源码 composer require flexihash/flexihash $hash = new Flexihash(); // 添加节点 add$hash->addTargets(['cache-1', 'ca…
一致性哈希算法原理
业务场景近年来B2C、O2O等商业概念的提出和移动端的发展,使得分布式系统流行了起来。分布式系统相对于单系统,解决了流量大、系统高可用和高容错等问题。功能强大也意味着实现起来需要更多技术的支持。例如系统访问层的负载均衡,缓存层的多实例主从复制备份,数据层的分库分表等。我们以负载均衡为例,常见的负载均…
AKF扩展立方体
AKF扩展立方体(Scalability Cube),是《架构即未来》一书中提出的可扩展模型,这个立方体有三个轴线,每个轴线描述扩展性的一个维度,他们分别是产品、流程和团队:X轴 —— 代表无差别的克隆服务和数据,工作可以很均匀的分散在不同的服务实例上;Y轴 —— 关注应用中职责的划分,比如数据类型…
yield探索
内存观察 迭代输出一个从1开始一直到10000的数组,步进为1。 随手一写 <?php $start_mem = memory_get_usage(); $arr = range( 1, 10000 ); foreach( $arr as $item ){ echo $item."\…
TCP三次握手的性能提升
服务端SYN_RCV优化当服务端收到 SYN 包后,服务端会立马回复 SYN+ACK 包,表明确认收到了客户端的序列号,同时也把自己的序列号发给对方。此时,服务端出现了新连接,状态是 SYN_RCV。在这个状态下,Linux 内核就会建立一个「半连接队列」来维护「未完成」的握手信息,当半连接队列溢出…
TCP介绍
TCP协议介绍TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的、可靠的、 基于IP的传输层协议。首先来看看OSI的七层模型和互联网协议族TCP/IP按粗粒度的四层划分 在OSI七层模型中,每一层的作用和对应的协议如下 TCP/IP的模型每…
PHP魔术方法备忘
PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods),这些方法在PHP中充当了举足轻重的作用。 魔术方法包括: __construct(),类的构造函数__destruct(),类的析构函数__call(),在对象中调用一个不可访问方法时调用__callStatic(),用…
雪花ID科普
分布式ID的特点全局唯一性不能出现有重复的ID标识,这是基本要求。递增性确保生成ID对于用户或业务是递增的。高可用性确保任何时候都能生成正确的ID。高性能性在高并发的环境下依然表现良好。 分布式ID方案唯一ID可以标识数据的唯一性,在分布式系统中生成唯一ID的方案有很多,常见的方式大概有以下三种:依…
Supervisor使用详解
简介 Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过 fork/exec 的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在 supervisor 的配置文件中,把…
Jenkins安装
docker镜像版本docker pull jenkins/jenkins:2.277.3-lts-centos7 注意使用的镜像是 jenkins/jenkins 不是 jenkins 安装命令docker run -d -u root -p 8080:8080 -p 50000:50000 -v…