工作中公司的系统难免会出现一些问题,比如性能瓶颈,想要解决 这些问题,我们可能要引入第三方工具来解决我们的燃眉之急。那么如何选择使用哪一个技术产品,一直是我比较困扰的问题,下面是我的一些思路,希望大牛们能给一些建议和指导,我会一直更新此内容。
目录
一、为什么要用这个技术?
1.1 目前业务系统出现了什么样的问题
比如系统之间高耦合,A系统直接调用B系统,B系统可能响应延时,A系统并发数越来越多,最终导致A系统崩掉不可用。
1.2 用了这个技术能解决什么样的问题
如果出现了上面的情况,我们可以将A系统和B系统进行解耦,用什么技术产品来解耦呢?这个就有了很多选择了,在这个场景下,我们使用MQ来进行解耦,解耦后,即使B系统宕掉,也不会影响A系统。
二、技术框架调研
2.1 主流的同类技术有哪些产品?
当前比较流行的有
kafka、activemq、rabbitmq、rocketmq,比较这几种的不同点
2.1.1 不同的产品的优势、缺点
- 学习成本,技术复杂度,应用起来是否简单
- 功能比较,性能比较(高并发),集群,高可用
- 相比其他产品亮点在哪?比如有可视化的操作界面,方便管理等等
- 开发的语言,底层源码是否容易扩展和修复Bug
- 社区的活跃度,版本更新的时间维度,用户量大不大
- 是否开源
产品相互之间进行比较,取适合自己系统的技术产品
以上是我暂时可以想到的几点,如果还有其他的希望各位给个补充。
2.2 使用这个技术产品对现有的系统有哪些影响?
2.2.1 对现有的系统改动量大不大
这个技术是否很容易引入当前系统中,对系统改动量如何
2.2.2 稳定性,高可用,集群部署,分布式
- 是否会出现丢数据的情况?如何保证数据不会丢失?
- 在集群的情况下是否会重复消费数据?如何保证数据的唯一性?
- 服务宕机后,如何快速恢复数据?
- 如何保证高可用?
- 是否支持集群和分布式部署?
总结
我们关注的不仅仅是这个技术能帮助我们解决什么问题,更需要关注使用这个技术会带来什么样的问题,这些问题又该如何解决