Redis不止缓存!原来在微服务领域也做出了这么大的贡献

前言说到redis,可能大家的脑海中蹦出的关键词是:NoSQL、KV、高性能、缓存等。但今天的文章从另一个角度——微服务来展开。这篇文章的起因也是源自一次面试经历,在面试一位来自陌陌的候选人(就是那个交友的陌陌)时,他提到一点让我觉得很有意思,他说redis在陌陌被使用得非常广泛,除了常规的缓存外,某些场景下也当NoSQL数据库来使用,

转载 点赞0 阅读2 收藏0 评论0 23 天前

Redis深度探索:给dubbo贡献源码,做梦都在修bug

在之前的文章《Redis不止缓存!原来在微服务领域也做出了这么大的贡献》中,从一次面试经历中了解了redis可以在微服务中玩得这么溜,同时也从源码角度分析了dubbo的redis注册中心。最后得出了dubbo的redis注册中心不能用于生产的结论,其中原因有如下两点:使用了keys命令,会阻塞单线程的redis,keys执行期间,其他命令都得排队

转载 点赞0 阅读6 收藏0 评论0 23 天前

分布式一致性算法Paxos不容易理解和落地实现?那么Raft呢?

导语 | 对于很多工程人员来说,Paxos算法不容易理解和落地实现。因此斯坦福学者提出了一个更易理解和实现的共识算法Raft。本文主要介绍Raft的基本原理、算法流程以及和Paxos的区别。一、Raft算法背景在学术理论界,分布式一致性算法的代表还是Paxos。但是少数理解的人觉得很简单,尚未理解的觉得很难,大多数人还是一知半解。

转载 点赞0 阅读11 收藏0 评论0 23 天前

为了不写接口文档,我肝了个 IDEA 插件

前言写代码的快乐,在于通过一顿猛如虎的操作,实现了自己设计的逻辑流程。(也可能并不是很快乐!)这时候,你以为就可以关机么?还有接口文档没写呢!哈?开始进入无限 CV 模式,各种请求参数、必填非必填、请求返回示例!几分钟后……我要写个 IDEA 插件,以后再也不想手写文档了!

转载 点赞0 阅读3 收藏0 评论0 23 天前

MAT工具定位分析Java堆内存泄漏问题方法

一、MAT概述与安装MAT,全称Memory Analysis Tools,是一款分析Java堆内存的工具,可以快速定位到堆内泄漏问题。该工具提供了两种使用方式,一种是

转载 点赞0 阅读13 收藏0 评论0 23 天前

Spring面试中常问的FactoryBean与其他的Bean不同之处在哪?

前言在spring中FactoryBean绝对是一种神奇的存在,和BeanFactory经常混淆,而且成为面试过程中经常被问到的问题,其实FactoryBean和BeanFactory很好理解,掌握一定的技巧即可。

转载 点赞0 阅读9 收藏0 评论0 25 天前

全到哭!阿里最新Java面试核心知识总结成功助我收割9家大厂Offer

Java面试 Java作为编程语言中的NO.1,选择入行做IT做编程开发的人,基本都把它作为首选语言,进大厂拿高薪也是大多数小伙伴们的梦想。以前Java岗位人才的空缺,而需求量又大,所以这种人才供不应求的现状,就是Java工程师的薪资待遇相对优厚的原因所在。 但是随着这个从事行业的人数逐渐增多,行业竞争也越来越大,招聘的企业和程序员们都想招聘到自己需要的人才/找到自己理想的岗位;导致现在Java

转载 点赞0 阅读11 收藏0 评论0 2021-06-25

字节跳动成功4面通关!熬夜爆肝29天,疯狂刷题,终于圆了大厂梦!

写在开篇闲话(长话短说):今年的开端有些特殊,疫情的缘故对我们的生活造成了很大的影响,竞争力也是越来越大这对于一名求职者来说,更是添上了一堵“难墙”,尽管如此,我们也不能够错失机会,该抓住的就要抓住。提前做好准备,投简历、顺利面试,定会拿下心仪的offer,而我也总算取得自己想要的成功,字节跳动成功4面通关。

转载 点赞0 阅读90 收藏0 评论0 2021-06-15

领域驱动设计(DDD)理论与方法

DDD由来与优势软件架构设计的真正目的是解决软件复杂度带来的问题,软件复杂度由来主要由三方面:高并发场景下的对软件高性能要求、业务场景对软件高可用要求、持续变化的业务以及业务扩张和增加需求对软件扩展性的要求,除此外,对低成本、安全、软件规模也一定程度上增加了软件设计的复杂度。在解决每个复杂度维度上,分别有各自的应对解决方案

转载 点赞0 阅读21 收藏0 评论0 2021-06-15

这才是分布式事务的正确打开方式!

背景随着微服务的普及,分布式事务成为了系统设计中不得不面对的一个问题,而分布式事务的实现则十分复杂。阅读本文之前,需要你对数据库事务的

转载 点赞0 阅读29 收藏0 评论0 2021-06-10

硬核!Github星标百万,阿里首推JDK源码速成笔记我粉了

前言 面试造火箭,工作拧螺丝已经是现在很普遍的一个现象。这其中最出名的无疑就是多线程高并发了。说到多线程并发,想必大部分铁汁也就是在当初应付面试的时候才开始接触这玩意,感觉在工作中根本用不到这玩意,没必要深入了解。但其实你要想向更深层次进阶的话,多线程并发设计是你绕不开的一个点,其并发源码里的精髓也是我们提升自身水平的利器。 但现在大部分的程序员其实对多线程的原理、各种并发的设计原理都不是能清楚

转载 点赞0 阅读33 收藏0 评论0 2021-06-10

Spring Security框架中踢人下线技术探索

1.背景在某次项目的开发中,使用到了Spring Security权限框架进行后端权限开发的权限校验,底层集成Spring Session组件,非常方便的集成Redis进行分布式Session的会话集群部署。系统正式上线后,各个部署节点能够非常方便的进行集群部署,用户的Session会话信息全部保存在Redis中间件库中,开发者不用关心具体的实现,Spring Session组件已经全部集成好了。但是在系统的用户管理模块中,提供了对系统用户账号的删除功能以及禁用功能,针对这两个功能,需求方给出的具体

转载 点赞0 阅读3 收藏0 评论0 2021-06-10

基于Spring Cloud的全自动化微信公众号消息采集系统

前言由于公司业务需求,需要获取客户提供的微信公众号的历史文章并每天进行更新,三百多个公众号显然不能通过人工去每天查看,问题提交到了IT组。对于热爱爬虫的我肯定要盘他,之前做过搜狗的微信爬虫,后来一直致力于java web了,这个项目又重新燃起了我对爬虫的热爱,第一次使用spring cloud架构来做爬虫,历时二十多天,终于搞定。接下来,我将通过一系列文章来分享此次项目经历,并奉上源码供大家指正!一、系统简介本系统是基于Java开发,可通过简单配置公众号名称或微信号,实现定时或即时抓取微信公众号

转载 点赞0 阅读7 收藏0 评论0 2021-06-10

(Dubbo架构)基于MDC+Filter的跨应用分布式日志追踪解决方案

在单体应用中,日志追踪通常的解决方案是给日志添加 tranID(追踪ID),生成规则因系统而异,大致效果如下:查询时只要使用 grep 命令进行追踪id筛选即可查到此次调用链中所有日志,但是在 dubbo 分布式系统中,由于 tranID 底层存储在 ThreadLocal 中,由于应用分布在不同的机器中,无法跨应用共享,同一链路多个应用之间的 tranID 不一致,出现线上问题时,日志的排查就尤为棘手。先说结论:dubbo 分布式应用也可使用MDC进行分布式日志追踪,但是需要配合dubbo提供

转载 点赞0 阅读9 收藏0 评论0 2021-06-10

腾讯二面:MySQL的半同步是什么?

前言年后在进行腾讯二面的时候,写完算法的后问的第一个问题就是,MySQL的半同步是什么?我当时直接懵了,我以为是问的MySQL的两阶段提交的问题呢?结果确认了一下后不是两阶段提交,然后面试官看我连问的是啥都不知道,就直接跳过这个问题,直接聊下一个问题了。所以这次总结一下这部分的知识内容,文字内容比较多,可能会有些枯燥,但对于这方面感兴趣的人来说还是比较有意思的。MySQL的主从复制我们的一般在大规模的项目上,都是使用MySQL的复制功能来创建MySQL的主从集群的。主要是可以通过为服务器配置一个

转载 点赞0 阅读3 收藏0 评论0 2021-06-10

面试官:你平时是怎么用MySQL搭建多主一从源复制环境的?

问题描述:搭建过一主多从的环境,由于数据库数据一致性要求高,有些情景会搭建一主多从的架构,搭建多主一从的模式,相对来说适合数据整合,将多个业务的库整合到一起,方便做查询,也可以当做一个监控其他主库数据的作用。但是搭建这样的模式极易造成数据冲突,同步的库名一致,导致主从异常,同时也对网络并发提出一定的要求环境介绍:正常可以将数据库分别放在不同的服务器上,本文方便测试,以下三个数据库都放在了同一台服务器上IP:192.168.163.213306--主库 server_id:2933

转载 点赞0 阅读3 收藏0 评论0 2021-06-10

高可用角度观察RabbitMQ、Kafka、RocketMQ各自的实现思路

本文从高可用的角度观察一下 RabbitMQ、Kafka、RocketMQ,看看它们各自的实现思路。1. RabbitMQRabbitMQ 有 3 种部署模式:单机模式 普通集群模式 镜像集群模式单机模式与高可用完全没关系,咱就不说了,直接看看这2种集群模式。1.1 普通集群模式某一个 Queue 是在集群中的某一个 Broker 上,各个 Broker 会同步元数据,但不会同步 Queue 的消息数据。如果某一个 Broker 故障了,其中的 Queue 便无法使用。如果

转载 点赞0 阅读4 收藏0 评论0 2021-06-10

世界上三个伟大的发明:火,轮子,跟Kafka(kafka看这篇就够了)

有人说世界上有三个伟大的发明:火,轮子,以及 Kafka。发展到现在,Apache Kafka 无疑是很成功的,Confluent 公司曾表示世界五百强中有三分之一的企业在使用 Kafka。今天便和大家分享一下 Kafka 相关知识点,高性能、持久化、多副本备份、横向扩展......万字长文,做好准备,建议先收藏再看 !1、为什么有消息系统1. 解耦合2. 异步处理 例如电商平台,秒杀活动。一般流程会分为:1: 风险控制 、2: 库存锁定 、3: 生成订单 、4: 短信通知 、5: 更新

转载 点赞0 阅读2 收藏0 评论0 2021-06-10

老生常谈:基于注解的springboot+mybatis的多数据源组件的实现

通常业务开发中,我们会使用到多个数据源,比如,部分数据存在mysql实例中,部分数据是在oracle数据库中,那这时候,项目基于springboot和mybatis,其实只需要配置两个数据源即可

转载 点赞0 阅读30 收藏0 评论0 2021-06-10

用好Spring AOP,天降大锅从容应对!

最近项目进入联调阶段,服务层的接口需要和协议层进行交互,协议层需要将入参[json字符串]组装成服务层所需的json字符串,组装的过程中很容易出错。入参出错导致接口调试失败问题在联调中出现很多次,因此就想写一个请求日志切面把入参信息打印一下,同时协议层调用服务层接口名称对不上也出现了几次

转载 点赞0 阅读8 收藏0 评论0 2021-06-10

Spring boot项目整合阿里巴巴druid数据库连接池

Druid连接池是阿里巴巴开源的数据库连接池项目,后来贡献给Apache开源;Druid的作用是负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;Druid连接池内置强大的监控功能,其中的StatFilter功能,能采集非常完备的连接池执行信息,方便进行监控,而监控特性不影响性能。Druid连接池内置了一个监控页面,提供了非常完备的监控信息,可以快速诊断系统的瓶颈。SpringBoot 1.x版本默认使用的的tomcat的jdbc连接池,由于j

转载 点赞0 阅读5 收藏0 评论0 2021-06-10