一致性Hash介绍及使用场景 一、概述当单个节点(缓存服务器等)的能力达到上限,一般需要增加节点来打破瓶颈。在分布式系统中,扩容缩容操作极为常见。为了保证数据的均匀,一般情况会采用对key值hash,然后取模的方式,然后根据结果,确认数据落到哪台节点上。如:hash(key)%N,这的确实现了初步的分布式,数据均匀分散到了各个节点上,流量请求也均匀的分散到了各个节点;但出现以下情况:某台服务器突然宕机...
面试官:mysql的四种事务隔离级别 一、事务的四个特性在介绍mysql的四种隔离级别之前,我们首先要对事务有一个基本的了解。事务具有四个特征:原子性( Atomicity )、一致性( Consistency )、隔离性( Isolation )和持续性( Durability )。这四个特性简称为 ACID 特性。(1)原子性。事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做(2)一致性...
微服务之服务监控 服务监控在微服务改造过程中的重要性不言而喻,没有强大的监控能力,改造成微服务架构后,就无法掌控各个不同服务的情况,在遇到调用失败时,如果不能快速发现系统的问题,对于业务来说就是一场灾难。监控微服务调用前,首先你要搞清楚三个问题:监控的对象是什么?具体监控哪些指标?从哪些维度进行监控?下面就从这三个问题开始,一起来看看如何监控微服务调用。一、监控对象既然要监控,那么要监控哪...
哈希冲突的产生原因及解决方法 一、哈希冲突的产生原因哈希是通过对数据进行再压缩,提高效率的一种解决方法。但由于通过哈希函数产生的哈希值是有限的,而数据可能比较多,导致经过哈希函数处理后仍然有不同的数据对应相同的值。这时候就产生了哈希冲突。二、产生哈希冲突的影响因素装填因子(装填因子=数据总数 / 哈希表长)、哈希函数、处理冲突的方法三、解决哈希冲突的四种方法1.开放地址方法(1)线性探测按顺序决定......
线上MySQL的自增id用尽怎么办? MySQL的自增id都定义了初始值,然后不断加步长。虽然自然数没有上限,但定义了表示这个数的字节长度,计算机存储就有上限。比如,无符号整型(unsigned int)是4个字节,上限就是2^32 - 1。那自增id用完,会怎么样?表定义自增值id表定义的自增值达到上限后的逻辑是:再申请下一个id时,得到的值保持不变。mysql>createtablet(id...
面试官:谈谈如何防止消息丢失和消息重复 一、什么是分布式事务我们的服务器从单机发展到拥有多台机器的分布式系统,各个系统之间需要借助于网络进行通信,原有单机中相对可靠的方法调用以及进程间通信方式已经没有办法使用,同时网络环境也是不稳定的,造成了我们多个机器之间的数据同步问题,这就是典型的分布式事务问题。在分布式事务中事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。分...
Golang DES 加解密如何实现? 【导读】本文介绍了 DES 加密原理和作用,和 golang 中 DES 加密解密机制的相应实现。概念理解DES是以64比特的明文为一个单位来进行加密,并生成64比特的密文。由于它每次只能处理特定长度的一块数据,所以DES属于分组密码算法。cypto/des包提供了有关des加密的功能。模式由于分组密码算法只能加密固定长度的分组,所以当加密的明文超过分组密码的长度时,就需...
PHP 多任务秒级定时器的实现方法 1.描述最近在公司部署crontab的时候,突发奇想是否可以用PHP去实现一个定时器,颗粒度到秒级就好,因为crontab最多到分钟级别,同时也调研了一下用PHP去实现的定时器还真不太多,Swoole 扩展里面到实现了一个毫秒级的定时器很高效,但毕竟不是纯PHP代码写的,所以最后还是考虑用PHP去实现一个定时器类,以供学习参考。2.代码实现在实现定时器代码的时候,用到了P...
如何设计一个高并发系统? 1. 系统拆分 把系统拆分成多个子系统,每个系统连接一个数据库2. 缓存 大部分场景都是读多写少,大量读走缓存,写走数据库3. MQ 写压力过大的时候,让写请求积压在mq中,缓解数据库压力4. 分库分表 当数据库处理能力不够时 处理不过来mq的数据了5. 数据库读写分离 读请求压力过大时使用 ...
基于redis的keys、scan删除ttl为-1的key 前言:由于redis服务器最大使用内存为450MB,redis存储的部分key没有设置过期时间,内存淘汰策略为:noeviction 以上原因导致redis服务无法加载到新的key,迫使部分业务受阻。一、keys命令介绍redis KEYS 命令基本语法如下:redis 127.0.0.1:6379> KEYS PATTERN返回值符合给定模式的 key 列表 (A...
[精选]Mysql优化查询过程中的数据访问 1.TCP/IP协议中ARP及RARP协议的作用?ARP协议的作用是由IP地址查找对应的MAC地址RARP协议的作用正好相反,是由MAC地址查找对应的IP地址。2. 重放攻击,Smurf攻击,字典攻击,中间人攻击重放攻击指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。重放攻击可以由发起者,也可以由拦截并重发该数据的地方进...
[建议收藏]缓存雪崩的处理办法 1. Mysql优化器的参考标准mysql的索引是由mysql的server层的优化器决定的2.Memcache和Redis单个key大小限制Memcache单个key(变量)存放的数据有1M的限制Redis单个key(变量)存放的数据有1G的限制3.缓存雪崩的处理办法事前:进行系统压力测试,在负载均衡层做限流处理,过载丢弃请求或者进入队列事前:redis 高可用,主从+...
【精选】Mysql B-Tree和B+Tree的结构? 1.(int)'0xff'为什么是0?0xff是字符串 字符串转int 第一个是0 可以转换成功 xff转换失败2. PHP中10进制与16进制互转#10转16dechex(52558);或gmp_strval(52558,16);#16转10hexdec('0xcd4e');3. 通过aux命令查询cup和内存前十的记录ps-aux--sort-pcpu,...
钉钉查看员工UserID https://oa.dingtalk.com/contacts.htm#/contacts?_k=k119su这个UserID貌似是钉钉系统自动生成的?添加员工后,自动生成了。 如何设置员工的UserID-钉钉帮助中心您好,通讯录管理员添加员工时,可以自行设置UserID,如果UserID没有设定的话,系统会自动生成。UserID是员工在企业的唯一标识,一旦生成不支持修改。员工离开该企业,重新加入时UserID值可能会发生变化。注意:员工的UserID目前仅支持企业通讯录管理员查看,员工自己无法查看。管理
php -自定义机器人接入 企业内部有较多系统支撑着公司的核心业务流程,譬如CRM系统、交易系统、监控报警系统等等。通过钉钉的自定义机器人,可以将这些系统事件同步到钉钉的聊天群。说明 当前机器人尚不支持应答机制,该机制指的是群里成员在聊天@机器人的时候,钉钉回调指定的服务地址,即Outgoing机器人。由于消息发送太频繁会严重影响群成员的使用体验,因此钉钉开放平台对自定义机器人发送消息的频率作出以下限制:每个机器人每分钟最多发送20条消息到群里,如果超过20条,会限流10分钟。注意 如果你有大量发消息的场景(譬如系统监控报警)可以将这
php接入钉钉群机器人实现日志报错预警以及注意事项 1.进入智能群助手 2.添加机器人3.选择自定义:通过webhook接入自定义服务 4.设置关键字或加签:设置关键字后:发送内容中包含设置的关键字之一才会发送成功加签:请求时链接地址上加sign,如 $url = "{$url}×tamp={$time}&sign={$sign}";如果设置的敏感词,那么发送的消息中必须含有敏感词,才可以成功发送如果设置了验签,那么必须要计算签名才可以发送下面是验签方式的代码设置关键字 http:///www.codenong.com/cs1064
钉钉-消息类型与数据格式 本文介绍了钉钉消息通知类型和数据格式。工作通知消息:是以企业工作通知会话中某个微应用的名义推送到员工的通知消息,例如生日祝福、入职提醒等。群消息:是指可以调用接口以系统名义向群里推送群聊消息。普通消息:是指员工个人在使用应用时,可以通过界面操作的方式往群或其他人的会话里推送消息,例如发送日志的场景。任务类通知:是指需要发送一条任务提醒给员工,比如审批任务等。参数说明:名称类型是否必填示例值描述msgtypeString是text消息类型。文本消息类型为:text。contentString是月会通知消
git 查看某个文件的历史修改版本 有一个合作开发项目(git仓库),突然发现多了一个名为Untitled-1.html文件,一看就知道是无用文件。心想,谁这么不小心。想知道谁、什么时间添加的的某个文件,有以下几个方法:首先,切换到你要查看的分支。1. git log filename首先第一个想到的自然是查日志,git log file_name 会显示这个文件的修改记录。如果要具体看改了什么,找到对应的commit_id,然后 git show commit_id。果然,是一个叫rock的家伙提交的。2. git blame filen