答疑篇:设计篇思考题答案合集
朱晔
该思维导图由 AI 生成,仅供参考
你好,我是朱晔。
今天,我们继续一起分析这门课“设计篇”模块的第 21~26 讲的课后思考题。这些题目涉及了代码重复、接口设计、缓存设计、生产就绪、异步处理和数据存储这 6 大知识点。
接下来,我们就一一具体分析吧。
21 | 代码重复:搞定代码重复的三个绝招
答:其实,和使用 MQ 来解耦系统和系统的调用类似,应用内各个组件之间的调用我们也可以使用观察者模式来解耦,特别是当你的应用是一个大单体的时候。观察者模式除了是让组件之间可以更松耦合,还能更有利于消除重复代码。
其原因是,对于一个复杂的业务逻辑,里面必然涉及到大量其它组件的调用,虽然我们没有重复写这些组件内部处理逻辑的代码,但是这些复杂调用本身就构成了重复代码。
我们可以考虑把代码逻辑抽象一下,抽象出许多事件,围绕这些事件来展开处理,那么这种处理模式就从“命令式”变为了“环境感知式”,每一个组件就好像活在一个场景中,感知场景中的各种事件,然后又把发出处理结果作为另一个事件。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文涵盖了多个技术知识点的答疑篇,涉及了观察者模式、Bean属性复制工具、接口响应结果表示、接口版本控制策略、缓存设计以及消息队列处理等内容。作者通过具体问题和答案的形式,帮助读者深入理解和应用这些技术知识。其中讨论了解决用户服务发送消息到MQ后,会员服务查询数据库还未更新的问题,以及使用DLX实现消息重投递的机制。此外,还介绍了InfluxDB内存占用问题和MongoDB的优劣势及适用场景。总体而言,本文内容丰富,涵盖了多个实际开发中常见的技术问题和解决方案,适合技术人员深入学习和应用。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Java 业务开发常见错误 100 例》,新⼈⾸单¥59
《Java 业务开发常见错误 100 例》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(7)
- 最新
- 精选
- 铎老师您好,一直想请教个问题:我们现在的项目目前正在将原来的老项目拆分为多个微服务,随之而来的一个就是分布式事务问题,一直没找到好的解决方案,请问老师您们是如何来处理分布式事务或者使用什么开源框架,能否提供几种选择。多谢老师!
作者回复: 专栏不涉及架构,给你一个大方向: 分布式事务: - 数据库层面 2PC/XA(直接使用中间件,比如Seata) - 应用层 TCC(服务接口需要实现三接口) - 微服务场景:Saga模式(针对状态机建模) 数据库 + MQ的一致性: - 本地消息表 - 事务消息 涉及外部服务整体一致性: - 补偿 + 最终一致 - 以外部服务为主,内部服务为辅思想
2020-07-2216 - 程序员小跃我发现咱们专栏这个课后答疑挺有特色的,已经有好几期的课后答疑让我学到了很多,至少又进一步巩固了我学习的内容,给老师这个设计点赞
作者回复: 有帮助就好
2020-10-254 - 常惠源老师您好,可否说一下巨衫数据库中MongoDB数据的存储,是否可以应用在重要数据的存储上?
作者回复: 巨衫那个JSON 存储应该不是 Mongodb,具体特性我不太清楚 建议除了 MySQL、Oracle、MSSQL 等主流的关系型数据库之外的数据库,在应用到重要数据之前,都应该三思,仔细做下评估
2021-01-191 - J.Smile老师,线程池的监控有没有什么好的方式?
作者回复: 非bean自己写组件监控或者通过javaagent实现 bean的话就简单了
2020-08-041 - 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-2422
- Joker把业务处理和保存 MQ 消息到本地消息表的操作,放在相同事务内处理。 这一步是指比如用户注册入库后把这个用户信息和消息一起记录到消息表,然后再controller层执行发送消息?2021-01-071
收起评论