用友Java架构师面试

  • 自我介绍。项目中的一些优化。Q:kafka消息的时序性怎么保证?A1
    在这里插入图片描述
    核心意思就是要实现局部有序,需要有序的消息应设置相同的key,这样通过哈希取模后会分到同一个partition。又因为一个partition只能被一个consumer组中的一个comsumer消费,所以能实现有序。
    我自己的追问:为了保证发送消息的可靠性,producer的reties被设置为>1,从而造成消息乱序,怎么解决?参考答案2:设置 max.in.flight.requests.per.connection = 1。因为(也可见于Conduktor Kafkademy :Kafka Producer Retries一文):

The maximum number of unacknowledged requests the client will send on a single connection before blocking. Note that if this setting is set to be greater than 1 and there are failed sends, there is a risk of message re-ordering due to retries (i.e., if retries are enabled).

显而易见,这样设置可能会降低吞吐量

用友问:没有从程序端进行有序性的控制?我翻了下资料,猜他可能想问这个:kafka保证数据有序性小结 : 通过前面的方法 A1, 消费者拿到消息的时候是有序的,但是拿到消息之后开始多线程进行消费,就会导致有序性打乱了。作者提出的办法:模仿kafka分区的方法,消费者拿到消息之后,把消息按照key的hash值取模,放到阻塞队列中,然后一个处理线程对应一个阻塞队列?

  • redis里存的什么数据
  • 服务之间如何调用?有多少个服务?服务之间调用失败怎么办,有用到分布式事务吗?
  • 整个微服务的划分和架构是怎么设计的
  • Java内存模型?说说怎么JVM调优的
  • SpringCloud有哪些组件
  • 讲讲你理解的k8s,以及k8s的组件
  • 怎么样把service的流量转到pod的?参考答案3:kube-proxy。kube-proxy 运行在所有节点上,它监听 apiserver 中 service 和 endpoint 的变 化情况,创建路由规则以提供服务 IP 和负载均衡功能。简单理解此进程是 Service 的 透明代理兼负载均衡器,其核心功能是将到某个 Service 的访问请求转发到后端的多 个 Pod 实例上。具体方案有 iptables 或者 ipvs
  • pod的生命周期你了解吗? 参考答案4
    在这里插入图片描述
  • 说一下你们整个从开发到生产的上线过程。各个微服务之间怎么拉齐
  • 线上出问题如何排查
  • 解决过哪些问题,比较有成就感
  • 你对中台是怎么理解的
  • 知道哪些架构设计的方案。 DDD
  • 有什么问题想问。简单聊了下,对他们公司有成千上万服务很有印象

  1. 《专题四 服务化改造》之《第三章 【补充资料】常见消息中间件应用详解》之《第十节 Kafka》 ↩︎

  2. kafka顺序消息 ↩︎

  3. Kubernetes 常见面试题汇总 ↩︎

  4. Kubernetes学习之路(十一)之Pod状态和生命周期管理 ↩︎

猜你喜欢

转载自blog.csdn.net/qq_23204557/article/details/129117105