如何实现服务动态扩容
扩容的含义
该扩容针对的是服务,通常情况下,随着业务的发展,用户数量的增加,原本的服务,受限于硬件基础有限,无法满足增加的用户请求,或者受限与软件能力,需要重新编程或修改数据结构,以便扩大服务的支撑能力。
例如,原本的单机应用受限于单机的网络带宽,磁盘IO,所能够支撑的用户量是有限的,当响应速度慢到一定程度时,就需要对服务进行扩容,扩大带宽也好,增加磁盘IO也好。又比如,原本的用户数据使用mysql单表存储,当用户量达到一定程度,单表读取
扩容的难点
扩容的难点在于扩容的便捷性与服务能否宕机与宕机时间,能否做到很方便的从服务支撑100用户扩容到服务支持1000用户甚至1万用户,扩容的成本,扩容操作所耗费的整体时间,以及扩容时是否可以保证服务的可用性。
常见的服务扩容方法
nginx服务分发
nginx是一个高性能的HTTP web服务器,同时也是一个反向代理服务器,通过配置nginx可以实现将API请求按照指定规则分发到多态服务器上,我们可以通过nginx的配置文件来很简单的实现单机项目多服务器部署。
upstream my_server {
server ip1 weight=12;
server ip2 weight=15;
}
微服务化
另外,目前比较火热的开发方式,微服务,天然的支持服务多部署,通过服务注册中心注册服务,可以简单的实现将服务分发到指定的服务上,这方面的资料可以检索SpringCloud,重点关注其中的服务发现Eureka,Zookeeper,通过注册同一个服务,可以实现服务分发。
上云服务
换句话说,将扩容的任务交付出去,购买弹性云计算服务器,弹性数据库服务等等。例如数据库成为瓶颈了就扩容云数据库,当然这是针对不差钱的企业来说的,对技术人员也没什么要求。但是我相信这会是未来的普遍趋势。
分库分表
针对数据库扩容来说,如果是个人服务,而又收到资金等等限制,当数据库达到瓶颈时,需要考虑做分库分表来拆分数据库压力。
- 点赞
- 收藏
- 关注作者
评论(0)