用了SLB后还需要用nginx怎么用吗

SLB(Server Load Balancer)负载均衡是针对阿里云弹性计算岼台而设计的一种网络负载均衡服务SLB在系统架构、系统安全及性能、扩展、兼容性设计上都充分考虑了弹性计算平台云服务器使用特点囷特定的业务场景。

SLB对多台云服务器进行流量分发的负载均衡服务可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性具体可以参见阿里云的官方介绍:。

而nginx怎么用呢作为一款反向代理服务器本身具备负载均衡的功能。

虽然二者嘟具备负载均衡的功能但是slb负载均衡却不是nginx怎么用,二者是不同的产品

你对这个回答的评价是?

本回答由宝塔Linux面板提供

5年时间服务器从0到200一个创业公司的架构野蛮生长史

贝聊成立于2013年,是中国幼儿园家长工作平台致力于通过互联网产品及定制化解决方案,帮助幼儿园解决展示、通知、沟通等家长工作中的痛点促进家园关系和谐。贝聊是威创股份(A股幼教第一股)、清华启迪、网易联手投资的唯一品牌在短短几年內,用户规模迅速达到千万级别每年DAU均呈倍数级增长。

面对如此快速的发展原有的技术架构很难支撑越来越复杂的业务场景,在系统鈳用性以及稳定性方面都给贝聊技术团队带来了很大的压力。因此如何针对当前需求,选择合适的技术架构保证架构平滑演进,值嘚我们深入思考

贝聊架构总体经历了三次重大历程,由几台服务器搭建的单体架构到目前的几百台分布式部署架构在整个变化过程中,我们踩过了很多坑遇到过很多重大技术挑战。

诞生期—技术架构选型V1.0

创业初期我们的初始创业团队在进行架构选型时,主要基于以丅几点进行考虑:

正是基于以上几点考虑最终选择了经典的LNMP技术架构,贝聊V1.0架构就这样诞生了为了加快产品研发速度,尽快上线产品首期通过外包公司实现了研发以及部署,后续由我们的PHP研发人员接手并进行后续的迭代开发。

5年时间服务器从0到200一个创业公司的架構野蛮生长史

初期部署时,部署了三台ECS服务器其中接入层nginx怎么用与系统部署在同一台机器,RDS数据库一台机器Memcached缓存一台机器,V1.0架构具有鉯下特点:

5年时间服务器从0到200一个创业公司的架构野蛮生长史

LNMP架构支撑贝聊业务发展了将近一年半左右的时间,简单、易维护的架构为貝聊的快速发展做出了很大的贡献期间业务发展迅速,用户体量也越来越大原有架构逐渐暴露出越来越多的问题。

成长期—技术架构偅构V2.0

我是在2015年初加入了贝聊初始研发团队只有三人,有幸在这一时期

主导了贝聊技术架构重构并经历了贝聊后续的几次架构演进路程,将原有PHP单体架构重构为JAVA分布式架构

首先谈一谈我们做技术架构重构的契机,重构并非难在怎么做而是难在何时开始做,所以我们做架构重构的契机主要基于以下几点:

由于公司业务高速发展如果停下来专门做技术架构重构是不可能的,我们选择了在维护现有系统的基础上同时进行新的技术架构重构工作。重构期间在原有PHP研发团队的大力支援下,我们的重构工作还算非常顺利既保障了业务的快速迭代需求,又成功完成了新的技术架构重构新的V2.0架构如下:

5年时间服务器从0到200,一个创业公司的架构野蛮生长史

在V2.0架构时期初步实現了分布式部署架构,根据不同的功能以及业务逻辑完成系统级别的拆分,同时对第三方服务进行解耦拆分出了独立的服务模块,针對DB我们实现了系统级拆分以及物理独立部署,并实现了数据库主从分离同时引入了MQ消息队列,并使用SLB实现了负载均衡和带宽流量入口統一

V2.0时期的架构具有以下特点:

5年时间服务器从0到200,一个创业公司的架构野蛮生长史

针对系统拆分以及DB拆分我们通过两个阶段来完成該项工作。

首先在系统层面进行拆分将原有的大系统拆分出多个业务逻辑独立的子系统,而DB暂时不进行拆分多套系统还继续共用一个DB,只是根据业务逻辑划分各个系统所依赖的表不同业务逻辑系统之间不能互相访问表,这样新系统只访问自己所归属的表通过此种方案,可以保证原有系统业务不受影响同时新拆分的业务系统研发工作也可以顺利进行,此阶段大概花费了我们几个月的时间最终顺利唍成系统层面的拆分。

在完成系统层面拆分之后我们紧接着实施DB层面的拆分,将各个子系统所依赖的表独立拆分出来分别放置到不同嘚RDS数据库,实现物理的隔离同时实现了数据库主从分离。最终实现效果如下图:

5年时间服务器从0到200一个创业公司的架构野蛮生长史

本階段,我们采用了比较简单易用的Hessian实现初期的RPC服务化针对第三方公共服务,从原有系统中解耦出来独立拆分出服务化组件,并做独立蔀署供其余业务系统统一调用。而系统间调用也通过Hessian来实现RPC远程调用

在V1.0架构期间,我们的nginx怎么用都是单点部署一旦一台nginx怎么用服务器出现故障,则会波及到大量业务系统风险非常大,如下图:

5年时间服务器从0到200一个创业公司的架构野蛮生长史

在V2.0架构期间,我们引叺了SLB实现负载均衡SLB配置了多台nginx怎么用,同时在业务系统层面也实现了负载均衡避免了单点故障,达到高可用的目的

5年时间服务器从0箌200,一个创业公司的架构野蛮生长史

爆发期—微服务架构V3.0

进入2016年以来贝聊业务高速发展,用户规模在短时间内增长数百万同时各个业務线逐渐铺开,业务场景更加复杂代码规模膨胀得也非常快,研发团队迅速达到了几十人规模一个系统多人开发,研发人员层次不一规范难以统一,同时业务逻辑耦合严重每次上线都需要将整个大系统整体打包上线,风险非常大并且新人入职之后学习成本非常高。因此我们引入了微服务架构将业务逻辑拆分为独立的微服务组件,每个微服务都围绕着具体业务进行构建由专人研发和维护,并由專人做性能优化和架构优化各个微服务组件的研发与上线互不影响。

结合V2.0架构在实施微服务架构时,基于多方面考虑我们选择了Dubbo作為分布式微服务框架。

5年时间服务器从0到200一个创业公司的架构野蛮生长史

在做微服务时,我们考虑了以下几个关键点:

在实施微服务架構时主要考虑从以下几个方面进行实施:

5年时间服务器从0到200,一个创业公司的架构野蛮生长史

贝聊的班级动态是一个高频率使用功能園长、老师、家长都可以在班级进行发布动态,通过点赞、回复进行互动随着贝聊业务飞速发展,用户规模爆发每天都产生数十万的癍级动态量,同时日回复量和点赞量均达到了数百万级别面对如此大规模的数据量,我们一方面要应对高并发的性能压力另一方面又偠应对数据压力,原有的班级动态功能散落在API接口系统以及后台管理系统中相关的表也与原有系统共享一个DB,迫切需要我们拆分出独立嘚班级动态微服务组件同时还需要做分库分表减少单数据库压力。因此我们专门抽调精干研发人力拆分出了班级动态微服务组件。

旧癍级动态调用方式如下

5年时间服务器从0到200一个创业公司的架构野蛮生长史

班级动态微服务组件调用方式如下:

5年时间服务器从0到200,一个創业公司的架构野蛮生长史

拆分出班级动态微服务之后我们解决了以下问题:

2. 用户通行证微服务

很多创业公司,在一开始发展时为了縋求速度,同时由于人力不足都是将用户数据表与业务数据表暂时放在了一个DB里面,贝聊早期也是这样这就造成了各个业务系统都是洎己分别写DAO来获取用户数据,产生了大量重复的用户逻辑拷贝代码随着业务发展的越来越快,越来越多的业务系统都需要访问用户数据用户逻辑代码散落在各个业务系统,用户数据越来越难维护复杂度越来越高,同时用户量越来越大经常会遇到高并发性能问题,不嫆易做独立性能优化因此拆分出独立的用户通行证微服务迫在眉睫。

5年时间服务器从0到200一个创业公司的架构野蛮生长史

5年时间服务器從0到200,一个创业公司的架构野蛮生长史

拆分出用户通行证微服务之后我们解决了以下问题:

微服务架构开发、测试、部署复杂度远远大於单体架构,因此需要构建能够支撑微服务架构的交付和运维能力

微服务架构的应用开发、部署的复杂度都是远大于单体架构应用的,夶量的微服务组件如果依然靠运维人员手工的配置管理显然是难于应付了因此我们研发了自动化部署和发布的版本发布系统,我们的版夲发布系统具有以下特性:

5年时间服务器从0到200一个创业公司的架构野蛮生长史

通过版本发布系统,实现代码版本管理、一键部署上线、┅键快速回滚、上线单申请、上线审核以及上线日志等

2. 开发测试发布部署

针对微服务复杂的架构,为了保证每个微服务交付的质量我們部署了四个环境:

5年时间服务器从0到200,一个创业公司的架构野蛮生长史

通过以上四个环境确保微服务组件的研发、测试、发布的质量。

3. 分布式配置中心以及分布式任务调度平台

随着微服务架构的实施我们拆分出了很多的微服务以及子系统,各种配置信息都以明文形式配置在配置文件中同时各种定时任务也散落在各个微服务以及子系统中,非常难管理因此我们选择了合适的分布式配置中心以及分布式任务调度平台

5年时间服务器从0到200,一个创业公司的架构野蛮生长史

微服务架构拆分了大量的子系统以及微服务组件面对如此复杂大规模分布式集群,一次链路调用可能会发生在多个微服务组件之间如何进行链路调用追踪,如何快速发现一次接口调用过程中哪些地方需偠优化、哪个微服务接口导致了整体调用比较慢针对上述问题,我们引入了美团点评的APM工具Cat实时监控系统与Dubbo服务化框架进行整合,通過全局链路ID实现链路追踪功能。

默认Dubbo没有实现服务授权功能系统调用微服务、微服务之间调用均没有实现授权验证,都是直接访问微垺务组件接口因此我们针对Dubbo进行了个性化定制研发,研发了微服务授权认证中心通过授权认证保证核心微服务接口的调用安全性。

拆汾出大量的微服务组件我们面对的是如何监控这么多的微服务运行状态,我们采用了Dubbo自带的简易监控中心监控微服务组件的成功率、夨败率、平均耗时、最大耗时、并发量等指标,通过这些指标发现微服务性能瓶颈进而优化微服务性能。同时我们进行个性化定制扩展與研发针对Dubbo接口调用,统计接口耗时排行、接口失败排行、接口访问异动排行等等通过定制化研发的统计报表,更直观的监控Dubbo接口性能

我们使用Dubbo的管理控制台,实现对微服务的路由规则配置、访问控制、权重调节、服务降级、服务禁用、容错等功能可以非常方便的管理运行中的微服务组件。

经过一年多的微服务化历程V3.0架构如下:

5年时间服务器从0到200,一个创业公司的架构野蛮生长史

V3.0微服务架构具有鉯下特点:

5年时间服务器从0到200一个创业公司的架构野蛮生长史

未来—贝聊架构演进V4.0

V3.0架构虽然实现了微服务架构,但该架构还存在以下可鉯继续演进的点:

架构演进一直在路上架构要围绕业务进行,不能脱离于业务不同的业务时期需要不同的架构。

单体应用架构更适匼创业初期,公司需要快速试错以及验证市场反应需要更快的研发速度,同时研发人员比较少而单体应用架构比较简单,可以快速切叺对研发人员的技术栈要求不是特别高,可以快速上手快速研发但在设计单体应用架构时最好可以提前规划好未来的扩展性,可以在業务层面先规划好便于日后业务发展到一定规模,可以快速进行解耦实施微服务化架构。

当企业发展到一定规模业务线变的越来越哆、越来越复杂,同时研发人员的数目也快速增长单体应用架构就会慢慢暴露出来弊端,大量的研发人员在一个系统上进行开发缺少並行研发能力,大量的业务代码耦合在一起同时研发效率非常低。微服务架构可以更好的进行业务解耦具备更好的扩展性以及独立性,可以提高研发团队间的并行化研发速度提升效率、提高模块复用性,具备高可用、高并发特性但微服务架构对服务治理的能力要求仳较高,维护成本也会比单体应用高需要强大的服务治理支持,对研发人员的技术能力要求也比较更高

目前我们依然在架构演进的路仩,经历了以上几次架构历程虽然取得了一定的进步,但依然有很多挑战等待我们去迎战规划技术架构需要综合考虑业务的规模、业務的时效性、研发团队的规模、研发的技术能力、基础环境配置等。架构来源于业务架构演进的生命周期只有完美匹配好业务的生命周期,才能最终发挥出最好的效果

我要回帖

更多关于 nginx怎么用 的文章

 

随机推荐