Java面试题2020,我凭着这份《Kafka源码实战》碾压面试官

本文由一次Kafka宕机事件引出,探讨Kafka的高可用问题。涉及数据库优化、缓存策略、消息队列应用、分布式服务架构以及系统维护等方面,通过实例分析和面试经验分享,揭示了在金融科技公司中如何处理高并发场景下的技术挑战。
摘要由CSDN通过智能技术生成

Kafka宕机引发的高可用问题

问题要从一次Kafka的宕机开始说起。

笔者所在的是一家金融科技公司,但公司内部并没有采用在金融支付领域更为流行的RabbitMQ,而是采用了设计之初就为日志处理而生的Kafka,所以我一直很好奇Kafka的高可用实现和保障。从Kafka部署后,系统内部使用的Kafka一直运行稳定,没有出现不可用的情况。

但最近系统测试人员常反馈偶有Kafka消费者收不到消息的情况,登陆管理界面发现三个节点中有一个节点宕机挂掉了。但是按照高可用的理念,三个节点还有两个节点可用怎么就引起了整个集群的消费者都接收不到消息呢?

要解决这个问题,就要从Kafka的高可用实现开始讲起。

数据库

  • 2.1 池化技术:如何减少频繁创建数据库连接的性能损耗?
  • 2.2 数据库优化方案(一):查询请求增加时,如何做主从分离?
  • 2.3 数据库优化方案(二):写入数据量增加时,如何实现分库分表?
  • 2.4 发号器:如何保证分库分表后ID的全局唯一性?
  • 2.5 NoSQL:在高并发场景下,数据库和NoSQL如何做到互补?

image

image

缓存

  • 3.1 缓存:数据库成为瓶颈后,动态数据的查询要如何加速?
  • 3.2 缓存的使用姿势(一):如何选择缓存的读写策略?
  • 3.3 缓存的使用姿势(二):缓存如何做到高可用?
  • 3.4 缓存的使用姿势(三):缓存穿透了怎么办?
  • 3.5 CDN:静态资源如何加速?

image

image

消息队列

  • 4.1 消息队列:秒杀时如何处理每秒上万次的下单请求?
  • 4.2 消息投递:如何保证消息仅仅被消费一次?
  • 4.3 消息队列:如何降低消息队列系统中消息的延迟?
  • 4.4 面试现场第二期:当问到项目经 历时,面试官究竟想要了解什么?

image

image

分布式服务

  • 5.1 系统架构:每秒1万次请求的系统要做服务化拆分吗?
  • 5.2 微服务架构:微服务化后,系统架构要如何改造?
  • 5.3 RPC框架:10万QPS下如何实现毫秒级的服务调用?
  • 5.4 注册中心:分布式系统如何寻址?
  • 5.5 分布式Trace:横跨几十个分布式组件的慢请求要如何排查?
  • 5.6 负载均衡:怎样提升系统的横向扩展能力?
  • 5.7 API网关:系统的门面要如何做呢?
  • 5.8 多机房部署:跨地域的分布式系统如何做?
  • 5.9 Service Mesh:如何屏蔽服务化系统的服务治理细节?

image

image

维护

  • 6.1 给系统加上眼睛:服务端监控要怎么做?
  • 6.2 应用性能管理:用户的使用体验应该如何监控?
  • 6.3 压力测试:怎样设计全链路压力测试平台?
  • 6.4 配置管理:成千上万的配置项要如何管理?
  • 6.5 降级熔断:如何屏蔽非核心系统故障的影响?
  • 6.6 流量控制:高并发系统中我们如何操纵流量?
  • 6.7 面试现场第三期:你要如何准备一场技术面试呢?

image

image

实战

  • 7.1 计数系统设计(一):面对海量数据的计数器要如何做?
  • 7.2 计数系统设计(二):50万QPS下如何设计未读数系统?
  • 7.3 信息流设计(一):通用信息流系统的推模式要如何做?
  • 7.4 信息流设计(二):通用信息流系统的拉模式要如何做?

image

image

高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。

最后

无论是哪家公司,都很重视基础,大厂更加重视技术的深度和广度,面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。

针对以上面试技术点,我在这里也做一些资料分享,希望能更好的帮助到大家。

戳这里免费领取以下资料

1621565411339)]

[外链图片转存中…(img-9zrCrZbq-1621565411340)]

[外链图片转存中…(img-GmSTXmYi-1621565411341)]

不用担心英文j2eeapi看不懂了 提供一种方式 跨多个页面请求或对 Web 站点的多次访问标识用户并存储有关该用户的信息 servlet 容器使用此接口创建 HTTP 客户端和 HTTP 服务器之间的会话 会话将保留指定的时间段 跨多个连接或来自用户的页面请求 一个会话通常对应于一个用户 该用户可能多次访问一个站点 服务器能够以多种方式维护会话 比如使用 cookie 或重写 URL 此接口允许 servlet 查看和操作有关某个会话的信息 比如会话标识符 创建时间和最后一次访问时间 将对象绑定到会话 允许跨多个用户连接保留用户信息 当应用程序将对象存储到会话中或从会话中移除对象时 该会话将检查对象是否实现了 HttpSessionBindingListener 如果实现了 则 servlet 将通知该对象它已经被绑定到会话 或者已从会话中取消对它的绑定 通知是在绑定方法完成后发送的 对于无效或过期的会话 通知是在会话已经无效或过期之后发送的 当容器使用分布式容器设置在 VM 之间迁移会话时 所有实现 HttpSessionActivationListener 接口的会话属性都会得到通知 servlet 应该能够处理客户端选择不加入会话的情况 比如故意关闭 cookie 时 在客户端加入会话前 isNew 一直返回 true 如果客户端选择不加入会话 则 getSession 将对每个请求返回一个不同的会话 并且 isNew 将总是返回 true 会话信息的范围仅限于当前 Web 应用程序 ServletContext 因此存储在一个上下文中的信息在另一个上下文中不是直接可见的 ">不用担心英文j2eeapi看不懂了 提供一种方式 跨多个页面请求或对 Web 站点的多次访问标识用户并存储有关该用户的信息 servlet 容器使用此接口创建 HTTP 客户端和 HTTP 服务器之间的会话 会话将保留指定的时间段 跨多个连接 [更多]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值