Java 业务开发常见错误 100 例
朱晔
贝壳金服资深架构师
52944 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 48 讲
代码篇 (23讲)
Java 业务开发常见错误 100 例
15
15
1.0x
00:00/00:00
登录|注册

答疑篇:设计篇思考题答案合集

使用RabbitMQ 2.8.0后支持的死信交换器DLX实现
使用Spring AMQP实现
解决方案
数据库查询不到新用户信息的问题
实现大Key的拆分
查询大Key
分散热点Key对于Redis单节点的压力
自定义RequestMappingHandlerMapping
特色和功能
服务端告知客户端接口执行的错误码
复杂错误情况处理
区别于发布订阅模式
应用场景
适用场景
劣势
优势
内存使用情况
限制tag数量的问题
死信消息的重投递
用户注册后发送消息到MQ
配置Grafana监控面板
InfluxDB中保存的应用指标
自定义端点
内置端点
大Key的性能影响
热点Key回源对数据库产生的压力
统一的基于请求头方式的版本控制
其他对象映射类库
Spring的BeanUtils工具类
响应要明确表示接口的处理结果
观察者模式
模板方法设计模式
MongoDB
InfluxDB
异步处理
指标Metrics
Spring Boot Actuator
缓存设计
接口变迁的版本控制策略
Bean属性复制工具
接口设计
代码重复
答疑篇:代码重复、接口设计、缓存设计等相关思考题集锦

该思维导图由 AI 生成,仅供参考

你好,我是朱晔。
今天,我们继续一起分析这门课“设计篇”模块的第 21~26 讲的课后思考题。这些题目涉及了代码重复、接口设计、缓存设计、生产就绪、异步处理和数据存储这 6 大知识点。
接下来,我们就一一具体分析吧。

21 | 代码重复:搞定代码重复的三个绝招

问题 1:除了模板方法设计模式是减少重复代码的一把好手,观察者模式也常用于减少代码重复(并且是松耦合方式),Spring 也提供了类似工具(点击这里查看),你能想到观察者模式有哪些应用场景吗?
答:其实,和使用 MQ 来解耦系统和系统的调用类似,应用内各个组件之间的调用我们也可以使用观察者模式来解耦,特别是当你的应用是一个大单体的时候。观察者模式除了是让组件之间可以更松耦合,还能更有利于消除重复代码。
其原因是,对于一个复杂的业务逻辑,里面必然涉及到大量其它组件的调用,虽然我们没有重复写这些组件内部处理逻辑的代码,但是这些复杂调用本身就构成了重复代码。
我们可以考虑把代码逻辑抽象一下,抽象出许多事件,围绕这些事件来展开处理,那么这种处理模式就从“命令式”变为了“环境感知式”,每一个组件就好像活在一个场景中,感知场景中的各种事件,然后又把发出处理结果作为另一个事件。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文涵盖了多个技术知识点的答疑篇,涉及了观察者模式、Bean属性复制工具、接口响应结果表示、接口版本控制策略、缓存设计以及消息队列处理等内容。作者通过具体问题和答案的形式,帮助读者深入理解和应用这些技术知识。其中讨论了解决用户服务发送消息到MQ后,会员服务查询数据库还未更新的问题,以及使用DLX实现消息重投递的机制。此外,还介绍了InfluxDB内存占用问题和MongoDB的优劣势及适用场景。总体而言,本文内容丰富,涵盖了多个实际开发中常见的技术问题和解决方案,适合技术人员深入学习和应用。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Java 业务开发常见错误 100 例》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(7)

  • 最新
  • 精选
  • 老师您好,一直想请教个问题:我们现在的项目目前正在将原来的老项目拆分为多个微服务,随之而来的一个就是分布式事务问题,一直没找到好的解决方案,请问老师您们是如何来处理分布式事务或者使用什么开源框架,能否提供几种选择。多谢老师!

    作者回复: 专栏不涉及架构,给你一个大方向: 分布式事务: - 数据库层面 2PC/XA(直接使用中间件,比如Seata) - 应用层 TCC(服务接口需要实现三接口) - 微服务场景:Saga模式(针对状态机建模) 数据库 + MQ的一致性: - 本地消息表 - 事务消息 涉及外部服务整体一致性: - 补偿 + 最终一致 - 以外部服务为主,内部服务为辅思想

    2020-07-22
    16
  • 程序员小跃
    我发现咱们专栏这个课后答疑挺有特色的,已经有好几期的课后答疑让我学到了很多,至少又进一步巩固了我学习的内容,给老师这个设计点赞

    作者回复: 有帮助就好

    2020-10-25
    4
  • 常惠源
    老师您好,可否说一下巨衫数据库中MongoDB数据的存储,是否可以应用在重要数据的存储上?

    作者回复: 巨衫那个JSON 存储应该不是 Mongodb,具体特性我不太清楚 建议除了 MySQL、Oracle、MSSQL 等主流的关系型数据库之外的数据库,在应用到重要数据之前,都应该三思,仔细做下评估

    2021-01-19
    1
  • J.Smile
    老师,线程池的监控有没有什么好的方式?

    作者回复: 非bean自己写组件监控或者通过javaagent实现 bean的话就简单了

    2020-08-04
    1
  • Michael
    老师,你好! redis集群模式下,根据模糊key删除缓存有什么好的办法?scan命令在集群下不行

    作者回复: https://paluch.biz/blog/162-iterate-over-all-keys-in-a-redis-cluster.html

    2020-07-31
  • 惘 闻
    "虽然 MongoDB 的写入性能较高,但复杂查询性能却相比 Elasticsearch 来说没啥优势;虽然 MongoDB 有 Sharding 功能,但是还不太稳定。因此,我个人建议在数据写入量不大、更新不频繁,并且不需要考虑事务的情况下,使用 Elasticsearch 来替换 MongoDB。" 老师最后一题从这句话看来只看到了MongoDB相对于ES查询没什么优势,没看到ES的优势在哪里,所以老师推荐ES的原因具体是ES哪些方面比MongoDB要好啊.存储稳定性更高和查询效率更好吗?
    2020-12-24
    2
    2
  • Joker
    把业务处理和保存 MQ 消息到本地消息表的操作,放在相同事务内处理。 这一步是指比如用户注册入库后把这个用户信息和消息一起记录到消息表,然后再controller层执行发送消息?
    2021-01-07
    1
收起评论
显示
设置
留言
7
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部