最近在请教公司后端开发一些系统架构的问题,感觉有很多东西都是只是听过,但是其作用完全不了解,所以想通过这个专题,把自己理解的一些后端知识点总结一下。
这一篇主要总结的是Nginx:
经过查阅资料发现,Nginx也不是后端的范畴,更多的是运维方便的知识;
Niginx可以做什么?
反向代理、负载均衡
例如一台服务器本身的性能能够支持1w个业务并发处理
如果业务并发少于1w个,机器也能负重前行
但是如果有5w个怎么办呢
简单的办法是使用nginx做前面的类似于堡垒机
10w个并发都打到这个nginx
但是nginx本身不处理业务,所以他能接纳10w个并发,但是他本身没有处理能力
而是把这个10w个并发,按照一定的策略分配给后面的其他机器
这样的好处是
1.通过1个nginx+n个后面的机器组成一个小集群,能处理超过单台机器接纳的上线
2.对外提供服务一般会固定一个ip,而往往你的业务一个ip(也就是单台服务器)不能完全处理,那么找一个性能不错的专门负责转发外面的业务请求(一般这种对服务器的压力不会太大),然后发给真正需要处理业务的后面的例如tomcat去,这样能够对外提供一致的提供服务的点
如果并发有50w个怎么办?
这种即使仅仅是转发,单个nginx都没法处理,性能要求太高,而且即使性能能够跟上,操作系统的端口数也是有限的
这个时候就需要高级的转发服务器了
这方面有硬件的例如f5或者软件的ha
然后将请求分发给nginx,nginx再分发给具体处理业务的例如tomcat
但是功能都是一样的:提供统一的对外访问入口,转发请求给真正的执行者