软件架构设计(十五) Web架构设计(二)

上一次我们知道了,当Web架构不满足业务需求时,可能需要不同的架构去支撑,因此出现了架构的演化。但是演化过程中可能遇到一些不同的问题,会有一些不同的技术去解决.

当我们有多台应用服务器做集群时, 一个问题是客户端的请求如何分发到对应的服务器上去, 这需要使用负载均衡技术来解决. 而另一个是用户每次访问到的服务器不一样, 如何维护session的一致性的问题. 我们先来了解一下这个问题是如何产生的。

比如一台客户机, 打开浏览器之后, 访问某个网站时, 与服务器的交互通常是客户端发送请求, 服务端接受请求之后处理逻辑进行响应. 如果只是查询, 第一次请求A服务器,A服务器返回结果, 第二次请求B服务器, B服务器同样能够返回查询结果.

但如果业务是购物呢, 第一次请求是将一件商品加入购物车(请求的是服务器A), 第二次请求是将另外一件商品加入购物车(请求的是服务器B), 此时就可能出现问题, 因为我们的购物车是用session记录了用户选定了什么商品, 第一次在A服务器产生了session, 第二次在B服务器却没有你在A服务器产生的会话session, 此时你会发现, 你上一次添加的商品已经不在了. 包括所有与登录相关的操作都将不可用, 因此存在了这个问题, 也就是请求的有状态和无状态的关系.

session一致性问题解决

一个请求前后没有任何关系, 那就是无状态的请求, 如果一个请求前后有关联, 那么就是有状态的请求.

有状态和无状态

  • 无状态服务(stateless service) 对单词请求的处理, 不依赖其他请求, 也就是说, 处理一次请求所需的全部信息, 都包含在这个请求权里, 要么可以从外部获取到(比如数据库), 服务器本身不存储任何信息.
  • 有状态服务(stateful service) 则相反, 它会在自身保存一些数据, 先后的请求时有关联的.

所以开发时我们要尽量做成无状态的服务, 从而避免不必要的麻烦.

所以我们想要把服务做成无状

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农小何

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值