-
很久之前做了一个springboot的项目,突然发现用户多了之后服务吞吐性能急剧下降,于是想到了一个办法:
-
通过集群的方法启动多个后端服务,减轻每个服务的压力。
-
具体做法是在服务器上同时开启10个springboot项目,同一个jar包,用10个脚本打开,每次指定java -jar sb-snapshot-0.0.1.jar --server.port=9000,每次指定不一样的端口,这样以前一个请求只能处理10个请求,这样就能处理100个了。这样的集群称之为单机软集群。其有一个要求就是服务器硬件性能必须要好。
-
其实简单来说,原理就是通过多线程提高服务器的请求处理能力,在同一个服务器上启动了10个服务,大大提高了服务的稳定性。这个时候虽然不像spring cloud等软件有服务治理系统,但是我们可以通过人工方式管理,服务器崩了只需要重新打开bat文件或者sh文件就行了,或者通过简单的脚本在服务器重启时运行脚本即可。与自动化管理相对比,由于人的大脑结构比电脑更加复杂,因此能够处理更为复杂的服务器故障,因此服务器故障处理的能力大大提升,此外人脑比大脑更加稳定,可以运行数十年而不会宕机。
-
其中有一点非常重要需要注意的就是:数据库CRUD做好工作,读写的时候注意产生脏数据的问题。
-
那么现在问题又来了,前端怎么处理呢?后台是集群,那么每次前端访问后台端口怎么指定?
答案是我们可以通过一个简单的算法来做负载均衡,通过随机负载均衡算法,将用户请求均匀地分发在每一个后端服务上。随机负载均衡算法有一个缺点就是请求不是按照负载进行请求分发,可能导致随机性错分。但是同样随机负载均衡也有其好处,就是算法结构简单,不需要额外的配置和部署就能运行。
原理如下:
负载均衡算法:
window.location.href="http://sb.sicau.edu.cn/900" + Math.floor(Math.random(0,1) * 9);
随机负载均衡可以作为前端的一个模块直接嵌入网页中,也可以通过中间件的方式提供服务,部署非常灵活,同时因为代码比较简单,降低了部署的难度,同时提高了扩展性。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)