Web Serve
Tomcat
Tomcat是一款开源的应用服务器,凭借技术先进、性能稳定、体积小巧、扩展性好,深受开发人员和软件开发商的认可。
Tomcat中最顶层的容器是server,代表整个服务器。然后是Service,用于提供具体服务,一个Server包含多种Service。
Service主要包括两个部分:Connector和Container。
Connector用于处理连接相关的事情,并提供Socekt与Request、Response相关的转化。 Container用于封装和管理Servlet,并完成具体的Request请求。
注意Service可以拥有多个Connector,因为一个服务可以有多个连接,如同时提供Http和Https链接。
connector
Connector使用ProtocolHandler来处理请求的,不同的ProtocolHandler代表不同的连接类型,比如:Http11Protocol使用的是普通Socket来连接的,Http11NioProtocol使用的是NioSocket来连接的。
其中ProtocolHandler由包含了三个部件:Endpoint、Processor、Adapter。
1)Endpoint用来处理底层Socket的网络连接,Processor用于将Endpoint接收到的Socket封装成Request,Adapter用于将Request交给Container进行具体的处理。 2)Endpoint由于是处理底层的Socket网络连接,因此Endpoint是用来实现TCP/IP协议的,而Processor用来实现HTTP协议的,Adapter将请求适配到Servlet容器进行具体的处理。 3)Endpoint的抽象实现AbstractEndpoint里面定义的Acceptor和AsyncTimeout两个内部类和一个Handler接口。Acceptor用于监听请求,AsyncTimeout用于检查异步Request的超时,Handler用于处理接收到的Socket,在内部调用Processor进行处理。
Nginx
负载均衡
nginx
的负载均衡属于服务器端均衡
,在服务器端拥有服务实例的清单,在服务器进行负载均衡算法分配。
负载均衡用于从“upstream”模块定义的后端服务器列表中选取一台服务器接受用户的请求。一个最基本的upstream模块是这样的,模块内的server是服务器列表。
#动态服务器组
upstream dynamic_zuoyu {
server localhost:8080; #tomcat 7.0
server localhost:8081; #tomcat 8.0
server localhost:8082; #tomcat 8.5
server localhost:8083; #tomcat 9.0
}
当然Nginx拥有丰富的负载均衡策略:
轮询 | 默认方式 |
---|---|
weight | 权重方式 |
ip_hash | 依据ip分配方式 |
least_conn | 最少连接方式 |
fair(第三方) | 响应时间方式 |
url_hash(第三方) | 依据URL分配方式 |