分布式概念描述
概念
旨在支持应用程序和服务的开发,可以利用物理架构由多个自治的处理元素,不共享主内存,但通过网络发送消息合作。——Leslie Lamport
分布式的三个特点与
* 多节点
* 消息通信
* 不共享内存
三个容易混淆的概念
- 分布式系统(distributed ststem)
- 集群(cluster)
- 分布式计算(distributed computing)
分布式系统是多节点的,集群也是多节点的,但是区别在于节点的功能
如:卖家端和卖家端是分布式的;
如果卖家端部署在对台服务器上,那么卖家端是集群;
简单说就是 功能不同是分布式,功能相同是集群。
分布式系统与集群的区别
区别
分布式系统强调的是不同的功能模块的节点;
集群是相同业务功能模块的节点;
分布式系统中的每个节点都可以做集群。
集群并不一定是分布式的。水平扩展
集群
垂直扩展
分布式
session理论
广义session
会话控制:
http协议是无状态的,对于同一个url请求并没有上下文关系,当用户完成登录后,就要有一个机制保存用户的登录状态和信息,在后续的请求中,能够验证用户的身份和检查用户信息。
可以理解为一种保存key-value的机制:
session机制中的关键点:
1.如何设置和获取key
2.如何保存和正确获取多赢的value从key的方面看:
会话会有两种比较常规的方式,sessionId和token;
sessionId:
客户端请求服务端时,服务端通过setCookie就可以在http头里面设置sessionId这个key和对应的value的值,而客户端的cookie会将它保存住,在后续的请求中,会自动带上。
token:
使用token时,需要手动在http head头里或者url里面设置token这个字段,服务器收到请求后,再从head头里或者url取出token进行验证(对安全要求严格是,会配合签名和token一起使用)。
无论是session还是token,它们都是全局唯一的,一个用户一个标识。它的本质就是一个key,key对应的value就是用户的信息。无论key还是value,一方没有保持住,我们就无法分别用户身份、获取用户信息。
处理分布式session问题
处理分布式session问题
session保持不住:
如浏览器禁用cookie,分布式系统中session问题–多个应用服务器时,持有的用户session没有同步多个服务器。
此时可以用一个专门的服务去保存用户的session信息,其它服务需要用户的session信息时,都通过这个专门的服务去获取。这个服务通常是用redis集群或者主从复制去做的。当然,微小型项目或者开发测试时,单机版也可以。
登录时设置好key保存用户信息,登出时让value失效即可。
chrome浏览器下查看cookie:
command+option+i:
上方Application>左侧Cookies
狭义session
httpsession