分布式计算编程项目一

并发向量计算服务及性能测试

项目初步目标

准备:

安装jdk,安装maven,为maven设置阿里仓库,用maven编译helloworld版的JAVA程序。

初步目标:

(1)设计支持多客户端并发访问的向量计算服务器程序。(支持向量点乘、向量叉乘运算)

(2)利用JMeter测试你的服务器程序并发性能(平均响应时间和TPS指标)

设计报告

1.编写目的

完成对支持多客户端并发访问的向量计算服务器程序(支持向量点乘、向量叉乘运算)的设计。

2.实现功能

1.程序中服务器支持多客户端并发访问;

2.设计了一个可交互的可视化界面;

3.客户端连接成功后有提示功能;

4.输入向量后支持点乘与叉乘运算;

5.输入值异常时会进行阻断;

6.只输入单个向量后会进行等待,直到输入正确向量;

7.客户端点击”退出“后迅速与服务器断开,完成退出。

3.程序系统的结构

在main文件夹里的java文件夹里新建chapter05

里面的TCPClient是客户端(一直不用改),TCPThreadServer是服务器端(点击后一直运行不用管),VectorOperations是服务器会调用的向量计算类,TCPClientThreadServer是可交互界面。

相关知识具体见:

4.可以改进的地方

我为了后面的性能测试,把服务器对客户端返回的错误提示都去掉了,这部分后面还可以加上。

比如:

  • 叉乘时,用户输入的两个向量不都是三维向量,可以提示“请输入两个三维向量”;
  • 叉乘时,用户输入两向量相同,可以提示“这样计算无意义(因为值永远为0)”
  • 点乘时,用户输入两向量长度不相等,可以提示“请输入长度相等的向量”
  • 计算过程中,用户未输入完整向量即点击“发送”,返回“请重新输入向量”

测试报告

1.输入项与输出项

必要输入项:

1.端口号(这里设置为7777);

2.选择点乘或叉乘;

3.如果选择点乘,必须保证输入的两向量长度相等,如果选择叉乘,必须保证输入的两向量均为三维。

输出项:

1.开始连接成功提示“对话已连接”;

2.中间会输出客户端发给服务器的操作要求,如“dot;向量1;向量2”或"cross;向量1;向量2";

3.用户输入正确格式的向量后输出计算结果,点乘返回值,叉乘返回向量;

4.后面对话结束提示“对话已关闭!”

2.性能

我电脑是8核16逻辑处理器的,同时处理500个线程请求,会输出:


TCP达到每秒503.5,平均响应时间0ms。详见

3.代码的改进过程

原来版本的输出是这样的:

1.通过仔细研究程序,我发现了一个”if else“的进入条件不当导致服务器每次返回的计算结果会多重复一次,于是对它进行了修改;

2.开始设置的是服务器连接成功后先输出”欢迎使用本服务“,但是后面在做性能测试时这句话的存在导致JMeter无法收到正确返回的计算结果,我就把它修改为客户端表示”连接成功“,这样不管是在界面上运行还是性能测试都没有问题了。

posted @ 2024-05-24 15:10  岁月月宝贝  阅读(10)  评论(1编辑  收藏  举报