Redis

Redis学习笔记(十六) Sentinel(哨兵)(下)

允我心安 提交于 2020-10-10 12:55:39
消失了一段时间,我又回来啦。不多说,继续把哨兵看完。 检测主观下线状态 默认情况下,Sentinel会以每秒一次的频率向所有与他创建了命令连接的实例(主从服务器以及其他Sentinel)发送PING命令,并通过实例返回的PING命令回复来判断实例是否在线。 实例对PING命令的回复可以分为两种情况: 有效回复:实例返回+PONG、-LOADING、-MASTERDOWN三种回复的其中一种。 无效回复:实例返回除+PONG、-LOADING、-MASTERDOWN三种回复之外的回复或者规定时间内没有收到任何回复。 指定Sentinel判断实例进入主观回复的时间长度是由Sentinel配置文件中的down-after-milliseconds选项指定的。 如果没有收到master服务器的回复,Sentinel就会将master标记为主观下线,并在master所对应的实例结构的flags属性中打开SRI_S_DOWN标识。 检查客观下线状态 当Sentinel将一个主服务器判断为主观下线之后,为了确认这个主服务器是否真的已经下线,它会向同样监视这一主服务器的其他Sentinel进行询问,看他们是否也认为主服务器已经进入下线状态,当Sentinel从其他Sentinel那里接收到足够数量的已下线判断后,Sentinel就会将主服务器判定为科幻下线,并对主服务器执行故障转移操作。 使用

3 年经验的 Java 后端妹子,横扫阿里、滴滴、美团,整理出这份厚厚的 8000 字面经!

守給你的承諾、 提交于 2020-10-10 08:39:47
自序 这次面试的公司有一点点多,主要是因为毕业后前两份工作找的都很草率,这次换工作就想着,emm,毕业三年了,该找个工作好好沉淀几年了。 先说下这次面试的结果吧: 到 hr 面的:阿里、美团、滴滴、金山云、每日一淘、火币、宜信、旺店通、黄包车、linkedMe 其他: 小米 (四轮技术面,大概4个小时的样子,大数据部门,不知道是不是四面的负责人嫌弃我木有大数据的经验,不过我确实木有哈) 京东 (电话面试一轮+现场两轮,面试完快中午一点了,说是让我先回家,后面让hr 电话联系我 一周后一面的面试官问我还考虑京东不,如果考虑的话,就进行后续。当时已经有了更好的offer,就说不考虑了,希望以后有机会再合作,所以没有后续了) 头条 (二面完gg,我的算法确实菜哈,然后leetcode又只刷过10道题,去面头条,确实有些作死的节奏,实在是对不起帮我内推的石冲大佬) 爱奇艺 (电话面试一轮+现场两轮,到技术终面了,这个怪我,面试官也一直很忙,然后我俩就互相一直改面试时间,最后定的那个面试时间我还迟到了一个小时,还是时间到了才给hr 打电话说一个小时后才能到 虽然我知道这样做非常不好,但是当时情况比较复杂,自己根本忙不过来,一直在面试,也没有办法中途给hr 打电话说一下。一天面两家,两家离的还比较远的小伙伴吸取一下教训。 我本来是想约第二天下午的,hr 就想当天,结果就晚上7:40开始二面了

Kong 扩展jwt插件增加黑名单验证

喜你入骨 提交于 2020-10-10 08:04:13
jwt-blacklist 扩展 官方jwt插件 ,保留token过期及签名验证, 增加根据jti查询redis黑名单数据库,实现单一登录和强制下线。 扩展功能 增加可配置在header中添加userId 增加可配置的在转发到上游服务前,删除header中的jwt 优化配置参数,删除从cookie获取token,支持从url和header获取token,增加redis配置,增加默认值。 验证payload是否含有jti,没有返回401。 验证jti是否在黑名单,若在返回401和对应的value。 注意 此插件依赖官方jwt插件读写数据库,不能单独使用 插件支持解析如下jwt格式 { "sub": "k4usr2v6an", "user_name": "球场", "origin": { "status": "AccountVerification", "msg": "账号已验证", "users": [ { "userId": "k4usr2v6an", "type": "MOBILE", "account": "130******71", "mobile": "130******71", "loginName": "球场", "nickName": "球场" } ] }, "scope": [ "read", "write" ], "exp": 1590635506,

干货!一文看Doris在作业帮实时数仓中的应用&实践

牧云@^-^@ 提交于 2020-10-10 04:18:37
数据驱动未来。在大数据生态中,数据分析系统在数据创造价值过程中起着非常关键的作用,直接影响业务决策效率以及决策质量。Apache Doris作为一款支持对海量大数据进行快速分析的MPP数据库,在数据分析领域有着简单易用、高性能等优点。 9月20日,Apache Doris组织了一场线上Meetup,作业帮受邀参加,并带来了一场《Doris在作业帮实时数仓中的应用&实践》的主题分享。 现场分享精华 大家下午好。下面我来介绍下Doris在作业帮实时数仓中的应用与实践。 这次的分享主要分三个主题 1、首先是所在团队的业务与背景介绍 2、其次会介绍下基于Doris,作业帮的查询系统是如何构建的,以及主要解决的问题 3、未来的规划 我所在团队是作业帮大数据团队,主要负责建设公司级数仓,向各个产品线提供面向业务的数据信息,如到课时长、答题情况等业务数据以及如pv、uv、活跃等流量类数据,服务于拉新、教学、BI等多个重要业务线。 在数仓体系中,大数据团队主要负责到ODS-DWS的建设,从DWS到ADS一般是数仓系统和业务线系统的边界。 在过去,由于缺失有效、统一的查询系统,我们探索了很多模式来支持各个业务线发展。 有些业务线对大数据相关技术比较了解,熟悉spark等计算系统,可以自己处理计算。因此会选用kafka 接收数据后使用spark计算的模式来对接大数据团队

这三年被分布式坑惨了,曝光十大坑

有些话、适合烂在心里 提交于 2020-10-09 18:50:30
作者 | 悟空聊架构 来源 | 悟空聊架构 (ID:PassJava666) 转载请联系授权(微信ID:PassJava) 本篇主要内容如下: 主要内容 前言 我们都在讨论分布式,特别是面试的时候,不管是招初级软件工程师还是高级,都会要求懂分布式,甚至要求用过。传得沸沸扬扬的分布式到底是什么东东,有什么优势? 借用火影忍术 风遁 · 螺旋手里剑 看过 火影 的同学肯定知道 漩涡鸣人 的招牌忍术: 多重影分身之术 。 这个术有一个特别厉害的地方, 过程和心得 :多个分身的感受和经历都是相通的。比如 A 分身去找卡卡西(鸣人的老师)请教问题,那么其他分身也会知道 A 分身问的什么问题。 漩涡鸣人 有另外一个超级厉害的忍术,需要由几个影分身完成: 风遁·螺旋手里剑。 这个忍术是 靠三个鸣人一起协作完成的。 这两个忍术和分布式有什么关系? 分布在不同地方的系统或服务,是彼此相互关联的。 分布式系统是分工合作的。 案例: 比如 Redis 的 哨兵机制 ,可以知道集群环境下哪台 Redis 节点挂了。 Kafka的 Leader 选举机制 ,如果某个节点挂了,会从 follower 中重新选举一个 leader 出来。(leader 作为写数据的入口,follower 作为读的入口) 那 多重影分身之术 有什么缺点? 会消耗大量的查克拉。分布式系统同样具有这个问题,需要几倍的资源来支持。

开发十年面试过300名程序员,捣鼓出2020年最新版Java面试题大全值得你收藏(文末附参考答案)

人走茶凉 提交于 2020-10-09 15:29:00
前言 本套Java面试题大全总共分为以下这十三个模块: Java基础知识面试题 Java异常面试题 JVM面试题 Spring面试题 Spring MVC面试题 Spring Boot面试题 Spring Cloud面试题 MyBatis面试题 Redis面试题 Dubbo面试题 Tomcat面试题 ZooKeeper面试题 Netty面试题 一、Java基础知识面试题 1、Java概述 何为编程? 什么是Java? jdk1.5之后的三大版本? JVM、JRE和JDK的关系? 什么是跨平台性?原理是什么? Java语言有哪些特点? 什么是字节码?采用字节码的最大好处是什么? 什么是Java程序的主类?应用程序和小程序的主类有何不同? Java应用程序与小程序之间有那些差别? Java和C++的区别? Oracle JDK 和 OpenJDK 的对比? 2、基础语法 ①. 数据类型 Java有哪些数据类型 switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上 用最有效率的方法计算 2 乘以 8 Math.round(11.5) 等于多少?Math.round(-11.5)等于多少 float f=3.4;是否正确 short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗 ②. 编码

gitlab 安装、配置、清空、卸载、重装

拥有回忆 提交于 2020-10-09 11:46:45
20200702 自行搭建 git 服务器后,如何管理总是一个麻烦事,所以,还是要安装一个 gitlab 按照 gitlab 官网安装 ce 版,其实应该是很简单的事情,步骤也很少。 正常情况下,安装、配置、运行,再学习 gitlab 使用 没有想到我折腾了一大圈!来回卸载、重装、重新配置!几乎所有该出现的问题,全都遇见了一轮! 我的环境: virtualBox 虚拟机 ubuntu Server 1804 gitlab 官网 https://about.gitlab.com/install/#ubuntu gitlab ce 版本安装步骤 https://about.gitlab.com/install/#ubuntu?version=ce 清华大学开源软件镜像站 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ Gitlab Community Edition 镜像使用帮助 https://mirror.tuna.tsinghua.edu.cn/help/gitlab-ce/ 1、 安装 安装必要的依赖 sudo apt-get install -y curl openssh-server ca-certificates 非必须 ( 如果开始学习或者后续需要使用邮箱开放注册的话,请安装 ) sudo apt-get install

四面阿里成功定级P6,月薪36K,分享面经(含面试题答案)

旧街凉风 提交于 2020-10-09 11:18:40
阿里技术岗位要求及体系图: 好多人对阿里巴巴技术岗的体系结构及级别的技术要求设置不太清楚,想去面试也不知道面试什么级别的岗位,下面说说阿里的技术体系又是一个怎么样的水平划分! 阿里P6(技术主管) 工作要求: 能独立解决问题,制定系统的技术实现方案,考核会涉及部分技术深度。 技能要求: 除P5的技能外,还需掌握以下技能,以下技能至少需要做到熟悉。 架构设计,运维能力,操作系统。 附图: 技术四面面试题如下 一面(问了数据结构、jvm、锁等): 自我介绍和项目 HashMap底层如何实现? Hash一致算法? 说说HashMap和ConcurrentHashMap的区别?treemap和HashMap的区别? java的内存分区? java对象的回收方式,回收算法? CMS和G1了解吗? CMS解决什么问题,说一下回收的过程? CMS回收停顿了几次? java栈什么时候会内存溢出,java堆呢,说一种场景? 集合类如何解决这个问题(软引用和弱引用),讲下这个两个引用的区别? java里的锁了解哪些? synchronized锁升级的过程(偏向锁到轻量锁再到重量级锁),分别如何实现的,解决的是哪些问题? Tomcat的基本架构是什么? 什么是类加载器? 说说双亲委派模型机制? GC的机制是什么?GC算法和回收策略? 未来的职业规划? 二面(线程、数据库、缓存、协议等): 讲一下项目

线上故障处理手册

北慕城南 提交于 2020-10-09 07:09:51
摘要 通常处理线上问题的三板斧是 重启-回滚-扩容 ,能够快速有效的解决问题,但是根据我多年的线上经验,这三个操作略微有些简单粗暴,解决问题的概率也非常随机,并不总是有效。这边总结下通常我处理应用中遇到的故障的解决方案。 原则 处理故障的时候必须遵循的一些原则 提早发现问题,避免故障扩散 故障的出现链路一般如下图所示 每一层都有可能出现问题,越底层出现问题,影响面越大。所以每一个层次都需要有相应的问题监控机制,这样越早发现问题,越能尽早解决故障,避免问题的扩散。比如服务依赖的一个数据库主库有问题了,如果等到用户报过来,这时候可能服务已经挂了几分钟了。再等你分析问题,解决问题,切换主备什么的,可能几分钟又过去了。影响访问比较大了。如果在数据库出问题时,就已经收到警报,迅速解决,可能没等用户报过来,问题解决了。 迅速广播 当收到一个P0警报,判断应用出现问题了,第一时间在组内广播。全部人员进入一级战斗状态,发现可能和其他依赖的服务/中间件/运维/云厂商有关,立即通知相关责任人,要求进入协同作战。 快速恢复 保留现场很重要,有助于发现root cause。但是发生故障了,必须要争分夺秒,不能为了保留现场浪费几分钟的时间去干什么dump内存,jstack线程状态的事。必须第一时间内先恢复服务,之后再根据当时监控数据,去找root cause 持续观察 为了解决问题,可能需要在线上进行了重启

redis入门学习笔记

拜拜、爱过 提交于 2020-10-09 06:39:09
1.redis简介 在我们日常的 Java Web开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题 。 可是一旦涉及大数据量的需求,比如一些商品抢购的情景,或者是主页访问量瞬间较大的时候,单一使用数据库来保存数据的系统会因为面向磁盘,磁盘读 /写速度比较慢的问题而存在严重的性能弊端,一瞬间成千上万的请求到来,需要系统在极短的时间内完成成千上万次的读/写操作,这个时候往往不是数据库能够承受的,极其容易造成数据库系统瘫痪,最终导致服务宕机的严重生产问题。 为了克服上述的问题, Java Web项目通常会引入NoSQL技术,这是一种基于内存的数据库,并且提供一定的持久化功能。 Redis和MongoDB是当前使用最广泛的NoSQL,而就Redis技术而言,它的性能十分优越,可以支持每秒十几万此的读/写操作,其性能远超数据库,并且还支持集群、分布式、主从同步等配置,原则上可以无限扩展,让更多的数据存储在内存中,更让人欣慰的是它还支持一定的事务能力,这保证了高并发的场景下数据的安全和一致性。 Redis 在 Java Web 中的应用 Redis 在 Java Web 主要有两个应用场景:存储缓存用的数据;需要高速读/写的场合使用它快速读/写; 在日常对数据库的访问中,读操作的次数远超写操作,比例大概在 1:9 到 3:7