本文继续讲述。
web socket
以前老的浏览器是采用轮询的方式进行即时通信,这样会导致压力瓶颈,消耗大量带宽。web socket采用的是全双工通信,既可以从服务端获取数据,也可以服务端主动push数据到浏览器客户端上。它还有其他优势:只要和服务端建立一次握手,传输的header少。
应用场景
1. 频繁需要更新服务器端的数据,比如消息队列,弹幕等。
2. 业务要求部署https,且将证书放在应用服务器上时。
RabbitMQ
Rab bitMQ的优点具体如下。
1)由Erlang语言开发,支持大量协议:AMQP、XMPP、SMTP、STOMP。
2)支持消息的持久化、负载均衡和集群,且集群易扩展。
3)具有一个Web监控界面,易于管理。
4)安装部署简单,容易上手,功能丰富,强大的社区支持。
5)支持消息确认机制、灵活的消息分发机制。
负载均衡实现会话保持
当我们在执行数据交互的时候,特别是在集群环境里,怎样保证我的多次请求能够落在同一台服务器上?书中提到主要有以下几种方式:基于源IP地址的持续性保持:主要用于四层负载均衡,这种方案应该是大家最为熟悉的会话保持方案,LVS/HAProxy、Nginx都有类似的外理机制,Nginx具有ip_hash算法,HAProxy具有source算法。
2)基于Cookie数据的持续性保持:主要用于七层负载均衡,用于确保同一会话的报文能够被分配到同一台服务器中。其中,根据服务器的应答报文中是否携带含有服务器信息的Set_Cookie字段,又可以分为Cookie插入保持和Cookie截取保持。
3)基于HTTP报文头的持续性保持:主要用于七层负载均衡,当负载均衡器接收到某一个客户端的首次请求时,会根据HTTP报文头关键字建立持续性表项,记录下为该客户端分配的服务器情况,在会话表项的生存期内,后续具有相同HTTP报文头信息的连接都将发往该服务器进行处理。
怎样做到session共享
Session共享的问题来源于跨站服务器之间无需反复验证,增强用户体验。有以下几种方式:
1. 基于cookie方式,加密存于根域名下。优点无需访问额外的服务器资源,缺点受限于http头部字数限制,有加密就需要占用一定的带宽。
2. 存于数据库,这种受限于数据库的性能。
3. Session复制,目前中间件tomcat和weblogic都有这种处理机制。中间件的性能是瓶颈,一旦访问的服务增多,性能下降,这种受影响比较严重。
4. 缓存服务器redis和memcache,memcache的key与session的失效机制有异曲同工之妙。所以做session共享有先天优势,而且他们也可以做集群。性能方面文件小时redis有优势。
需要掌握的语言
掌握一下go,go是新秀,部署简单,天生支持高并发,执行性能好。目前接触到的就是用go编写的构建kit,一键部署,确实挺方便。
架构知识
可以用nginx作为页面缓存和负载均衡服务器,反向代理静态资源,加入页面访问。可以使用两层的负载均衡。第一层做无状态的负载,可以作流量,爬虫,缓存等,第二层做业务逻辑相关的。
秒杀活动的架构

网友评论