如何实现服务动态扩容

举报
KevinQ 发表于 2022/03/11 17:40:32 2022/03/11
【摘要】 扩容的含义该扩容针对的是服务,通常情况下,随着业务的发展,用户数量的增加,原本的服务,受限于硬件基础有限,无法满足增加的用户请求,或者受限与软件能力,需要重新编程或修改数据结构,以便扩大服务的支撑能力。例如,原本的单机应用受限于单机的网络带宽,磁盘IO,所能够支撑的用户量是有限的,当响应速度慢到一定程度时,就需要对服务进行扩容,扩大带宽也好,增加磁盘IO也好。又比如,原本的用户数据使用my...

扩容的含义

该扩容针对的是服务,通常情况下,随着业务的发展,用户数量的增加,原本的服务,受限于硬件基础有限,无法满足增加的用户请求,或者受限与软件能力,需要重新编程或修改数据结构,以便扩大服务的支撑能力。

例如,原本的单机应用受限于单机的网络带宽,磁盘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,通过注册同一个服务,可以实现服务分发。

上云服务

换句话说,将扩容的任务交付出去,购买弹性云计算服务器,弹性数据库服务等等。例如数据库成为瓶颈了就扩容云数据库,当然这是针对不差钱的企业来说的,对技术人员也没什么要求。但是我相信这会是未来的普遍趋势。

分库分表

针对数据库扩容来说,如果是个人服务,而又收到资金等等限制,当数据库达到瓶颈时,需要考虑做分库分表来拆分数据库压力。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。