大型网站如何防止崩溃,解决高并发带来的问题( 四 )

三 、消息队列 (解耦+削峰+异步)通过异步处理提高系统性能 , 降低系统耦合性

在不使用消息队列服务器的时候 , 用户的请求数据直接写入数据库 , 在高并发的情况下数据库压力剧增 , 使得响应速度变慢 。 但是在使用消息队列之后 , 用户的请求数据发送给消息队列之后立即 返回 , 再由消息队列的消费者进程从消息队列中获取数据 , 异步写入数据库 。 由于消息队列服务器处理速度快于数据库(消息队列也比数据库有更好的伸缩性) , 因此响应速度得到大幅改善 。

通过使用消息中间件对Dubbo服务间的调用进行解耦 消息中间件可利用高效可靠的消息传递机制进行平台无关的数据交流 , 并基于数据通信来进行分布式系统的集成 。 通过提供消息传递和消息排队模型 , 可以在分布式环境下扩展进程间的通信 。 通过消息中间件 , 应用程序或组件之间可以进行可靠的异步通讯 , 从而降低系统之间的耦合度 , 提高系统的可扩展性和可用性 。

四 、采用分布式开发 (不同的服务部署在不同的机器节点上 , 并且一个服务也可以部署在多台机器上 , 然后利用 Nginx 负载均衡访问 。 这样就解决了单点部署(All In)的缺点 , 大大提高的系统并发量)

推荐阅读