/nio-server

测试nio服务,测试java的nio服务,相关测试例子

Primary LanguageJava

nio-server

代码简单易懂就没必要说明了。进入目录后,mvn clean install -Dmaven.test.skip 编译一遍即可。

一、LOG日志导致吞吐量上不去的原因

原因搞错了

  1. 为啥测试过程中 System.out.println() 会比log日志更快,原因是System.out.println() 输出的字符串短,而log输出的到控制台的字符串长很多。System.out.println()如果输出很多的日志,一样会性能下降,已验证。由于服务运行一般是后台运行的,所以这个问题不大。
  2. 跟是否异步写入文件,暂时无太大关系(远还没到这文件写入的瓶颈),但是仍然建议异步写入文件。
  3. 如果日志有性能瓶颈可以使用Log4j2。Log4j2异步性能非常的强:log4j2优越的性能其原因在于log4j2使用了LMAX,一个无锁的线程间通信库代替了logback和log4j之前的队列. 并发性能大大提升。

二、为啥客户端要大于服务接口的性能呢

1、主要是为了控制连接数这变量对于客户端性能影响的问题,如果连接数很大会导致客户端需要吃更多的cpu,就会影响到服务的接口性能,毕竟在同一个服务器上(其实实际影响不大),那么就不容易得到服务器接口真实的水平,就会影响我们验证IO和连接、和吞吐量的关系。

nodejs模块

  • node版本 14以上即可。
  • 进入nodejs目录,执行npm i,即可安装相关模块依赖。默认端口7080,启动后就可以进行测试啦。

springboot模块

  • 如果要使用tomcat进行测试,可以在pom文件中去掉 undertow依赖,聪明如你,肯定知道怎么搞啦。
  • VertxHttpClientUtil 是使用vert.x相关核心包,NIO客户端。如果你有需要大量并发的请求外部接口,那么这个是一个非常不错的选择。

vert.x 模块

  • 兴趣挺大,暂时没想到有什么可写的。实在要讲的话,可能会讲它的分布式系统方案,它设计非常特别,天生就支持微服务开发,天生就具备分布式部署。
  • vert.x在IO密集型的服务中优势非常大。
  • 这个项目有一个分布式模式部署例子,分别启动 Manager, User , Order,Controller,类即可运行整个集群了,看看它是怎么进行微服务调用。actor模型跟go的csp 有的一拼。个人感觉actor更加牛逼,天生为分布式而生。

webflux 模块

  • 非常恐怖的技术,难以理解的响应式编程,处理数据和业务像面条一样的,像流水线一样处理你的业务。非常恐怖,比C语言还要恐怖的技术。
  • 活不久的技术,千万不要入坑,协程的到来应该就是它死亡的那天。建议入坑vert.x,java协程的到来应该会为它赋予更强大的生命力。