深圳荣耀Java后端一面

三年工作经验社招,30分钟全在问项目

一、redis代理

Q:你们问什么要做一层redis代理?

A:因为两个方面,一是成本考虑:如果一个微服务申请一套主从资源花费很大。二是安全问题:加了监控、权限校验、代理缓存热点数据等逻辑在里面。

Q:部署代理不是更浪费资源吗?安全问题redis本身也可以解决啊?

A:跟一个微服务申请一套主从比,用代理更能充分利用redis的内存空间,成本是降低的。安全问题我问他是不是说redis的ssl,我说我们没开,就没问了。

Q:你说的代理端缓存有什么用?一致性怎么保证?为什么不在客户端做缓存?

A:代理内部做热点缓存是能节省代理到集群的一次网络耗时、并且减少redis集群压力的。一致性是有一定的延时问题的,这个跟redis 6.0的客户端缓存是一样的,适用于主要是读的场景,如果业务方能接受一定程度的不一致,是可以开启的。站在业务角度,客户端是要做内存缓存的,两者并不冲突,可以有多级缓存。

Q:还是没理解,如果有热点Key,我可以拆成两个Key,分片到不同的节点上就行了啊?

A:确实可以,但这是站在业务的角度上看的,如果站在中间件的角度上,并没有办法控制业务方怎么做。

Q:Redis Cluster怎么实现的知道吗?可以扩容不就降低压力了?(反正还是没给人说明白

A:我说基于Gossip协议做的集群间通信,集群扩容不方便,还要迁移槽位,而代理是无状态的,可以随时扩容。

Q:我看你写你们代理支持单机8wQPS?耗时多少?

A:单台4C8G的主机,只是简单的get set命令能支持8w QPS。耗时大约在0.2毫秒-0.3毫秒左右。

Q:你0.2毫秒怎么支持的8wQPS,乘起来也不是啊?

A:我说的0.2毫秒是业务方感知的,中间有业务方到代理、代理到集群、集群回包给代理、代理回包给业务4次网络耗时,主要耗时是网络上耗时。

Q:我们这直连redis,一次set只要10ns,你这么高耗时业务能接受吗?

A:你们走网络了吗?网络一次耗时都不止10ns,我们这一次网络都要0.1毫秒左右。

Q:那肯定走网络了啊,那我能是随口编的数据吗?我实际测的我们一次命令10ns,差不多QPS 8w?

A:我知道redis单机大约10w QPS,可能我们这网络有点问题,耗时比较高。。。其实也是没话说了,惊了。。

Q:你们这么慢,还用代理更慢,那不如用mysql了,mysql现在配高性能磁盘,数据量不大的情况跟内存差不多你知不知道?

A:mysql那毕竟是磁盘啊。。我心里其实一万头草泥马飘过。。完全不知道说啥。。。我心里想的是哪像你们大公司那么有钱啊。。

Q:你代理用什么框架实现的?

A:基于netty做的。

Q:代理和业务是长连接吗?怎么维护连接的?

A:是长连接,没特别维护长连接,netty都封装好了。(其实我有感觉,他是想说nacos长连接怎么维护的,可是我没看过nacos源码

Q:那你这个连接数不会爆掉吗?

A:我说不会,因为netty单机支持百万连接数,我们现在生产环境没那么多连接,也就几千级别的,没有这个瓶颈,所以没考虑。

Q:你实际测过netty支持百万连接数吗?号称是支持,实际测过没?

A:没测过,但是目前的量级还没到那个地步。(其实到这里已经知道他想问nacos怎么维护长连接的了,可惜真没看过源码

二、短信系统

Q:你这个是怎么起的?

A:tomcat起的

Q:tomcat里是什么?

A:(我其实没听懂,我心里想就war包啊)没理解。。

Q:你这个总不能是空tomcat吧?

A:我问是不是想问业务流程,他说是,我说blablabla。(我心里想你直接点问就好了呀)

Q:怎么接受HTTP请求的?

A:(没懂想问啥)就走的Servlet啊。。

Q:我当然知道Servlet啊,tomcat只能用Servlet

A:(我心里想你知道还问,都不知道想问啥)沉默。。。(其实后来想应该是问tomcat接受HTTP请求流程,走的Coyote监听端口、转发给catalina、pipeline那套,当时忘记了。他也不问详细点,我直接晕了)

Q:你这里面多家三方供应商负载均衡怎么做的?

A:比如两家供应商,一家30%比例,一家70%,就开10个长度数组,哈希取模10,前三个取第一家否则取第二家。

Q:你写的这里面分库分表怎么做的?了不了解sharding-sphere有几种模式?blablabla jdbc啥的。

A:(我心里想的是哈希分表、日期分表啥的)嘴上说的是没用这些,是自研的分库分表组件,在客户端做的,他也就没问了。

三、导入导出系统

Q:业务流程

A:blablabla

Q:看你这里面说用了CountdownLatch,干嘛用的?

A:blabla大概意思是阻塞主线程,等子线程都走完再走。

Q:你这个导入到一半异常了怎么办?

A:事务这里不太好做,需要业务自己控制。导入到一半异常会停止任务。导出的话如果一半异常了,会把异常写进导出的excel里。

总结:redis方面,感觉没讲到一个点上去,面试官是从业务角度,他们现状是一个服务用一套,觉得好得很,没必要用代理,我是站在中间件角度看的。其他还有很多受限于时间,没有完全讲完,像tomcat原理这种其实会的,也没想到回答。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值