从性能测试方面学习Java高性能架构

从性能测试方面学习Java高性能架构

我编写了第二本计算机类书籍《高性能Java架构:核心原理与案例实战》

首先感谢安娜姐,没您的帮助就没有这本书的发行。

在这里插入图片描述

在编写这本书的时候,我心里一直有个想法,就是当前市面上的书,在讲性能调优和系统架构的时候有些过于空洞和泛泛了。

可能他讲了一部分底层原理和概念,然后就会带你把整个架构搭建起来,并且告诉你这个架构是好的。

例如Spring Boot + Spring Cloud 微服务分布式架构。

例如Dubbo + Zookeeper分布式服务架构。

他就会告诉你这是好的架构,用了一大堆技术类词汇搞的人特别头疼,其中包括SOA、SOAP、RPC、GRPC、RestFul、WebService、WebSocket。

这些内容似是而非,似乎很像,我花了很长时间全部掌握以后发现一个根本性的弊病。

那就是我似乎一直在扩展自己的框架类知识。

在这里插入图片描述

例如用Netty框架进行编写WebSocket的NIO类代码。

例如用Spring Boot框架的@RestController注解编写RestFul风格类接口。

解析WSDL编写WebService代码。

这些架构该如何选择?

在这里插入图片描述

关系型数据库有MySQL、Oracle、

时序型数据库有influxDB、OpenTSDB、Prometheus,

连接数据库有JDBC、Spring JDBC、Hibernate、MyBatis、MyBatis-plus,

微服务有Spring Boot、JFinal,

网络框架有Netty、MiNa、IOServer,

页面静态化有FreeMaker、thymeleaf,

文件存储有FastDFS、HDFS、源生FTP,

注册中心有Zookeeper、Consul、nacos、Eureka,

甚至解析JSON都有GSON和FastJSON。

这些框架或工具该如何选择?

你凭什么说哪种框架好哪种差?

在这里插入图片描述

甚至你今天写的代码使用的for循环、while循环、do/while循环

代码中用的是if/else还是switch/case,switch/case性能会比if/else性能好么?

代码中到底能不能用i++进行计数?

System.out.println到底耗费多少性能?

这些代码细节该如何选择?

在这里插入图片描述

这些宏观上的架构和细节上的代码选择多到让人发指,让人爆炸。

在这里插入图片描述

学完Java学Python,学完Python学Golang。到最后发现似乎Java到最后都没有深入。

Spring Boot 普通项目的 HTTP 接口的TPS 能够达到多少?

其实我遇到过很多Spring Boot项目,平均TPS也就是6000。遇到TPS不行就买服务器,用集群的方式硬怼用户量,服务器不够了就申请资金,能用钱解决的事统统不去想用技术解决。

可如果不用任何框架,写套代码可以达到30000TPS,究竟要怎么做?单只用JavaEE的Servlet性能一定比Spring Boot性能差么?

甚至我想问一个最简单的问题,你公司现在的代码能够承受多少用户量而导致不崩溃?你现在可以直接回答实际最大并发数字么?

此时市面上那些个空洞的,讲框架讲原理的书一下似乎都没有用了。不允许你使用框架的时候,自然任何框架都失去了意义。

因为如果没有框架下,回到了大一你曾经第一次在黑窗口中写Hello World的时候,你是否能经过业务逻辑达到30000TPS并发。
在这里插入图片描述

曾经我也没有这种思想,也没有人告诉我如何做这种事情。

在后来逐渐工作中我才领悟到了,多线程也好,GC垃圾回收也好,框架也好,中间件也好,数据库也好,都重要,也都不重要。

最重要的是你需要掌握自己编写的系统,毕竟你编写的系统不是功能实现就结束了。

在此之后的事情呢?

你系统现在多少并发?长时间运行或一些特殊步骤是否会引起内存溢出的问题?

如何优化到更高并发?有哪些优化点?

一旦突增用户量,哪怕系统响应缓慢,但是否仍然可以继续排队响应?而不是直接爆炸?

此时我用第二本书去写,就是想告诉大家,所有的代码都是要靠性能测试与性能监控,才能达到理想的性能。

其中包括:

MySQL 基准测试:sysbench 与mysqlslap

代码单元的性能测试与优化JMH

Web 性能测试解决方案:JMeter

在这里插入图片描述

除此之外还包括MySQL相关优化、扩展监控等内容如下所示:

SQL 优化与索引优化

MySQL 主从复制

MySQL 分库分表:MyCAT

MySQL 性能监控解决方案:Prometheus+Grafana

除此之外还包括

Java堆原理及堆解决方案

Java堆外缓存原理及堆外缓存方案

Java磁盘缓存原理及磁盘缓存方案

基于Redis 的分布式锁解决方案

最终开头与结尾对市面上近十年的架构进行了轻度讲解,其中包括:

自动化测试架构

自动化持续集成架构

高并发架构

响应式编程架构

负载均衡架构

监控架构等等一系列内容。

在这里插入图片描述

书中对很多技术特点进行抛砖引玉式讲解,希望可以让大家有兴趣先把书读厚,而后再把书读薄!

在这里插入图片描述

购买链接如下所示。

https://item.jd.com/13387600.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张方兴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值