高并发吹牛经验

  日后理解后补全细节和核心,主要是现在技术技巧的几个点

  记录这些不仅仅是因为以后要做高并发的,当有感悟后再来提升自己的技术水平。

  其实说到本质,这些都没啥意思,就是利用技术的技巧来达到某件事,其实本身问题来源于技术,也是由技术解决,真可笑

  1、缓存:

    内存数据库 redis、memcache

    客户端 缓存,如Http的加载文件缓存,利用版本

  2、异步:

    多线程编程

    NIO编程,Netty

    MQ、Subscribe/Publish,这里比较有意义,首先异步可以用发布/订阅,也可以用生产/消费者,也涉及了观察者模式,注意,发布/订阅是广义上的观察者模式!而MQ,也有不少技术规范,如JMS,AMQP,MQTT;JMS吧就是类似与JPA(ActiveMQ就是典型实现),JDBC这样的规范,个人比较喜欢AMQP(adanced message queue protocal),因为它只规范了传输协议,类似与HTTP,能做到跨平台,如RabbitMQ;最后那个是面向小设备的。最后提下,Kafka是有一套自己的协议的;

  3、限流:

    秒杀系统的限流,

  4、服务降级:

    还记得鹿晗事件导致微博崩溃,就做了服务降级,还有抖音评论功能关闭防止内涵段友撑爆

  5、并发安全问题

    利用数据库保证原子性事务,有时候不一定需要事务,比喻并发签到,可以利用唯一性索引(签到日期+用户ID)保证一个用户只能成功更新一次,否则会因为数据库约束而更新失败,成功避免多次签到;又例如库存系统-1,可以用 update 库存-1 where 库存> = 1 操作保持符合条件的操作保证原子性;

原文地址:https://www.cnblogs.com/iCanhua/p/9091109.html