高并发/性能调优/架构

关于性能需要熟悉三个指标:并发用户,响应时间,tps(每秒事务处理个数))
比如:单个服务器配置为32核,64g内存,jvm内存为6g,性能测试结果:平均响应时间为200ms,并发用户为300个,tps为1500为了满足未来发展需要,系统需配备多台服务器,如:4台.
1.通讯 2.应用集群部署 3.缓存 4.资源动静分离 5.数据库集群(orcle rac) 6.soa服务优化
1.1首先说一下通讯,通讯层面需要采取异步线程通讯模式,比如socket nio异步线程通讯模式,此模式有负责接收消息的线程,有负责处理消息的线程,流水线模式分工协作.常使用tomca6.0以后对8080端口的通讯监听就是采用的socket nio 异步模式.
1.2说到通讯还需要提一下另外一个场景,在通讯层面采用队列(比如activemp) 或者缓存(redis).列入处理秒杀场景,并发量大,先将所有请求接收放入队列或者缓存然后从队列或者缓存中获取部分请求处理,处理完一部分再获取一部分处理,直到秒杀结束.如果秒杀结束,队列中还有消息未处理,那么将这些消息返回给客户端,返回商品已售空.
2.缓存,我们项目采用redis坐缓存服务器,将查询多修改少的数据放入缓存(比如:产品的列表),页面显示产品时直接从缓存中获取,无需通过数据查询,减少io操作,大大提高查询速度,同事减轻数据库压力
3.应用的集群部署,我们的项采用nginx做反向代理,将用户请求分发到集群环境中的不同服务器,降低单个服务器的压力,起到负载均衡的作用,同时,他带来了很多其他好处,比如:增强系统并发处理能力,可以处理更多用户请求;防止因某个服务器宕机而导致业务中断的单点故障,因为某台服务器出现故障时,nginx反向代理会做到自动隔离该服务器,不在将请求转发到宕机服务器;可以做到热部署,在上线过程中选择部分服务器重启,保证服务不间断运行.
4.资源动静分离,项目如果有大量js,css,html,图片等静态文件,需将这些静态资源单独部署到服务器(如阿里的cdn),然后通过远程链接地址(比如http://192.168.1.2:8080/picture/dog.jpg)访问,可以提高加载速度,同时减轻服务器压力.
5.数据库集群部署,可以防止服务器访问应用的单点故障,减轻数据库访问压力,我们公司dba工程师会将oracle部署为集群的rac模式,用到两台服务器安装数据库,两台数据库服务器数据存储在一个共享磁盘.
6.Soa服务优化,公司采用dubbo分布式框架,系统直接的接口调用通过dubbo,比如我们项目调用财务系统的支付接口,该接口是由财务系统将地址发布到dubbo,然后我们写http客户端调用dubbo,由dubbo请求转发财务系统.

你可能感兴趣的:(面试)