打造高可用,高可扩展的互联网平台

来源:互联网 发布:cba选秀体测数据 编辑:程序博客网 时间:2024/03/29 23:18
很多互联网公司早期初创,为了快速开发出应用产品,基本都是采用LAMP技术组合来搭建网站。由于开发人员也不是很多,所以采用在一个工程下开发,或者一个工程下的多模块开发。随着公司的业务和流量快速膨胀,人员规模也从数十人扩张到数百人,导致网站的开发,部署,运维带来很大的挑战:

          1)众多开发人员围着一个工程开发,打包,测试,部署纠结在一起,互相等待,严重的影响了生产效率;

          2)应用没有进行合理的拆分,前后台应用没有分级,碰到异常流量不能做到优雅降级,整个网站都可能导致崩溃;

         3)  没有统一的服务质量管理平台,故障/异常不能及时报警/预警,出现了故障也不能及时定位,解决问题的经验也没有沉淀下来,错误一犯再犯。

          总之,众多应用互相耦合,单包开发,导致系统的稳定性,扩展性,伸缩性受到严重伤害,我们需要打造一个Scale Out的分布式平台来解决这个问题。并且辅有服务管理平台来管控服务质量。

 一.   业务水平和垂直拆分

       业务做水平和垂直拆分。 根据业务的公用性进行前后台拆分,公用/通用的应用定位核心应用,为前端应用提供基础服务。前端应用根据产品线,可以拆分为不同的前端应用。各应用可以独立开发,测试,打包,部署,互不影响。

二.   分布式服务导向框架

        由于应用做个拆分,本地调用变成了远程调用,而且每个应用都是集群部署。所以导向框架至少满足两个功能:

        1)实现远程调用(类似  RMI,Hessian,HTTPInvoke,SOAP,CORBA,WEBSERVICE etc.);

        2) 能实现软负载均衡,可以容错;

       根据上述两者需求,再结合公司的技术实力和资源情况,可以自主研发或者采用开源解决方案:

        1)Engix/Apache + Hessian,可以将Engix作为负载均衡设备来分发请求,Hessian为远程通信调用协议;

        2)LVS + Hessian,LVS作为负载均衡设备分发请求;

        3)自主研发服务导向框架,实现服务客户端请求对象序列化,传输, 服务端反序列 etc.

三.   分布式数据层

        为了应对大数据量的冲击,数据库需要进行拆分。为了对开发工程师屏蔽这些底层细节,需要有一个分布式数据层来统一进行数据的存取。数据库路由(因为分库分表),读写分离,异地容灾,这些是分布式数据层需要解决的问题。

四.  消息机制

        同步调用容易产生阻塞,大并发量来临,容易让系统崩溃。异步消息机制可以减轻系统的压力。在软件体系结构上来说,还可以起到解耦的作用。

五.  服务管理平台(包括监控系统)

       可以在硬件,操作系统层面,应用层面,业务数据层面 对整个系统进行管控,可以趋势报警,提前对系统的异常情况进行判断。可以协助工程人员及时定位。并且多个层面数据打通,消除数据孤岛,增强数据的关联性。

       系统可以优雅降低,异常的流量/并发量下,保证核心系统的服务能力,非核心系统可以降低服务质量/容量。环境正常后,各系统回复到正常的服务质量。、

 

      前端Web应用集群部署(F5引流),分布式服务导向框架,分布式数据层,异步消息机制等,这些基础组件共同打造一个高可用,高可扩展的互联网平台。

0 0
原创粉丝点击