负载均衡
nginx就能实现负载均衡
1、负载均衡:Load Balance将工作任务分摊到多个处理单元,从而提高并发处理能力。
2、功能:负载均衡建立在现有网络结构之上,使用它可以实现扩展网络设备的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性、可用性;
3、公司里面一个应用一个负载均衡器(Nginx,逻辑上一个,可备用),所有前端用户请求经过域名解析到负载均衡上(同一个ip+port),然后负载均衡会进行转发(根据配置机制)web服务器上(多台web服务器对应不同ip+port)。举例:如300个用户请求,3台web服务器。设置机制均衡转发,那么每个webserver能收到100个请求,如果web服务器03出现异常挂掉的话,那么他的请求会均分到服务器01和服务器02上;
备注:如果没有负载均衡这个功能,那么用户请求只能随机转发(或者也设置轮询)到不同的web服务器(不同的ip),那么这个服务器挂掉后,用户怎么办?有了负载均衡所有用户请求统一管理,而且对于用户来说多有的请求都在同一个ip上,不需要管理电脑后台如何操作。
4、为什么 Nginx 算“前端”,Tomcat 算“后端”:不是根据前后端代码定义,将nginx定义为前端服务器是因为nginx离前端近,且他负责路由转发、静态资源(图片/css/js)缓存加载、限流、安全过滤等功能–对应前端代码负责静态资源、样式、渲染等页面相似;将tomcat定义为后端服务器(应用服务器),是他隐藏在nginx后面,离前端远,且他负责跑真正的 Java 业务代码(比如 Spring Boot 服务),连接数据库、执行复杂的逻辑运算–对应的代码后端负责业务逻辑相似。
5、所以他是这样的:用户浏览器(真正的客户端) → Nginx(服务器端的前端代理) → Tomcat(服务器端的后端业务)。
消息队列
1、消息队列(Message Queue)MQ:是在消息传输过程中保存消息的容器。
消息队列中间件是分布式系统中重要的组件,主要解决应用解耦、异步消息、流量削峰等问题,实现高性能、高可用、可伸缩和最终一致性架构;
2、消息队列流程:
后台服务如果一次产生1万条记录每秒,而服务器每秒最多只能处理5000条,那么从消息queue中取5000条记录,剩下的依然放着,因为日志实时性不高,处理完5000条后接着继续处理。
消息队列和负载均衡的思考
3、思考:
- 从这块看来消息队列也是统一管理消息,避免服务器过载,原理和负载均衡一样,负载均衡统一管理请求,避免服务器过载异常等;
- 负载均衡(Nginx):是“空间换时间”。怕一个入口扛不住,我就把请求横向分散给多台机器,避免web服务器异常挂掉;
- 消息队列(MQ):是“时间换空间”。现在瞬间流量太大,我不强求服务器立刻处理完,而是把请求纵向(时间轴) 拉长,让服务器慢慢消化,避免数据库或业务系统被冲垮。
- 此外他们的处理模式:负载均衡是同时,消息队列是异步(延时)