公预善其事, 必先利其器-分布式思维思维导图&&学习笔记

公预善其事, 必先利其器-分布式思维思维导图&&学习笔记_第1张图片

1. 软件-互联网发展史

1.1.
公预善其事, 必先利其器-分布式思维思维导图&&学习笔记_第2张图片
1.2. Java编程里, 两个高峰->高并发/高可用

2. 集群与分布式

2.1. 概念图解
公预善其事, 必先利其器-分布式思维思维导图&&学习笔记_第3张图片

2.2. 概述
集群
复制模式, 每台机器做一样的事情
分布式
两台机器分工合作, 每台机器做不同的事情
2.3. 业务图解
公预善其事, 必先利其器-分布式思维思维导图&&学习笔记_第4张图片

2.4. 扩展
1.更改本地host-> 达可到更改目标机器,欺骗浏览器
2.全站搜索 不指定业务表的搜索, 任何一个中数据like匹配 ->使用搜索中间件解决
3.并发数(tps /transation per seconds) -> 每秒钟的访问—每秒处理事务数

  • 单个tomcat ,能承受500tps-> 在稳定情况最大承受量

2.5. 架构演进过程

浏览器静态页面
数据库开发网站->jsp开发 page/request/session/context, 应用程序读取数据库表,填充html模块
JavaWeb雏形 ->三层架构
集群->把整个服务复制一份
分布式
将Service层单独分离出去, 成为单独的一个项目jar, 单独运行, Web服务器通过rpc框架, 对分离出去的service进行调用
微服务
从业务角度,细分业务为微服务, 每一个微服务是一个完整的服务, 在微服务内部, 将需要对外提供的接口, 包装成rpc接口, 对外部开放
2.6. 服务治理
流行框架

  • dubbo/springCloud

跨系统调用

  • rpc,RMI, webService, http请求, 网络达到服务访问

服务集群

  • 有负载路由

服务发现

  • zookeeper
  • Eurka

数据积累大
1.分库/分表

  • 需要修改业务sql
  • 有侵入性
  • mycat中间件
    公预善其事, 必先利其器-分布式思维思维导图&&学习笔记_第5张图片
    2.分区
  • 对sql语句没有侵入性
  • 对库没有办法减压(mysql单表到达700w, 性能急速下降)

2.7. 前后端交互模式

  • 整页提交
    特征
    浏览器请求均为页面级请求, 每次请求都是一次页面跳转,刷新
  • 页面+ajax混合
    页面请求主要为页面级请求, 有局部刷新使用ajax刷新, 页面体验更好
  • 单页应用MVVM模式
    首次请求返回页面html, 后续请求皆为restful返回json
    公预善其事, 必先利其器-分布式思维思维导图&&学习笔记_第6张图片

2.8. 架构思路: 架构改进中常见解决方案(重点)
架构一个系统依据

  • 系统目标是并发数(tps)多少

  • 系统要承受的数据量级

优化顺序

  • 缓存(list/redis/memached)
    缓存服务器
    redis, memached
    注意缓存的过期时间, 防止大量缓存击穿(雪崩)
    公预善其事, 必先利其器-分布式思维思维导图&&学习笔记_第7张图片
  • 横向扩展(集群)
    比较重的模式, 浪费成本
  • 拆分高负载服务, 独立为一模块
  • 大表数据切片 (mysql分库分区分表)
    公预善其事, 必先利其器-分布式思维思维导图&&学习笔记_第8张图片
  • 使用搜索中间件: solr/elasticsearch
    图解流程

公预善其事, 必先利其器-分布式思维思维导图&&学习笔记_第9张图片
session跨域共享
方案1
负载使用hash(ip)
方案2

  • 使用缓存服务器缓存session
    session共享
    tomcat自身插件, 能够session共享
    spring-session插件, 实现session共享
  • mq方案
    图解
    公预善其事, 必先利其器-分布式思维思维导图&&学习笔记_第10张图片

流程
1.每个应用启动后, 主动注册服务
2.后续收发消息, 只管收发队列中数据
3.队列中数据的路由策略(由mq管理者来配置, 与应用程序无关)

你可能感兴趣的:(Java,架构师爬行之路,分布式)