热点数据调度 - 使用大顶堆实现优先队列

最近做一个分布式对象云存储项目,中遇到”热点数据调度”的需求,觉得有必要做个记录。 需求 定时将下载次数最多的文件,冗余一份到最热门的10个节点上 把优先调度热点提供下载 这是一个典型的优先队列应用场景。我选择大顶堆(大根堆)作为基础实现。 堆 (heap)特性 二叉堆是一棵完全二叉树 堆中的某个节点的值总是不大于其父节点的值(最大堆,大顶堆) 相应地定义出最小堆,小顶堆 用数组存储二......

如何设计一个秒杀系统

秒杀系统本质上就是一个满足大并发、高性能和高可用的分布式系统… – 摘自 “如何设计一个秒杀系统” by 许令波 极客时间 架构原则 - 4要1不要数据量要尽量少请求的数据量要少: 数据经过服务器处理,压缩和字符编码,需要消耗CPU数据对系统的依赖要少: 减少服务器后台服务和数据库打交道,这些都要耗CPU 请求数要尽量少比如js,css资源文件,http请求要经过三次握手,连接请求,......

Gosig - 区块链共识算法

最近公司做共识机制改造,经过一番研究,决定采用gosig共识算法,过程虽然艰辛但是收获满满,这里记录一下。 感谢算法作者李沛伦先生的帮助。Gosig共识算法论文 https://arxiv.org/abs/1802.01315 Gosig共识算法,它是一种可扩展的基于拜占庭的共识算法,这个算法经过数学逻辑验证,改进了BFT共识协议,可以使同时参与区块生产的节点达上万个。在带宽为 2Mbps-......

golang实现一致性hash环及优化方法

一致性Hash原理一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得DHT可以在P2P环境中真正得到应用。 但现在一致性hash算法在分布式系统中也得到了广泛应用,研究过memcached缓存数据库的人都知道,me......
go

PHP7.2与PHP5.6的性能对比

服务器配置单核 Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz内存 1G系统 Centos 7gcc 版本 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) 安装./configure --prefix=/usr/local/php-7.2.0 --enable-opcache ./configure --prefix=/us......
PHP

认识OOM Killer - 记一次MySQL挂掉的领悟

国庆假期刚过,还在假期后遗症中。公司的内部测试服务器配的MySQL不给了,给我挂了好几次。 查看一下系统日志: tail -1000 /var/log/messages | grep mysqld 发现Out of memory: Kill process 129382 (mysqld) score 9 or sacrifice child Out of memory: Kill proce......

Zabbix监控TCP11种状态

tcp11种状态: SYN_SENT、SYN_RECV、LISTEN、LAST_ACK、ENSABLISHED、FIN_WAIT1、FIN_WAIT2、TIME_WAIT、CLOSING、CLOST_WAIT、CLOSE 在agent添加配置 vim /etc/zabbix/zabbix-agentd.d/tcp_status.conf UserParameter=TCP_STATUS[*......

Linux后台进程管理利器:supervisor

0. 简单介绍因为supervisor是c/s架构的,有一个主进程来管理多个子进程,同时提供==supervisorctl==工具来管理子进程。 1. 安装supervisor安装当然可以通过源代码安装。官网地址http://www.supervisord.org/ 也可以使用快捷的安装工具: easy_installyum install python-setuptoolseasy_ins......

Zabbix监控使用总结

Zabbix架构体系 Zabbix Server Zabbix Agent 数据库(独立) 安装参考:https://www.zabbix.com/download?zabbix=3.0&os_distribution=centos&os_version=7&db=mysql 安装源: rpm -Uvh https://repo.zabbix.com/zabbi......

使用JWT解决session跨域共享问题

JSON Web Token(JWT)是目前最流行的跨域身份验证解决方案。 跨域身份验证Internet服务无法与用户身份验证分开。一般过程如下。 用户向服务器发送用户名和密码。 验证服务器后,相关数据(如用户角色,登录时间等)将保存在当前会话中。 服务器向用户返回session_id,session信息都会写入到用户的Cookie。 用户的每个后续请求都将通过在Cookie中取出sess......