互联网框架演进


三层:


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服务器负载均衡