您的位置:首页 > 业界新闻

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

2017-02-14 17:36 211 查看
很多互联网公司早期初创,为了快速开发出应用产品,基本都是采用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引流),分布式服务导向框架,分布式数据层,异步消息机制等,这些基础组件共同打造一个高可用,高可扩展的互联网平台。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息