《隔离十四天》系列 -第七天 -谈谈高并发高可用系统的优化思路

前言

隔离第七天了,已经过去一般的时间了,甚是欣慰,想想还有七天要过,真的好激动,激动也不能断了学习,还是要好好学习的,毕竟好好学习才能天天向上。
当然了今天也是身体健康的一天,不然这时候我已经在医院的床上躺着了。后面的日子也要健健康康的。
在这里插入图片描述
好了言归正传,今天接到了四个面试,当然了结果依然是不尽如意,虽然也有自我感觉良好的,但是还是没有offer啊,所以还是老老实实的学习吧,学习才是硬道理。
在这里插入图片描述
今天遇到了一些面试中数据库优化以及缓存优化的问题,自己答的不是特别好,所以做一个总结来加深自己的记忆。

高并发高可用系统优化思路

  • 硬件、操作系统层面的优化:

    1、提升硬件性能,选择高性能的服务器。
    2、增加集群负载均衡、如使用Nginx负载均衡,也可以做限流。
    3、对数据进行动静分离,若访问静态资源如静态页面、图片可通过Nginx进行路由至固定路径获取,无需访问后台服务器,降 低服务器压力。

  • 应用系统架构的优化

    1、系统设计方面采用分布式设计
    2、对系统进行高可用设计,防止单点故障的问题。同时也要做服务容错
    3、做一定的应用拆分,防止应用故障,导致所有功能不可用。
    4、使用缓存,将频繁请求的数据存放在缓存中,同时对缓存也要进行一个高可用的部署,防止缓存宕机导致大量的请求发送到DB中。
    5、使用消息中间件来实现访问量的削峰填谷,以及分布式事务的一致性问题。

  • JVM优化

    1、对于JVM选择合适的垃圾收集器,以及设置合理的GC频率,要减少GC的频率和Full GC的次数
    2、对于高并发环境下考虑线程安全问题,选择使用ConcurrentHashMap来代替HashMap,合理的使用synchronized、local、reentrantLock等。
    3、合理使用线程池,减少线程的创建、销毁的资源开销,但是使用线程池也要考虑服务器CPU的问题。
    4、减少锁的持有时间,避免出现死锁。

  • 数据库优化

    1、选择良好的数据库架构设计,比如读写分离,水平拆分、垂直拆分;
    读写分离、垂直拆分即为多数据源问题,拆分规则可以根据位置、业务发生时间、业务类型等,
    水平拆分注意拆分规则,可以采用用户ID,账户ID等进行拆分,注意避免多数据库联合查询、 分布式事物等,为此可以在设计表的时候进行一定的数据冗余。
    2、合理使用缓存,例如Mybatis开启一级、二级缓存,减少数据库访问,开启preparedStatement,减少运行时sql预编译开销
    3、sql语句也要注意优化:合理使用索引(单个索引、联合索引,太多会影响表插入、删除速度,jion列使用索引)
    尽量减少让索引失效的语句使用例如:like ‘%’,or,sql中拼接、sql中使用计算函数等
    多表查询使用小表驱动大表;
    select只返回需要的项,避免使用select *
    表字段设计时尽量非空,避免在where中使用is null或is not null。
    4、采用高可用的分布式事务解决方案

以上就是最高可用高并发系统的优化思路,有错误的地方希望多多指正。

另外有其它思路的话欢迎下方评论交流思路!万分感谢!

在这里插入图片描述

发布了92 篇原创文章 · 获赞 7 · 访问量 7538

猜你喜欢

转载自blog.csdn.net/qq_40126996/article/details/104385159
今日推荐