0%

分布式与集群

分布式概念描述

  • 概念

    旨在支持应用程序和服务的开发,可以利用物理架构由多个自治的处理元素,不共享主内存,但通过网络发送消息合作。——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