网易问的偏中间件技术原理,语言层面基本没问。一面面试官比较年轻,不断追细节,感觉还是比较青涩。二面面试官估计是leader,有的问题问的很离谱,最后把我给激怒了。整体下来体验不是很友好,就没有后续了。
今年找工作十分不易,市场候选人很多,能过就是钱给不到位!希望这篇面经能帮到大家~
说一个源码改进业务的例子。
websocket心跳如何实现?
zk/db/redis锁怎么选型。
8台物理机能撑住百万的长连接,一台能撑住13w???数据感觉有问题,至少有20台吧(lf+hl)
流程编排如何避免大量调用下游服务,是否做了隔离?
感觉调用下游要做熔断,例如hystrix。但是这个有点重了。sdk要做薄。
客服IM也区分在线消息和离线消息,都会存起来,如果掉线了,下次登录成功了主动拉取就行。
最理想的方案是全部单独部署,隔离性最好,但是成本最高
我主要是代码上隔离开来,然后混合部署。
计算资源(cpu/memory) | 共享一个pod | namespace | 私有化集群 |
---|---|---|---|
线程池/连接池 | 按租户配额 | 流量标的方式,不同标,不同服务实例,类似泳道 | 计算资源和物理资源完全隔离了 |
限流 | |||
定时任务elastic job |
存储资源 | 共用实例 | 不同实例 | x |
---|---|---|---|
mysql | 分库,库名不同,但是连接池可以复用 | 物理层面的隔离 | |
kafka | 不同租户不同topic,或者添加tag | 物理层面的隔离 | |
es | 不同index name | 物理层面的隔离 | |
cos | 前缀不一样? | 物理层面的隔离 | |
redis | key前缀不同 | 物理层面的隔离 | |
zk |
代码资源 | 耦合度 | x | x |
---|---|---|---|
仓库隔离 | KA和业务中台的,有不同的代码仓库 | ||
混合部署 | 依赖无冲突,能实现通信 | ||
开发模式 | 按照各自的开发计划开发 | ||
流量隔离 | 动态调度:动态加载和卸载 | ||
扩展点 | 组件化编程 | ||
编排 | 需要支持不同的分支条件,不能只靠增加业务身份,解决分支问题,不然规则文件会爆炸 |
后续多个聚合业务共用同一个业务中台应用,一个聚合应用发布,另一个聚合应用也得跟着发布,如何解决这个问题?
动态部署
动态部署为什么会卸载不干净?
假设redis能承受主5w qps,db能撑住500qps,db可能随机更新,如何把qps提升到20w,且保证一致性
redis分片,不分片怎么做呢?本地缓存?可能会不一致。
https://zhuanlan.zhihu.com/p/32009822
当时其实数据库层面也是可以限流的。看下是不是可以扩容db,分库分表。以及增加多个topic。当然前提是处理逻辑没有问题,堆机器是最简单的事情。