1.什么是SPI      SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的接口,它可以用来启用框架扩展和替换组件。 SPI的作用就是为这些被扩展的API寻找服务实现。 2.SPI和API的使用场景     API (Application Programming Interface)在大多数情况下,都是实现方制定接口并完成对接口的实现,调用方仅仅依赖接口调用,且无权选择不同实现。 从使用人员上来说,API 直接被应用开发人员使用。     SPI (S…

2021年4月16日 1条评论 9点热度 0人点赞 李锋镝 阅读全文

本文简单说一说JVM应如何调优。 Java语言本身的成功,除了天时地利人和,JVM功不可没。 毫不夸张地说,JVM是现代软件工程最成功的案例之一。它规模庞大,代码极其复杂,但运行极其稳定可靠,所以,许多厂商的核心业务系统,才敢放心地用Java编写,运行在JVM之上。 因为JVM自带GC,又有无数可以微调的参数,所以,JVM调优,现在已经被当作Java面试的必考知识点,精通JVM调优参数的童鞋,可以冠名微操小王子。 写了这么多年的Java程序,很遗憾,我迄今为止只会用两个参数:XMS和XMX,能正确写出如下启动脚本:…

2021年3月26日 0条评论 487点热度 2人点赞 李锋镝 阅读全文

Redis不需要Leader这个观点其实有歧义,是不准确的,题目的问题本质其实是涉及数据分片、数据复制一致性。 1、Redis Cluster 架构 在Redis3.0版本开始,Redis引入了一种去中心化的集群架构,采用预分片的模式,一个集群中所有节点总共对应16384个槽位,在对一个key进行写入时,首先对key取hashcode,然后求模来映射到具体的某一个节点,其部署架构如下图所示: 上述每一个节点中存储的数据都不一样,即每一个节点存储整体数据的一部分,并且为了实现去中心化每一个节点需要存储集群中所有key…

2021年3月22日 0条评论 558点热度 0人点赞 李锋镝 阅读全文

1 什么是kafka Kafka是分布式发布-订阅消息系统,它最初是由LinkedIn公司开发的,之后成为Apache项目的一部分,Kafka是一个分布式,可划分的,冗余备份的持久性的日志服务,它主要用于处理流式数据。 2 为什么要使用 kafka,为什么要使用消息队列 缓冲和削峰:上游数据时有突发流量,下游可能扛不住,或者下游没有足够多的机器来保证冗余,kafka在中间可以起到一个缓冲的作用,把消息暂存在kafka中,下游服务就可以按照自己的节奏进行慢慢处理。 解耦和扩展性:项目开始的时候,并不能确定具体需求。消…

2021年3月22日 0条评论 551点热度 0人点赞 李锋镝 阅读全文

1、面试场景与面试技巧 金三银四招聘季,一位粉丝朋友最近在蚂蚁金服第二轮面试时遇到这样一个问题:如果MQ消费遇到瓶颈时该如何处理?。 横向扩容,相比很多读者与我这位朋友一样会脱口而出,面试官显然不会满意这样的回答,然后追问道:横向扩容是堆机器,还有没有其他办法呢? 在面试过程中,个人建议大家在听到问题后稍作思考,不要立马给出太直接的答案,而是应该与面试官进行探讨,一方面可更深刻的理解面试官的出题初衷,同时可以给自己梳理一下思路。 消费端遇到瓶颈,这是一个结果,但引起这个结果的原因是什么呢?在没有弄清楚原因之前谈优化…

2021年3月19日 0条评论 657点热度 0人点赞 李锋镝 阅读全文

今天开始我们将继续深入 ZK 选举相关的知识 一、选举的基本规则 ZKr~这次我决定一反常态,先不讲故事了~先得聊聊在 ZK 选举中非常重要的一些东西。 1.1 zxid zxid 就是我们之前提到的事务编号,是一个 8 字节的整型数字,但是 ZK 设计的时候把这一个数字拆成了两部分使用,一鱼两吃! 8 个字节的整数一共有 64 位长度,前 32 位用来记录 epoch,后 32 位就是用来计数。你可能要问了? epoch?是啥? zxid 初始化是 0,也就是这样 000000000000000000000000…

2021年3月18日 0条评论 609点热度 0人点赞 李锋镝 阅读全文

一、优秀员工小S(Sync) 我们通过之前的文章有介绍过,小S(Sync) 负责对办事处的数据进行归档,所以今天他就是我们的主角,让我们一起深入了解他的日常工作吧 为了唤醒大家的远古记忆,我放一张之前的图片 今天我们会重点讲一下图中的蓝色部分,不过在此之前还是得先从整体架构上介绍下 ZK 的数据管理,ZK 的数据大致是分为了两部分,一个是内存,一个就是磁盘文件。 1.1 内存 虽然今天我们的主角是磁盘文件,但是内存还是稍微再提一下下,帮助大家记忆的同时也能有一个比较全面的视角去认知 ZK 整体的数据管理。 ZK 在…

2021年3月18日 0条评论 597点热度 0人点赞 李锋镝 阅读全文

作为一台服务器来说,内存并不是无限的,所以总会存在内存耗尽的情况,那么当 Redis 服务器的内存耗尽后,如果继续执行请求命令,Redis 会如何处理呢?   设置有效期 使用Redis 服务时,很多情况下某些键值对只会在特定的时间内有效,为了防止这种类型的数据一直占有内存,我们可以给键值对设置有效期。Redis中可以通过 4 个独立的命令来给一个键设置过期时间: expire key ttl:将 key 值的过期时间设置为 ttl 秒。 pexpire key ttl:将 key 值的过期时间设置为 t…

2021年3月3日 0条评论 621点热度 1人点赞 李锋镝 阅读全文

经常在其它各个地方在说公司禁止使用Lombok,我一直不明白为什么不让用,今天看到一篇文章列举了一下“缺点”,这里我只想狠狠地反驳,看到列举的理由我竟无言以对。   JDK 版本问题 当我想要将现有项目的 JDK 从 Java 8 升级到 Java 11 时,我发现 Lombok 不能正常工作了。于是我不得不将所有的 Lombok 注解从项目源代码中清除,并使用 IDE 自带的功能生成 getter/setter,equals,hashCode,toString 以及构造器等方法,你也可以使用 Delom…

2021年3月3日 0条评论 580点热度 2人点赞 李锋镝 阅读全文

Intro Dapr 官方团队已于最近(2021.2.17)正式发布Dapr v1.0,Dapr已正式生产可用,可以部署到自托管环境或 Kubernetes 集群。对于绝大多数开发者来说,想必对Dapr只是有所耳闻,而具体是什么(What),可以解决什么样的问题(Why&How),有怎样的应用场景(Where),并不知悉。本文就尝试简要梳理下Dapr,并尝试回答以上问题。 What's Dapr Distributed Application Runtime. An event-driven, portab…

2021年2月26日 0条评论 611点热度 0人点赞 李锋镝 阅读全文
123459