互联网框架演进
三层:
MVC架构
四层:
接入层
业务逻辑层
数据访问层
数据层
五层:
接入层
异步提交层
业务逻辑层
数据访问层
数据层
异步架构:用于数据不明感
MQ:消息队列,增大并发
先写:将数据写到数据库
再读:用户再从数据库中读出来
如果你写了马上读就会出现查不到的情况
解决方案:
朋友圈,先在前端设计一条假的,再在几秒后刷新一条真的出来
同步架构
微服务架构:
微服务关系层:用户接入管理,请求的合法性安全性验证,路由请求,请求回包(数据包)
微服务层:数据访问处理和业务逻辑处理
数据层:持续化存储(Mysql,MongoDB)和缓存加速(Mencached,Redis)
注册中心:微服务的Host和Port(IP和端口)远程调用
配置中心:每层服务配置《KV》,配置更新实时同步,配置项热加载(不是资源热更新)
微服务路由:网关层获取和微服务层信息交互,微服务层和网关层请求交互
请求流:
APP:客户端操作
网关::直接和客户进行沟通
业务逻辑层(无状态)
数据访问层:主要进行增删改查
DB
系统架构图:
用户请求进入网关层再进入Session区
网关层:
建立与客户端通信的加密通道
数据合法性与正确性的验证
Session:会话
一系列有始有终的动作和消息
存放在网关(为了防止一个网关出错使用多个网关存放相同的Session)
安全保证:
连接通道加密
传输数据加密
数据加密方法:MD5加密+盐(N位随机数)
盐由两部分组成:一部分在程序中,另一部分在数据库中
加密算法:
对称加密(AES)
随机生成秘钥:
具体四步握手:
客户端和服务器即使客户端和网关
通信实现:
三次握手四次挥手
业务逻辑层:
A发消息给B
A先到服务器,服务器再发送到B都是长链接
无状态设计:
系统不存储任何请求上下文信息,请求提交到任何服务器,处理结果相同,可以很好的解决宕机,扩展服务器问题,要解决负载均衡
同步:
发送一个消息调用,在没有得到结果之前,该调用不反回,线程阻塞模式
异步:
异步调用发出,调用者立即返回。结果完成后通过状态,和回调来通知线程
阻塞I/O模型:
轮询非阻塞:
I/O服用:
单线程监听多个输入:轮询实现例子NODE.JS
幂等设计:
某个操作重复执行多次,仅能传输一条消息(数据操作:Creat,Update,Read,Delete)
update需进行幂等(部分)
淘宝相对值修改:买家购物扣钱到商家收钱(第三方状态标识订单状态)
事务:
准备:协商
提交:事务进行
回滚:失败进行序列化等待,执行提交失败的操作
分布事物:
准备,提交,回滚
DNS服务器负载均衡