您的位置:首页 > 编程语言 > Java开发

便宜有便宜的办法-小微企业云上的springboot集群方案1:有个plan

2019-09-04 18:10 1766 查看

1、小微企业特点

互联网的小微企业,往高大上说就是新锐企业,往低里说呢就是穷B企业,不管怎么样,反正特点都是一样的:

  • 没有多少开发人员,能少一个是一个
  • 没有专职的岗位,DBA,运维,测试,这都是啥,反正都是开发人员一肩挑(如果老板很讨厌的话,会加一句,全栈)
  • 没有自己的硬件,反正能不自己建就不自己建(如果老板打听过的话,会说一句,上云)
  • 要快(如果老板很烦人的话,会加一句,要敏捷)

在这种条件下,有能力的程序员表示很有挑战性,纷纷用脚投票去了腾讯、阿里这些大厂。而那些没有能力的码农(比如我),则不畏惧挑战,决意在这种恶劣的环境下艰难求生(主要是大厂不要)。

其实在企业的很长的一个发展阶段,单机的性能是可以扛着性能压力的,所以我们的第一个方案就简单了。

2、PLAN A 

  1. 在云服务商购买一个公司需要的域名,并配置域名指向购买的服务器IP
  2. 在云服务商购买一台云服务器,安装好nginx和java环境,nginx配置域名的指向,配置程序指向的云数据库地址
  3. 在云服务商购买云数据库服务,比如用的最多的mysql

上面三种商品在一家云服务商就能完成,全程只需要买买买就好了。而且价格都还算好,一台普通的云服务器在5000左右(1年费用),数据库在6000多(一年费用),域名便宜,只要几十块而已,而运行起来也很简单,只要把程序打包上去就可以跑起来了。

如果还需要省钱,当然可以在云服务器上自建mysql,那么云数据库的钱就省了,但考虑到以下几点,我还是认为开始就要分开服务器和数据库:

  1. 企业的开发人员用人成本是很高的,如果在云服务器上自建数据库,那么就需要对数据库比较熟。但大部分开发人员用数据库比较多,建就一般般了,而且就算建的话,对调参和分配权限也很难精通,为了节约人工成本,能花钱买服务的就花钱买了
  2. 互联网企业往往数据的价值大过应用程序的价值,所以为了数据的安全,还是和应用服务器拆开来比较保险
  3. 云服务的价值很大方面体现在性能伸缩的灵活性上,而数据库是最常见的性能瓶颈,如果应用服务器和数据库在同一台机,很可能即使提升了服务器配置,由于资源分配不到数据库上面(这个对数据库配置人员要求比较高),所以不能在最短时间解决问题,如果分开的话,一旦定位到是数据库性能瓶颈,花钱可以直接针对数据库做性能提升

其实这个架构虽然很low,但其实很多的微小企业用起来一点问题都没有,性能瓶颈直接靠花钱就能实时提升,压力可以说是很小的。我了解的很多企业在倒下前都还没有把应用服务器的性能用满,可见应用服务器性能绝对不是微小企业的短板。但缺点也很明显,那就是单点问题,全公司技术体系于一台服务器,万一有个好歹,企业就要无技术裸奔了。

3、PLAN B

这就是一个最简单的集群,加了一台服务器,再把一些服务甩给了云服务商,具体的情况如下:

  1. 多购买一台服务器,其实集群很重要的一个判断,就是是否能快速方便的横向扩展,在服务器出现性能瓶颈的时候,可以通过快速的增加服务器的方式解决问题。小微企业的业务发展是抽风式,不知道什么时候就突然上量了,所以能直接靠加服务器横向扩展解决性能问题是最幸福的。
  2. 多台服务器就会有负载轮询的问题,如果很穷,那么当然可以自己搭建nginx的集群,但考虑到大多数程序员对于nginx也是用的多,配置的少,这活也可以直接甩给云服务商提供的负载均衡服务,而且一般都还提供界面分配负载的权重,比自建还是要方便很多,后面做灰度上线也会用到。
  3. 云服务商提供的负载均衡一般会有一个虚拟IP,把域名指向这个虚拟IP就完事了,如果在云服务器上还有多个应用起不同的端口,那么在服务器上还要起一个自己的nginx作为本地代理。
  4. 在单台服务器上,session和缓存都不是问题,但在集群的环境下这都是事啊,虽然spring boot在这方面简化了很多工作,但该改的还得改,该配的还得配,这里通过redis搞定session和缓存,如果很穷,redis也可以自己集群,但同样大部分人redis也是用的多,配的少,这活也扔给云服务商了。
  5. 除了缓存,还有个需要多机共享的是文件,不能服务器1上传的文件,服务器2看不到。如果很穷,自己搭建分布式文件系统(比如TFS,FastDFS)也是可以的,不过还是那句话,何必呢,使用云服务商提供的分布式文件服务就好了。
  6. 其实还有一个集群会遇到的问题就是定时任务,但这个没办法通过买买买来解决,不过spring quartz有解决方案,这个是程序员分内之事,就不麻烦云服务商了。

虽然看起来不像是给微小企业的集群方案,里面全是买买买,但和人工成本比起来,这种一年只要几千块的服务(负载均衡、redis和分布式文件系统可以按量来付费),其实是很便宜的,而且按量付费的话,可以保证企业在业务量起来的情况下才会有费用的增长。而业务量如果起来了,钱还是问题吗?

这算是个开篇,主要讲下集群会用到哪些东西,下一章,我们会具体讲讲spring boot 的session,file和quartz在云上集群环境下的开发和配置。

附件

特地看了一下,现在主流的三家云服务商对上面提到的买买买服务都提供

$(function () { var objId = $('val[data-name="objId"]').data('value'); $.get('https://www.oschina.net/action/apiv2/get_article_recommends_test?key=osc_3_' + objId); });
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息