概述
作为一名合格的开发工程师,不仅仅要在前期开发阶段对业务和技术有深入了解,知道选用哪种合适的技术,业务如何拆分,还要思考后期线上环境,资源,延迟,性能等如何优化维护以及分布式系统一些线上生产的一些问题。
本篇主要针对之前了解的情况对硬件设备资源做一个简单的介绍:
首先分布式系统线上实践问题,我们应该对公司的流量,各个服务,网管,注册中心应该如何部署,部署多少台机器才合适,每台机器的配置如何,每天整体流量有多少,高峰期的请求量有多少,你的整体系统是否扛得住(注:很多公司现在直接使用K8S docker 实现,但是你至少得知道你的每个服务能扛多少,应该部署多少个,其本质都是一样的),对硬件资源要有一个可计算,可测量的概念。
本篇就针对中小型的系统进行一个基本硬件分析:
中小型的系统,大概拆分10~20个服务,(庞大的互联网公司,一般都是成千上百个),当然这里只是介绍一些重要的服务,其他的服务可以做一个旁类对比
- 服务注册中心:简单的思考下,就知道每秒的QPS最多也就几十个,但是为了保证分布式产生的一些问题(分区容错性等)这里考虑部署2台机器,每台机器4核8G(每台机器可以抗每秒几百请求是没问题的,上千也可以),高可用冗余,任何一台机器死掉,都不会影响系统的运行。(注:如果使用ZK作为服务注册中心,那么根据实际的需要就部署3台,配置灵活调整)
- 网关系统:因为网关系统是整个系统服务的一个入口,配置4核8G的机器,请求每台机器每秒几百是没有问题的(具体的跟你业务系统每个请求处理时间有关),但是在量上应该多一点,3~4台,保证每台机器的压力小一点,从而进一步保证可靠性。
- 业务服务:这个需要根据实际业务来判定,应为在每个系统中,都存在冷服务和热服务,针对单次业务处理周期长,QPS等进行实际的测试才能做出最优的配置,但一般情况下,每个服务4核8G,每台机器抗几百请求是完全没问题的,但是如果业务处理周期太长,一个SQL之类的都要几秒钟,这种可能就问题大了,因此,针对核心的业务如果可以,还是最好优化以及实际的压测,毕竟是产品的核心,需要自己保证
- 数据库:数据库应该是整个系统中最重要的资源之一,我们常规的都是使用Mysql,那么多少合适?推荐至少8核16G起,物理机最佳,这样的配置只要SQL不是太烂,几百并发请求问题不大,上千也是可能的。32核64G,平时抗个每秒几百上千的请求完全没问题,最多可以抗每秒几千请求也没问题,但是此时会导致Mysql机器的负载很高,CPU使用率很高,磁盘IO负载很高,网络负载很高。
总结
理论如果没有用于实践,那么它永远都是理论,当它被你自己实践了,那么它就是你的经验,即使结果最后不理想,因此,针对项目的实际生产环境的配置,刚开始可以参考别人标准的进行部署,但后期需要自己根据线上的数据反馈进行后期调整,让 发布上线->数据反馈->调整优化->发布上线 形成一个闭环,持续改进。
最后
以上就是健康小刺猬为你收集整理的中小型微服务系统 硬件设备如何部署,QPS大概多少总结的全部内容,希望文章能够帮你解决中小型微服务系统 硬件设备如何部署,QPS大概多少总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复