tcp

TCP接入层的负载均衡、高可用、扩展性架构

一、web-server的负载均衡

互联网架构中,web-server接入一般使用nginx来做反向代理,实施负载均衡。整个架构分三层:

  • 上游调用层,一般是browser或者APP
  • 中间反向代理层,nginx
  • 下游真实接入集群,web-server,常见web-server的有tomcat,apache

 

整个访问过程为:

  • browser向daojia.com发起请求
  • DNS服务器将daojia.com解析为外网IP(1.2.3.4)
  • browser通过外网IP(1.2.3.4)访问nginx
  • nginx实施负载均衡策略,常见策略有轮询,随机,IP-hash等
  • nginx将请求转发给内网IP(192.168.0.1)的web-server

 

由于http短连接,以及web应用无状态的特性,理论上任何一个http请求落在任意一台web-server都应该得到正常处理(如果必须落在一台,说明架构不合理,不能水平扩展)。

 

问题来了,tcp是有状态的连接,客户端和服务端一旦建立连接,一个client发起的请求必须落在同一台tcp-server上,此时如何做负载均衡,如何保证水平扩展呢?

 

二、单机法tcp-server

单个tcp-server显然是可以保证请求一致性:

  • client向tcp.daojia.com发起tcp请求
  • DNS服务器将tcp.daojia.com解析为外网IP(1.2.3.4)
  • client通过外网IP(1.2.3.4)向tcp-server发起请求

 

方案的缺点?

无法保证高可用。

 

三、集群法tcp-server

通过搭建tcp-server集群来保证高可用,客户端来实现负载均衡

  • client内配置有tcp1/tcp2/tcp3.daojia.com三个tcp-server的外网IP
  • 客户端通过“随机”的方式选择tcp-server,假设选择到的是tcp1.daojia.com
  • 通过DNS解析tcp1.daojia.com

用 netstat 命令,分析网络连接情况

  1. // 用jps命令,显示所有JAVA进程。
  2. # jps
  3. 18374 DesktopServerLauncher
  4. 14690 Bootstrap
  5. 23211 Jps
  6. //除了jps那行,其余全是JAVA进程。
  7. // 用netstat命令,显示进程ID和程序名(p);然后用grep命令找出进程18374;然后用head命令显示前3行。
  8. # netstat -antp | grep 18374 | head –3
  9. tcp        0      0 :::54104                    :::*                        LISTEN      18374/java
  10. tcp        0      0 ::ffff:

HTTPS工作原理和TCP握手机制

1、HTTPS的工作原理

HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL协议不仅仅是一套加密传输的协议,更是一件经过艺术家精心设计的艺术品,TLS/SSL中使用了非对称加密,对称加密以及HASH算法。握手过程的具体描述如下:…

TCP协议缺陷不完全记录

零。前言

TCP自从1974年被发明出来之后,历经30多年发展,目前成为最重要的互联网基础协议。有线网络环境下,TCP表现的如虎添翼,但在移动互联网和物联网环境下,稍微表现得略有不足。

移动互联网突出特性不稳定:信号不稳定,网络连接不稳定。虽然目前发展到4G,手机网络带宽有所增强,但因其流动特性,信号也不是那么稳定:坐长途公交车,或搭乘城铁时,或周边上网密集时等环境,现实环境很复杂。

以下讨论基于Linux服务器环境,假定环境为移动互联网环境。记录我目前所知TCP的一些不足,有所偏差,请给与指正。…

随手记之TCP Keepalive笔记

零。前言

TCP是无感知的虚拟连接,中间断开两端不会立刻得到通知。一般在使用长连接的环境下,需要心跳保活机制可以勉强感知其存活。业务层面有心跳机制,TCP协议也提供了心跳保活机制。

一。TCP Keepalive解读

长连接的环境下,人们一般使用业务层面或上层应用层协议(诸如MQTT,SOCKET.IO等)里面定义和使用。一旦有热数据需要传递,若此时连接已经被中介设备断开,应用程序没有及时感知的话,那么就会导致在一个无效的数据链路层面发送业务数据,结果就是发送失败。…

Page 1 of 41234