一图读懂常用中间件技术

这里将常用中间件分为了四类:分布式中间件、负载均衡中间件、缓存中间件、数据库中间件。这些中间件在我们的应用场景中肯定是会涉及到的:

对于分布式中间件,常用的有以下四个:

1、ActiveMQ是遵循JMS规范AMQP协议的消息中间件,由Java语言开发,这个中间件比较老牌,目前使用的已经比较少了。如果我们作为一个当下比较新潮技术的开发者的话,使用该中间件的复杂性远比RabbitMQ高,因此ActiveMQ不再作为我们学习的参考。
2、RabbitMQ是当下流行的,是国内大厂都在使用的,其中有几个原因,因为它支持分发的模式、持久化、和对容错性等各种机制的处理比较完善,而且和spring框架是同一家公司开发的产品,因此spring框架对其的支持比较完善,因此在java领域十分广泛。
3、Kafka是基于tcp/ip这种二进制传输协议进行开发,所以它的性能是最好的,最接近底层,但是它不支持事物、但是支持持久化和分发机制,也是比较完善,在大数据领域用的很多
4、RocketMQ是由阿里、滴滴等联合开发出来的一款国产消息队列,对于该产品保持中介态度,建议不要选择使用,因为这属于一种半开源状态,虽然已经脱光诶apache基金会, 但是不太稳定,如果哪一天团队不在维护升级,出现了问题无法解决的话仍要重新选择,因此开发中一定要选择最稳定最可靠的技术,而不是盲目的追求新。

对于负载均衡中间件,常见的有 Nginx、LVS、KeepAlive、CDN。其中我们着重需要了解的是 Nginx 和 CDN,因为LVS 和 KeepAlive 在短期的中小型项目中是用不到的。LVS 用于 Nginx 发生故障需要对其做集群架构处理的,KeepAlive 是以保持心跳维持高可用为目的的,CDN 就是用于加速网页加载、渲染速度的。

对于缓存中间件,一定要遵循 tcp/ip 协议,常见的有MemCache和Redis。其中 MemCache 是代码级别的,它会将缓存写入代码中,占用 jvm 内存,在一些小项目和非特别领域可以采用。考虑到分布式架构最好使用 Redis。

对于数据库中间件,我们知道 MySQL 本身是具有持久化功能但是不具有高可用性的,也就是没有集群。因此要实现 MySQL 的集群/分库分表的话就必须要使用第三方的中间件例如Mycat、ShardingJDBCD等等来协助 MySQL 完成它的高可用性。

以上技术都能很好的帮我们解决项目中的一些场景,比如异步数据的保存可以达到削峰的目的,因为异步可以实现从串行到并行,以及消息分发、分布式事务、消息容错等等场景…

posted @ 2023-08-11 20:51  Aidy  阅读(1073)  评论(0编辑  收藏  举报