54 CHEN

中大型移动互联网公司技术架构选择

总体思考

总结这些年经验,进行构架演进的方向选择时,大致要做到下面的目标:

中大型移动互联网公司技术架构选择

上图纯手绘花了些时间,本文以此图从上到下的顺序进行描述。

用户

在移动互联网环境下,用户会被分为好网络的用户和坏网络的用户,我们要为坏网络的用户尽一切可能提供合适的链路和可靠的DNS。

接入层

在接入层的代码层面,需要准备client-server套件,这意味着,需要一个同时了解android\ios..等客户端和服务器端开发的团队,专门打造网络套件。

业务接入层

这一层的目标是灵通机动调配流量,往往大家的方案都是LVS,或者是F5等。更高大上一点,再上一些流量分析设备,在有突增的时候好用来找问题。

业务层

在统一的业务框架下,去完成各个灵活组织的BIZ逻辑,这里就涉及到异构系统对一个大型公司的影响。

RPC框架与队列

二者一起完成数据在IDC的传递,不同在于,一个是同步,一个是异步。

配置管理

zookeeper当选最佳角色,上点规模的服务里基本都会有zk的身影。

日志系统

统一的日志系统,对未来发展中所需要的各种数据更加容易得到。日志系统的特点要求:快,容网络错误,部署简单,进程稳定,可水平扩展。

监控报警系统

ganglia与nagios仍旧是最好用的开源管理软件。

跟踪系统

当系统出现bug的时候,用来快速debug,当服务越来越多的时候,跟踪系统是个必不可少的工具。

PAAS Agent Daemon

整体统一的运维平台的客户端程序,此程序负责:向监控系统汇报硬件及网络数据,启动和停止应用程序,向监控系统和PAAS平台传递应用程序的运行状态。

存储平台

此层包括所有重状态的hosting service。

PAAS 资源控制层

目标是实时反馈整个或多个IDC内部的内存还有多少、CPU是否够用、下次采购还需要多少机器。

PAAS用户界面层

这一层主要面向运维和开发人员,比如用来上线服务、添加删除机器。

自动部署层

一般都以hudson的CI(持续构建)完成之后进行,但可自动化的部署一定需要测试框架非常靠谱,以及测试代码靠谱,否则就是个悲剧。

测试框架

借用一些高级框架,让代码写少一点,比如jmockit、spring-test等等。

编译工具

java的maven为不二选择。编译好的包仓库,推荐nexus。

代码生成

开发人员不需要重复进行作,只要框架是固定的,所有的代码应该都是可以生成的。只需要花精力去修改核心逻辑。

代码质量

在工程师的代码完成之后,跑一遍静态分析,可以提前发现一些问题,可以做成定期的模式,与持续集成放在一起。

代码及常规系统

PAAS for DEV & TEST

原创文章如转载,请注明:转载自五四陈科学院[http://www.54chen.com]

Posted by 54chen java,arch

« 更新nginx版本upstream升级http1.1解决多TIME_WAIT问题 io不再神秘 »