应用系统的运行与测试


实现目标

在高并发的系统中消息队列与数据库通常搭配使用,通过消息队列的异步处理能力,用户无需等待数据库写入完成再获取响应,使用的流畅度大大提高;同时在高并发场景下,消息队列可以作为缓冲层,暂时存储过载的请求,避免系统因瞬间大量请求而崩溃,可以有效削减流量峰值,保护后端服务。

本节课程的目标是运行编译完成的新闻管理后台与数据写入模块。用户通过管理后台对新闻进行增删改查,所有的写入(增删改)请求都会先缓存在消息队列中,再由数据写入模块从消息队列中读取数据写入数据库中。

实现环境

  • 应用服务器1:运行新闻管理后台,环境为CentOS7+JDK8。
  • 应用服务器2:运行新闻写入模块,环境为CentOS7+JDK8。
  • MySQL服务器:存储新闻系统的所有数据,环境为CentOS7+MySQL5.6。
  • RabbitMQ服务器:缓存写入(增删改)数据库的新闻,环境为CentOS7+RabbitMQ。

实现步骤

新闻网站的运行与测试

1、应用程序的运行:在应用服务器1上启动新闻网站。

project

2、应用系统的测试。

2.1、查看网站首页并进行多次刷新。网站首页为http://IP:8080,其中IP为应用服务器1的IP地址。

project

 •  查看应用服务器日志:系统会定时自动清除缓存中的首页以保持首页的最新状态,当缓存中的首页因超时被自动删除后,再次访问时系统会自动从MySQL数据库读取并进行缓存。

project

 •  查看Redis服务器:首页内容在缓存中的键名为news::index,键名news::index为系统自定义。

project

2.2、查看详情页并进行多次刷新。

project

 •  查看应用服务器日志:虽然对新闻详情进行了多次访问,但日志显示只有第一次访问是从MySQL数据库读取,其它访问都是从缓存读取。

project

 •  查看Redis服务器:当详情页被访问后,新闻内容会被存储在键名为news::nid的值中,其中键名为系统自定义,nid为新闻内容的ID号。

project

管理后台的运行与测试

1、应用程序的运行。

1.1、在应用服务器2上运行新闻管理后台。

project

1.2、在应用服务器3上运行数据服务模块。

project

2、应用系统的测试。

2.1、数据读取测试:查看新闻列表页及新闻详情。

project

 •  查看管理后台日志:每次查看列表页时,管理后台会直接从数据库读取数据以保证当前列表为最新状态;查看新闻详情时,管理后台会优先从缓存查找数据,若缓存中不存在则会从MySQL数据库读取数据。

project

2.2、数据写入测试:新增一条新闻,然后对其进行修改与删除。

project

 •  查看管理后台日志:管理后台会直接将数据写入RabbitMQ,并迅速返回结果给用户。

project

 •  查看数据服务模块日志:数据服务模块位于消息队列的消费端,每当RabbitMQ中有数据时,数据服务模块就会从RabbitMQ中读取数据并更新至MySQL和Redis缓存。

project

 •  查看RabbitMQ管理后台:查看Queues栏目,在虚拟主机/news_host下会出现一个消息队列news_queue,此消息队列为系统自动创建。当在管理后台频繁写入数据时,来不及处理的数据会暂存在RabbitMQ中。

project
  • Ready:消息队列中未被消费处理的消息总数。
  • Unacked:消息队列中已被消费处理但未被确认的消息总数。
  • Total:未被消费处理加上未被确认的消息总数。

发表评论

评论数量:0