淘宝从百万到千万级并发的14次服务端架构演进之路( 五 )


比如数据采集有Flume、Sqoop、Kettle等,数据存储有分布式文件系统HDFS、FastDFS,NoSQL数据库HBase、MongoDB等,数据分析有Spark技术栈、机器学习算法等 。
总的来说大数据架构就是根据业务的需求,整合各种大数据组件组合而成的架构,一般会提供分布式存储、分布式计算、多维分析、数据仓库、机器学习算法等能力 。而服务端架构更多指的是应用组织层面的架构,底层能力往往是由大数据架构来提供 。
有没有一些架构设计的原则?
N+1设计 。系统中的每个组件都应做到没有单点故障;
回滚设计 。确保系统可以向前兼容,在系统升级时应能有办法回滚版本;
禁用设计 。应该提供控制具体功能是否可用的配置,在系统出现故障时能够快速下线功能;
监控设计 。在设计阶段就要考虑监控的手段;
【淘宝从百万到千万级并发的14次服务端架构演进之路】多活数据中心设计 。若系统需要极高的高可用,应考虑在多地实施数据中心进行多活,至少在一个机房断电的情况下系统依然可用;
采用成熟的技术 。刚开发的或开源的技术往往存在很多隐藏的bug,出了问题没有商业支持可能会是一个灾难;
资源隔离设计 。应避免单一业务占用全部资源;
架构应能水平扩展 。系统只有做到能水平扩展,才能有效避免瓶颈问题;
非核心则购买 。非核心功能若需要占用大量的研发资源才能解决,则考虑购买成熟的产品;
使用商用硬件 。商用硬件能有效降低硬件故障的机率;
快速迭代 。系统应该快速开发小功能模块,尽快上线进行验证,早日发现问题大大降低系统交付的风险;
无状态设计 。服务接口应该做成无状态的,当前接口的访问不依赖于接口上次访问的状态 。




推荐阅读