java 订单实时更新 java订单超时_java 订单实时更新

java 订单实时更新 java订单超时_java 订单实时更新_02

从单体应用到微服架构:

可以先讲服务根据业务进行解耦,然后再做集群,这样在应用层就解决了大量的并发和计算

数据库层面的演变:

读写分离,分库分表,对于秒杀这样的很多热点数据可以放到redis 缓存里面。对于搜索的内容还需要搜索引擎(分布式搜索引擎)

订单延时的回顾

比如一个秒杀活动,很多人同时抢,有些人抢到了,但是一直没有支付,后面的人没抢到,当时又很想买,这样就造成了想买的下不到单的情况,最终会导致商品销量不好。这样就需要延迟队列来解决超时不支付,订单自动取消,库存系统加回去。其他用户可以继续对商品进行下单

java 订单实时更新 java订单超时_java_03

常见的几种解决方案

java 订单实时更新 java订单超时_队列_04

java 订单实时更新 java订单超时_java 订单实时更新_05

JMS: java 消息服务

异步通信的API,它为标准消息协议和消息服务提供了一组通用接口,包括创建、发送、读取消息等,用于支持JAVA应用程序开发。在J2EE中,当两个应用程序使用JMS进行通信时,它们之间并不是直接相连的,而是通过一个共同的消息收发服务连接起来,可以达到解耦的效果

消息先发给队列,消费者监听队列,有消息就消费

消息:①点对点的  ②一对多的(广播)

Rabbitmq的简单介绍

java 订单实时更新 java订单超时_java 订单实时更新_06

rabbitmq为什么会有 交换机和队列两大块?有何好处

一个消息到底是发到队列1还是2,不需要人为控制,只需要交给交换机就行,交换机根据路由键去做匹配。

RabbitMQ的交换器类型一共有四种(direct、fanout、topic以及headers),每一种类型实现了不同的路由算法:

直连交换机:Direct exchange
扇形交换机:Fanout exchange
主题交换机:Topic exchange
头部交换机:Headers exchange

直连交换机:Direct

通过路由key直接与队列对应,由交换机直接转发到对应的消息队列

java 订单实时更新 java订单超时_搜索引擎_07