欢迎来到DIVCSS5查找CSS资料与学习DIV CSS布局技术!
1、什么是分布式系统?
 
(1)、定义
 
这里我引用名人Leslie Lamport一句话
 
旨在支持应用程序和服务的开发,可以利用物理架构由 多个自治的处理元素 ,不共享主内存,但 通过网络发送消息合作 。
 
(2)、三个特点和三个概念
 
三个特点
 
多节点
 
消息通信
 
不共享内存
 
三个概念
 
分布式系统:假如微信订单系统上的多台服务器上,有的服务器上部署的是卖家端,而有的服务器上部署的是买家端,那么这样的集群就是分布式系统。
 
集群:假如一个项目中的系统上的多台服务器上,所有服务器上部署的都是相同的内容,那么这样的多台服务器所形成的就是集群。
 
分布式计算:就是我们把一个任务进行拆分成多个小任务,然后将多个小任务的结果结合在一起形成总的任务的结果,这样的过程就是分布式计算。
 
(3)、分布式和集群的区别和联系
 
分布式系统可以包含集群。比如说,我们的一个分布式项目,它上面的部署了很多的功能模块节点,它的每一个功能模块节点上可以部署了很多的集群。所以分布式系统中可以包含集群。
 
但是一个集群不一定是一个分布式系统。例如,我们一个All In One的项目,它上面部署了很多的集群节点,但是它就不是分布式系统。
 
2、广义的session
 
在我们的一个项目的用户的登录和登出模块,用户登录就是验证身份和存储信息,用户登出就是将浏览状态失效。
 
http协议是无状态的,对于同一次http请求是没有上下文关系的。
 
面临的问题:用户状态怎样存储?
 
通过session(会话控制)来存储用户信息和用户浏览状态。
 
2.1、实现方式一:sessionId
 
当浏览器发起请求的时候,服务器会创建一个JSESSIONID的key和value。服务器通过setCookie将JSESSIONID设置在http请求头上,客户端会将该信息存储在客户端内部,然后每一次请求都会带上该信息。
 
2.2、实现方式二:token
 
如果是token方式的话,我们需要手动的在http请求头上或者url上设置token字段,请求发送到服务器的时候,服务器回去出token字段的相关值进行验证。如果要求十分严格的话,token会结合签名一起使用。
 
3、分布式系统下的session
 
1. 非分布式系统下的架构情况
 
2. 分布式系统下的架构情况
 
水平扩展:该扩展方法就是将一个服务器进行克隆的多部署几台服务器,每一台服务器上的部署的内容都是相同的。
 
垂直扩展:垂直扩展就是将一个服务项目进行拆分成多个模块然后部署在多个tomcat服务器上,这样多个服务器上的部署内容是不相同的。
 
逃不开的问题:那就是session该如何进行存储?
 
解决该问题的最好的方法:就是利用redis做缓存,然后多台tomcat从redis进行查询,进而获得对应用户的信息,进而进行后续操作。这样就能很好的解决分布式系统下的session问题。

如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h64960.shtml