• 35648

    文章

  • 23

    评论

  • 20

    友链

  • 最近新加了很多技术文章,大家多来逛逛吧~~~~
  • 喜欢这个网站的朋友可以加一下QQ群,我们一起交流技术。

(高并发探测)三、分布式场景常见问题之速度优化、数据同步问题

欢迎来到阿八个人博客网站。本 阿八个人博客 网站提供最新的站长新闻,各种互联网资讯。 喜欢本站的朋友可以收藏本站,或者加QQ:我们大家一起来交流技术! URL链接:https://www.abboke.com/jsh/2019/0708/6110.html 1190000019689624

场景需求

对于已有的mysql主从项目,应对数据量大时往往采取分库分表的做法,为了缩短页面响应采用一主多从的 主写+从读 的读写分离架构。
redis:Redis中文网:内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理...。使用redis一:使用redis作为php的缓存层,存储常用、相对固定的公共数据;二:添加redis缓存,组成 mysql写+ redis读 的架构;三:甚至直接采用 redis读+写 的架构。
mysql迁移redis需要后台程序的紧密配合。“读写分离”容易出现数据不一致的问题。

一些优化相关

传统前后端优化途径:
 1. 前端 
    减少请求次数:css精灵(小图合并到大图),data-image(data-icon:src=data:image/jpg;base64;xx,小图合并到js文件);
 2. 网关
    web资源防盗链refer监测,nginx限流,nginx负载均衡、nginx缓存静态资源、gzip等,http2.0;
 3. 后端
    使用redis、memcache缓存,mysql优化;

进阶:
 1. 网关
    mysql迁移redis,分布式集群部署;
 2. 后端
    添加针对高并发的消息队列,多线程、协程化,使用连接池;

分布式部署常见问题:
    登录session共享问题;读写分离的同步数据问题。
另外还各种诸如图片数据库、对象存储等。

1.分布式问题的一致处理

要同时在多台服务器上处理比如:库存超卖、订单支付问题需要频繁的过程校验,所以对并行任务串行化、使用一台机器、单一线程处理这种一致性问题最为稳妥。应对大数据量的情况采用消息队列,平衡服务器压力。

a.RabbitMQ消息队列的使用

rabbitmq官方docker说明,参考《Rabbitmq集群高可用部署详细》这里部署普通模式。

[]:~/tmp/dk/rabbitmq# docker pull rabbitmq
#docker run --name rabbit --network mybridge -e RABBITMQ_ERLANG_COOKIE='123456' -d rabbitmq 
#docker cp rabbit:/etc/rabbitmq/rabbitmq.conf ./复制出配置文件
[]:~/tmp/dk/rabbitmq# docker run --name rbt1 \
    --network mybridge --ip=172.1.12.13 \
    -v /root/tmp/dk/rabbitmq/rabbitmq.conf \
    -v /root/tmp/dk/rabbitmq/data13:/var/lib/rabbitmq/mnesia \
    -e RABBITMQ_ERLANG_COOKIE='123456' \
    -d rabbitmq
[]:~/tmp/dk/rabbitmq# docker run --name rbt2 \
    --network mybridge --ip=172.1.12.14 \
    -v /root/tmp/dk/rabbitmq/rabbitmq.conf \
    -v /root/tmp/dk/rabbitmq/data14:/var/lib/rabbitmq/mnesia \
    -e RABBITMQ_ERLANG_COOKIE='123456' \
    -d rabbitmq

相关文章

暂住......别动,不想说点什么吗?
  • 全部评论(0
    还没有评论,快来抢沙发吧!