消息队列

使用场景

  1. 应用解耦合:应用之间不用直接调用,可以通过队列来传递消息,完成通信。
  2. 异步任务:队列可以用来执行异步任务,任务提交方无需等待结果。
  3. 削峰填谷:在突发流量时,可以通过队列做缓冲,不会对后端服务产生较大的压力,当峰值过去时,可以逐渐消费堆积的数据,来填平流量的低谷。
  4. 消息广播:一写多读

消息协议

  1. JMS:是Java的消息服务,规定了Java使用消息服务的API,Spring提供了支持JMS的组件
  2. AMQP:是高级消息队列协议,是应用层协议的开放标准,AMQP不从API层进行限定,而是直接定义网络交换的数据格式,因此支持跨语言的能力。

常用的消息队列

  1. RabbitMQ:支持AMQP、XMPP、SMPP等多种协议,比较重量级,单机吞吐量在万级。
  2. ActiveMQ:可以部署于代理模式和P2P模式,支持多种协议,单机吞吐量在万级,不够请求,队列较多的情况支持不是很好。有较低概率丢失消息。
  3. RocketMQ:单机支持10万级的吞吐量,使用Java开发,具有高吞吐量,高可用性的特点,适合在大规模分布式系统中应用。
  4. Kafka:高性能跨语言分布式消息队列,单机吞吐量可以达到10万级,消息延迟在毫秒级,kafka是完全的分布式系统,broker、producer、consumer都是原生自动支持分布式,依赖于zookeeper做分布式协调,kafka支持一写多读,消息可以被多个客户端消费,消息有可能会重复但是不会丢失。

常用的数据库中间件

数据库中间件一般提供了读写分离、数据库水平扩展的能。

  1. Sharding-Sphere:开源分布式数据库中间件解决方案,由Sharding-JDBC、Sharding-Proxy、Sharding-Sidecar几个独立的产品组成,使用不同的场景,这几个产品都提供标准化的数据分片、读写分离、柔性事务和数据治理功能,可适用于Java同构异构语言,容器,云原生等应用场景。
  2. Mycat:提供分库分表能,基于Proxy代理模式,后端可以基于多种数据库实现,代理模式对性能会有一定的影响。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章