从单体应用到微服架构:
可以先讲服务根据业务进行解耦,然后再做集群,这样在应用层就解决了大量的并发和计算
数据库层面的演变:
读写分离,分库分表,对于秒杀这样的很多热点数据可以放到redis 缓存里面。对于搜索的内容还需要搜索引擎(分布式搜索引擎)
订单延时的回顾
比如一个秒杀活动,很多人同时抢,有些人抢到了,但是一直没有支付,后面的人没抢到,当时又很想买,这样就造成了想买的下不到单的情况,最终会导致商品销量不好。这样就需要延迟队列来解决超时不支付,订单自动取消,库存系统加回去。其他用户可以继续对商品进行下单
常见的几种解决方案
JMS: java 消息服务
异步通信的API,它为标准消息协议和消息服务提供了一组通用接口,包括创建、发送、读取消息等,用于支持JAVA应用程序开发。在J2EE中,当两个应用程序使用JMS进行通信时,它们之间并不是直接相连的,而是通过一个共同的消息收发服务连接起来,可以达到解耦的效果
消息先发给队列,消费者监听队列,有消息就消费
消息:①点对点的 ②一对多的(广播)
Rabbitmq的简单介绍
rabbitmq为什么会有 交换机和队列两大块?有何好处
一个消息到底是发到队列1还是2,不需要人为控制,只需要交给交换机就行,交换机根据路由键去做匹配。
RabbitMQ的交换器类型一共有四种(direct、fanout、topic以及headers),每一种类型实现了不同的路由算法:
直连交换机:Direct exchange
扇形交换机:Fanout exchange
主题交换机:Topic exchange
头部交换机:Headers exchange
直连交换机:Direct
通过路由key直接与队列对应,由交换机直接转发到对应的消息队列