技术选型

选型背后体现的不只是选型,个人的经历、教育经历、性格

2013废弃

mighty单表映射

为什么要技术选型

要坚固降低研发成本和提高研发效率





数据访问层

关于数据库链接如何管理的问题







MQ
![![在存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ywIJRaTn-1636183011535)(/Users/zhaokaijie/Library/Application Support/typora-user-images/image-20211021160855431.png)]](https://i-blog.csdnimg.cn/blog_migrate/1786f8376782d411301800c4dba6254a.png)
优势和劣势
优势:
应用解耦:一个业务需要多个模块共同实现,或者一条消息有多个系统需要对应处理,只需要主业务完成以后,发送一条MQ,其余模块消费MQ消息,即可实现业务,降低模块之间的耦合。
应用间解耦,提高容错性和可维护性
eg:![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fRHo2CXz-1636183011537)(/Users/zhaokaijie/Library/Application Support/typora-user-images/image-20211021162901962.png)]](https://i-blog.csdnimg.cn/blog_migrate/e3166d14dc3b780c95b5b7159074f207.png)
订单系统中需要库存支付物流共同实现,所以一条消息有多个系统需要对应处理,加入MQ之后,订单系统发送一条MQ,其余的系统消费MQ消息,如果再加入一个系统,不需要修改订单系统的代码,只需要MQ多发送一条消息就行。
异步提速:主业务执行结束后从属业务通过MQ,异步执行,减低业务的响应时间,提高用户体验。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tIveTbLz-1636183011539)(/Users/zhaokaijie/Library/Application Support/typora-user-images/image-20211021164812655.png)]](https://i-blog.csdnimg.cn/blog_migrate/7ed0f93c5aae8c76662a96ed493d5d86.png)
订单系统分别向每一个消费者系统发送消息,每一个需要300ms,这样会消耗大量的时间,如果使用MQ
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CTMhoPq6-1636183011541)(/Users/zhaokaijie/Library/Application Support/typora-user-images/image-20211021165347576.png)]](https://i-blog.csdnimg.cn/blog_migrate/1b0252af60882d5f10d8ecd8c4f1d700.png)
订单系统和MQ是一个短链接,这样的速度会非常的快,用户得到反馈的时间是25ms ,各个系统的300ms不影响用户得到反馈的时间
削峰填谷:高并发情况下,业务异步处理,提供高峰期业务处理能力,避免系统瘫痪。

劣势:
1、系统可用性降低。依赖服务也多,服务越容易挂掉。需要考虑MQ瘫痪的情况
2、系统复杂性提高。需要考虑消息丢失、消息重复消费、消息传递的顺序性
3、业务一致性。主业务和从属业务一致性的处理
使用的前提

使用的场景

1.5常见的MQ的产品

rabbitMQ延迟最低,文档完备,单机吞吐量可以依靠集群实现
rocketMQ 对中国人最友好的 阿里开发的
MQ基本概念

本文探讨了技术选型的重要性,特别是在数据访问层和消息队列(MQ)的应用。MQ能实现应用解耦、异步提速和削峰填谷,如在订单系统中的应用,提高系统效率。然而,MQ也会带来系统可用性降低、复杂性增加以及一致性问题。关键因素在于正确选择使用场景。文中提到了如rabbitMQ和rocketMQ等MQ产品的特点。
791

被折叠的 条评论
为什么被折叠?



