高并发/性能调优/架构

关于性能需要熟悉的三个指标为:并发用户响应时间TPS(每秒事务处理个数)。

比如:单台服务器配置为32核CPU,64G内存, JVM内存6G,性能测试结果:平均响应时间为200ms,并发用户为300个,TPS为1500。为了满足未来发展的需要,系统的生产环境需要配备多台服务器,如:4台。   

我发表一下对性能调优的一些看法,我觉得需要从以下几个方面着手做:

  1. 通讯
  2. 应用集群部署
  3. 缓存
  4. 资源动静分离
  5. 数据库集群(Orace Rac)
  6. SOA服务优化

1.1首先说一下通讯,通讯层面需要采取异步线程通讯模式,比如socket nio(Netty)异步线程通讯模式,此模式有负责接收消息的线程,有负责处理消息的线程,流水线模式分工协作。常使用的Tomcat6.0版本以后对8080端口的通讯监听就是采用的socket nio(Netty)异步模式。

1.2 说到通讯还需要提一下另外一种使用场景,在通讯层面采用队列(比如activemq)或者缓存(redis)。例如处理秒杀场景,并发量大,先将所有请求接收放入队列或者缓存,然后从队列或者缓存中获取部分请求处理,处理完一部分再获取一部分处理,直到秒杀结束(即库存不足)。如果秒杀结束,队列中还有消息未处理,那么将这些消息全部返回客户端,返回商品已售完。

2应用的集群部署,我们项目是采用ngnix做反向代理,将用户请求分发到集群环境中的不同服务器,降低了单个服务器的压力,起到负载均衡的作用,

(保持应用服务器【tomcat】的稳定)

同时,它带来了很多其他好处,比如:

增加系统的并发处理能力,可以处理更多的用户请求;

防止出现因某台服务器宕机而导致业务中断的单点故障,因为某台服务器出现故障时,ngnix反向代理会做到自动隔离该服务器,不再将请求转发到宕机的服务器;

可做到热部署,在上线过程中选择部分服务器重启,保证业务不间断运行。

3 缓存,我们项目采用redis做缓存服务器,将查询多修改少的数据放入缓存(比如:产品列表啊),页面显示产品列表时直接从缓存中获取,无需通过数据查询,减少IO操作,大大提高的查询的速度,同时也减轻了对数据库的压力。(保持数据库的稳定)

4 资源动静分离,项目里面如果存在大量的js、css、html、图片等静态资源,需要将这些静态资源单独部署到服务器(比如:阿里的CDN),然后通过远程连接地址(比如:http://192.168.2.1:8080/picture/dog.jpg)访问,可提高页面加载速度,同时减轻应用服务器的压力。

5 数据库集群部署,可防止数据库访问应用的单点故障,减轻数据库访问压力,我们公司dba工程师会将oracle部署为集群的rac模式(mysql为mycat模式),用到两台服务器安装数据库,两台服务器的数据库数据存储在同一块共享磁盘。

6 Soa服务优化,公司采用了dubbo分布式框架(基于SpringCloud、阿里巴巴的微服务架构),系统直接的接口调用通过dubbo,比如我们项目调用财务系统的支付接口,该接口就是由财务系统将地址发布到dubbo,然后我们写http客户端去调用dubbo,由dubbo将请求转发财务系统。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值