打造高可用,高可扩展的互联网平台
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引流),分布式服务导向框架,分布式数据层,异步消息机制等,这些基础组件共同打造一个高可用,高可扩展的互联网平台。
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引流),分布式服务导向框架,分布式数据层,异步消息机制等,这些基础组件共同打造一个高可用,高可扩展的互联网平台。
相关文章推荐
- 打造高可用,高可扩展的互联网平台
- 中企动力助力亚美日化 打造互联网一站式综合服务平台
- 移动互联网创业方向的思考(绕过腾讯和华为等大公司的战场,打造新型的餐饮平台)
- 马化腾:腾讯将打造开放的移动互联网平台
- 打造高可用性的互联网技术平台
- 互联网运营智慧——高可用可扩展网站技术实战
- 使用Spark Streaming + Elasticsearch搭建高可用、可扩展的App异常监控平台
- 互联网运营智慧:高可用可扩展网站技术实战
- 互联网企业高并发解决方案,高可用可扩展网站技术实践
- 互联网 ,高可用,高扩展理解
- 基于弹性计算平台——构建高可用、可扩展的应用
- 【工业互联网】企业主导、应用牵引,打造工业互联网平台开放价值生态
- 打造高可用性的互联网技术平台
- 搜狗高可用、高性能、可扩展商业平台设计
- 一步一步打造MySQL高可用平台
- 扩展 ArcGIS Server 在移动平台/互联网应用的可达性(转载_实现简单在线编辑思路)
- 打造西安工业云平台 中服软件助力智能制造发展 ——2017中国·西安工业互联网论坛暨“西安工业云平台”发布会
- opencart性能提速解决方案(打造高可用的opencart电商平台)
- 如何打造一个高并发,处理海量数据,高性能,易扩展,可伸缩,高可用的网站?