云栖问答

找不到答案?去提问题

2016-07-20 18:13:38

对于容器集群里面的会话粘性一般如何设计,对于不同时间的服务量,如何控制容器的关闭和启动?


来源: [直播] 基于Java容器的多应用部署技术实践

您好!我想请教几个问题:

  1. 对于容器集群里面的会话粘性一般如何设计?
  2. 对于不同时间的服务量,如何控制容器的关闭和启动?
  3. 如何启动的容器比较多时DB链接过多该如何做好规划?
    谢谢!

1个回答

0

weipeng2k 已采纳

第一个问题

会话粘性一般鉴于应用容器集群的方案,诸如Jboss集群,但是目前阿里采用的是集中式会话管理,目的是保证容器本身是无状态的。

一般来说可以选择使用:

  1. 基于cookie传递,只是部分key,而数据存储还是在服务端的共享存储,诸如:db或者memcached之类;
  2. 如果有session概念,可以通过使用外部存储加以保存,使容器能够状态无关,例如:tomcat使用memcached扩展的sessionfactory,可以参考。

总之,容器或者说应用服务器的无状态是能够规避会话迁移和粘性的方式,否则难以处理。

第二个问题

在单应用环境下也存在这样的问题,首先需要定义发布的阶段:目前阿里有 部署流量进入流量切出退部署 等多个步骤,在一个应用准备停止之前,首先做的就是将流量切出。

流量切出应用之后,会适时的等待一段时间,由于前端流量都有超时的概念,所以新请求不会进入,而等待一个安全的时间窗口之后,就可以将应用退部署。

第三个问题

应用机器数过多时,DB连接就会分配出现瓶颈,因为每个DB实例都会有连接的上限,应对这个问题目前在阿里是使用TDDL分布式数据访问层加以屏蔽这个连接的细节。开源的方案可以关注阿里的cobar,它作为前置支持mysql协议的proxy,使得连接资源得以极大缓解。

1
GO

看了该问题的人还看了

2122
浏览
0
收藏
邀请他人回答