分布式思维课笔记

javaweb架构进化过程:

  1. javaweb雏形
    在这里插入图片描述
    单系统,单数据库

  2. javaweb 集群
    在这里插入图片描述
    当javaweb 雏形不能承受服务压力时,可以通过对原有系统的“复制”形成集群,从而缓解服务压力,当然有集群就需要有负载均衡。同时对数据库使用读写分离。

  3. javaweb 分布式
    在这里插入图片描述
    在使用集群时,如果只是因为某个压力服务过大需要集群时,那么就会造成“浪费”。可以通过重要服务分离独立来解决,从而有了“分布式”。分布式中需要解决的就是服务远程调用,以及分布式事务。

  4. javaweb 微服务
    在这里插入图片描述
    分布式似乎已经是很好的架构模型了。近些年又出现了微服务。如果说分布式是以技术为基础的横向拆分扩展,那么微服务就是以业务为核心的纵向切分。

高并发常见解决方案

  1. 缓存(list、redis、memached)
  2. 横向拓展(集群负载)
  3. 拆分高负载服务,独立为一个模块
  4. 大表数据切分(mysql分库分区分表 --> mycat)
  5. 使用搜索中间件:solr、elasticsearch

缓存

在这里插入图片描述
使用缓存时要解决两个问题:

  1. 缓存击穿 :缓存中不存在值时,从数据库中查
  2. 雪崩:大量缓存数据同时过期,同一时刻数据库访问量骤增(过期时间设置上想办法)

消息队列

在这里插入图片描述
消息队列的意义在于使服务与服务之间解耦。

  1. 每个应用启动时,主动建队列
  2. 后续无论是收信息,还是发信息都只管往队列放数据
  3. 队列中数据该往哪里路由,由mq管理者来配置,跟应用程序无关

同步转异步

在这里插入图片描述

java jdk 自带 FetureTask 和 Callable 来实现。

猜你喜欢

转载自blog.csdn.net/weixin_37077950/article/details/83317749