Redis是一个Key-Value的NoSQL数据库,开发维护很活跃,虽然它是一个Key-Value数据库存储系统,但它本身支持list数据结构的操作,所以完全可以当做一个轻量级的队列服务来使用。
消息队列场景简介
“
消息
”是在两台计算机间传送的数据单位。消息可以非常简单,例如只包含文本字符串;也可以更复杂,可能包含嵌入对象。消息被发送到队列中,“
消息队列
”是在消息的传输过程中保存消息的
容器
。
合理地使用消息队列,可以有效地抵御促销活动刚开始就开始大量涌入的订单对系统造成的冲击 。
生产者消费者模式
消息队列服务器中有一个进程单独对消息队列进行处理,首先判断消息队列中是否有待处理的消息,如果有,则将其取出(出队操作,坚持“先进先出”的顺序,保证事务的准确性)进行相应地处理(比如这里是进行保存数据的操作,将数据插入到数据库服务器中的指定数据库里边,实质还是文件的IO操作)。就这样,通过消息队列将高并发用户请求进行异步操作,然后一一对消息队列进行出队的同步操作,也避免了并发控制的难题。
小结:
使用消息队列将调用异步化,可以改善网站系统的性能:消息队列具有很好的削峰作用,即通过异步处理,将短时间高并发产生的事务消息存储在消息队列中,从而削平高峰期的并发事务。在电商网站的促销活动中,合理使用消息队列,可以有效地抵御促销活动刚开始大量涌入的订单对系统造成的冲击。
集群:
集群是由两台 或者两台以上的服务器组成,利用共享磁盘阵列实现系统高可用性,保证系统7*24不间断运行的软件产品。
负载均衡:
负载均衡提供扩展网络带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性的一种方法。在网络应用上,一开始并不需要负载均衡,当网络的访问量不断增长,无法满足负载需求时,也就是网络流量要出现瓶颈时,负载均衡才会起到作用。
反向代理和负载均衡的关系:
反向代理,是把一些静态资源存储在服务器上,当用户有请求的时候,就直接返回反向代理服务器上的资源给用户,而如果反向代理服务器上没有的资源,就转发给后面的负载均衡服务器,负载均衡服务器再将请求分发给后端的web服务器。 区别就是:反向代理服务器是需要存储资源的,让用户更快速的接收到资源 负载均衡就是,为了保证后端web服务器的高可用,高并发,是不需要要存储资源,只需要转发用户的请求。