现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

刘建:架构师=学习能力+好奇心+持续实践

2015-12-28 16:11 工业·编程 ⁄ 共 3113字 ⁄ 字号 暂无评论

刘建,北京航空航天大学计算机专业博士,此前供职于IBM中国研究院,主要方向是分布式计算、面向服务体系结构等,有多年大规模复杂系统架构实践经验。目前关注大数据基础平台,效率提升工具等。

CSDN:请简单介绍下您和目前的工作,以及关注的领域。

刘建:大家好,我博士毕业于北京京航空航天大学计算机学院,目前担任搜狗架构师,主要负责搜狗商业平台的基础研发和平台架构方向,涉及数据存储、分布式计算、服务化、安全等以及广告计费、报文等核心业务服务。目前主要关注大数据基础平台、流式计算、效率提升工具。之前在IBM研究院从事SaaS平台中身份联邦的研发工作。

CSDN:您是如何成长为一名架构师的?以及对架构是怎样的理解?

刘建:我觉得要成为架构师,主要是学习能力+好奇心+实践经验。

我在研究生和在IBM研究院工作阶段主要方向是面向服务计算,当时对架构比较有兴趣,阅读过大量与架构相关的书籍:比如Software Architecture Bootcamp、重构、设计模式等,也捣腾过SEDA并且有过实践,得到的各方面的指导也偏宏观,因此会不自觉的从宏观和整体性的方向去思考问题,把握系统,会主动思考系统的瓶颈以及目前所负责部分的不足以及优化的方向。

初来搜狗时负责网盟广告平台研发,后来调整为负责商业平台基础研发和平台架构。有幸经历了搜狗广告业务的快速发展,广告物料数从千万级到十亿级的爆炸式增长阶段。在此期间,先后主导和参与了统一用户中心、统一权限中心、数据库分库分表框架、SOA框架、数据平台等的设计和研发工作,并完成了Hadoop、Storm、Spark、Kafka、Thrift等开源软件的升级和引入,积累了较多的架构实践经验,从而成长为架构师。

个人认为架构主要涉及到两个层次:

分别为基础架构和业务架构。

我个人更多的侧重于基础架构。我认为一个好的架构需要能够尽可能的具备通用性,满足高性能、高可用、高可扩展性等特点,另外能够快速定位故障点,具备较快的故障恢复能力,更好的运维及监控能力等,在其进化升级过程中尽可能的保证兼容性,能够平滑进行迁移和切换。

CSDN:能否全面介绍下搜狗商业平台的基础架构?有着怎样的特点和难点?

刘建:搜狗商业平台涉及搜索推广、网盟推广、品牌推广商业广告投放平台架构设计和研发,提供十亿级以上在线广告管理及相关支持。基础架构需要解决分布式,高并发,大数据量,强一致性等带来的各种技术难题及挑战,构建和持续优化基础服务,保证高可靠、高性能、高可扩展性、低成本的快速支撑各项新业务。我们将基础架构分为三个层次:

  1. 基础平台:主要是我们使用的基础框架,包括SOA框架、数据库分库分表框架、数据存储、数据缓存、离线/在线数据处理、分布式一致性协调等方面的框架等。部分框架是基于开源技术构建,所利用的开源软件主要包括:Spring、Redis、Mysql、MongoDB、Hadoop、Kafka、Storm、Zookeeper等。

  2. 基础服务:主要提供业务无关的通用基础服务,包括唯一序列号服务、数据传输/同步服务、认证、授权、配置、分布式任务调度、消息、图片、短信和邮件等。

  3. 核心服务:主要是同业务相关的服务,比如计费服务、审核服务等。

商业平台的基础架构同主流的互联网软件基础架构基本保持一致,必须具备分布式、高并发、高可用、可扩展性等方面特征。同时,由于商业平台直接涉及到商业客户的广告投放,所有的故障都可能导致潜在的收入损失,因此对高可用的要求非常高。我们在设计基础架构组件的时候,会详细的评估潜在的故障点以及各类故障对收入的影响,同时也会尽可能的提升其可追踪性,保证在极限场景下能够快速定位问题。另外,广告的实时性非常重要,例如,广告上下线的实时性会显著影响客户的消耗,同时也会导致无效的投放,影响收入。我们也一直提高实时性,减少无效投放,保证客户体验。

CSDN:您认为工程师如何成为架构师?

刘建:我觉得从工程师到架构师是一个“由点到面”,“从局部到整体”的过程,工程师关注的是高效的实现功能,关注项目局部;而架构师在考虑局部的基础上,更多的考虑整体,包括技术实现的风险及规避手段,可测试性、可运维性及可监控性等,需要卓越的技术能力、良好的大局观、更多的实践经验,能够有效的转换视角,从宏观和微观两个层次考虑问题。可以从以下几点做起:

  • 从手头项目的架构优化做起,提升个人技术能力;

  • 持续学习和交流新的技术、新的思想、新的架构;

  • 保持对主流技术的关注度,持续思考其对手头项目的适配度,合适的时候将其应用于实践;

CSDN:技术人员如何合理做好时间管理?您有哪些建议?

刘建:对于技术人员来说,大部分时间都在处理需求、设计及研发、线上问题,并且基本都有提升个人技术能力的诉求。一般情况下,各种中断性事务会导致时间浪费比较严重,特别是在设计思路被打断时,工作效率会变低。因此,可在集中的时间段内处理中断性事务,例如,在固定的时间处理邮件,在早上就确认同工作相关的产品需求。其次,保证从事技术性工作的时间基本是一个整体,这样思路能够保持连贯,工作会更有效。另外,可以合理使用TODOList,确保当天的事情当天基本能够完成。最后,对于各类会议讨论,可根据同自己工作的相关性来选择参加。

CSDN:这些年来新语言(旧语言新用)或新技术层出不穷,你看好哪些新语言(技术)?为什么?开发者应如何应对这种新技术浪潮?以及您有什么高效的学习方法分享?

刘建:这里主要谈谈我们部门的情况。在语言层面,我们部门目前使用的主流语言是Java、C++、Python以及脚本语言。就技术而言,结合部门情况及互联网趋势,我们对高效的利用大数据和流式处理比较关心。我们目前比较关注的方向在Scala语言和Spark框架等。关注Scala其主要原因是我们有比较多的Java资产沉淀,可以同Scala更有效的结合,而且Scala的生产效率比较高。关注Spark的原因是由于我们经常会到对商业数据的进行各层次各维度的动态分析,传统的方式开发效率都比较慢,或者无法处理如此庞大数据量,我们需要一个高效的工具,而Spark恰好具备了这些特征。

新的技术层出不穷,对于开发者来说需要持续学习。新的技术和语言是为了适应新的需求而出现的,其底层的理论基础变动并不是特别大,因此技术人员也需要多关注软件相关的基础理论,比如数据库、操作系统、数据结构和算法等。在学习方法上面,我一般会制定切实合理的学习计划,带着需解决的问题去学习,学习和实践相结合并且多同领域内专家交流。

CSDN:您现在每天还编程吗?是如何安排编程、技术学习、管理的时间的?

刘建:我现在主要的技术工作包括架构评审及代码审查、基础架构优化和行业对齐。用于编程的时间整体算来应该在20%~30%之间,主要是对基础架构中的组件进行优化和升级。技术学习一般是利用平时的空闲时间完成。技术管理上的时间大概占20%左右,管理上的事务一般会在刚上班和下班之前进行处理。

CSDN:您在本次SDCC 2015大会上想分享的话题是?

刘建:本次主要分享搜狗快速迭代业务下基础架构演化实践,以搜狗商业平台近年来的基础架构演化为背景,介绍其演化过程中的几个主要阶段:

  1. 计算的水平扩展阶段;

  2. 存储的水平扩展阶段;

  3. 服务化阶段;

  4. 流式计算阶段。

最后,分享相关实践经验,以及搜狗在业务快速迭代的过程中逐步优化其基础架构的原则、经验教训和思考。

CSDN:您最期待在SDCC 2015大会上看到哪些内容?

刘建:我希望能够看到在互联网高并发大数据量下的实践经验总结,特别是碰到的开源软件的坑、线上问题的处理思路,以及能够给我带来思考、让我对架构等方面能够产生重新认识的原创性内容。

给我留言

留言无头像?