1、单机、集群、分布式概念
1)单机
2)集群(横向复制)
3)分布式(纵向拆分)
2、BS架构请求过程
浏览器发起请求,域名ip映射,根据ip访问cdn静态资源服务,最后去服务器获取数据服务,浏览器会缓存相关数据和静态资源;
1)web1.0架构
应用程序主要做静态文件读取,并返回给浏览器。
2)数据库开发
应用程序主要读取数据库数据,填充到前端html页面。
3)JavaWeb
MVC模式三层结构
4)javaweb的集群模式
基于MVC的横向复制模式,对整个项目的架构没影响。
4)Javaweb的分布式发展
将service层单独分离出去,形成一个单独的项目jar,单独运行。web服务器通过rpc调用,对分离出去的service进行调用。
5)Javaweb的微服务架构
将每个业务分为一个微服务,每一个微服务都有一个完整的调用链。在微服务内部,将需要对外提供的接口,包装成rpc接口,对外部开放。
3、前后端交互模式过程
1)整页交互
浏览器请求皆为页面级别的请求,每次请求都是一次页面跳转或者刷新。
2)页面+ajax混合
浏览器请求主要为页面级请求,有局部刷新使用ajax刷新数据,页面体验更好。
3)单页应用mvvm模式
首次请求返回页面,后续请求皆为restful返回json数据,性能最佳。
4、架构思路解决方案
系统架构的评价依据为,并发数(tps)数据量级(qps)
优化方案:从系统架构的从下往上看。
1)数据存储层面
1、数据库架构层面分库分区分表 2、使用搜索中间件优化性能 3、缓存优化
2)服务层面
1、拆分服务 2、横向扩展,集群负载 3、前端负载和网络cdn优化
5、架构具体解决方案概述
1)session跨域共享
方案:1、负载使用hash;2、使用redis共享session
2)缓存方案
方案:1、缓存穿透;2、缓存击穿;3、缓存雪崩
3)mq服务消息交换方案
方案:mq服务管理消息交互,应用程序解耦
4)Java多线程优化同步转异步
方案:单线程到多线程转换,多线程安全问题,同步转异步,单线程如何转多线程
5)数据库架构
方案:1、数据库架构设计;2、数据分片设计;3、数据库中间件方案