淘宝技术部总监曾宪杰,他是淘宝近10年来历次技术飞跃的参与者、贡献者和带领者。
曾宪杰,淘宝花名华黎,现任淘宝技术部总监,淘宝技术委员会JAVA分会会长。2002年毕业于浙江大学计算机系。先后在中科院下属企业、先锋电子(中国)等企业就职,是一个桌面管理系统的软件公司的联合创始人并负责总体技术工作。参与过邮政省级地市集中化生产作业系统的设计开发以及大型企业内部桌面管理安全系统的设计和开发。
2007年6月加入淘宝网平台架构团队,负责构建淘宝自主的消息中间件系统,同期主导了淘宝数据层的创建,这两个产品也是淘宝中间件中较为重要的两个。2010年下半年起开始负责整个淘宝中间件团队,帮助团队成为业内知名的Java技术团队。2012年开始从中间件走向应用系统的研发工作,2013年初负责新组建的淘宝技术部。熟悉C++和Java,在多线程、并发、网络通信及支撑大型网站的中间件领域有较多经验,对新技术有浓厚的兴趣。致力于带领团队在无线、数据、业务 平台和组件化开发方面取得突破。
他也是《OSGi原理与最佳实践》一书的作者之一和《大型网站系统与Java中间件实践》的作者。
CSDN:请和大家介绍下你及目前所从事的工作。
曾宪杰:目前主要职责是负责淘宝技术部,在技术和管理上都会投入精力。主要的工作会看技术的发展以及新的技术如何应用在淘宝,这里包括了工程和算法相关的,此外无线也是我们重点关注的部分。然后会和团队一起完成技术部的规划以及帮助团队落地,此外是一些管理上的工作。之前负责的中间件团队,在13年4月份的时候,交给了其他Leader负责。
CSDN:能否具体介绍下淘宝网应用架构的变化历程以及架构中的自主研发部分?
曾宪杰:我是07年6月加入淘宝,当时淘宝已经是一个日成交超过1亿元的网站。网站从03年开始基本是一个LAMP架构,后面把应用从PHP迁移到了Java,数据库从Mysql迁移到了Oracle,在07年的时候,基本是一个集中式的应用,除了使用Oracle外,也有自研的搜索、缓存、分布式文件系统等基础设施。
而07年开始,主要的改造工作是围绕着应用和DB的扩展性做的,在应用方面,我们引入了服务框架,解决了应用服务化的问题;引入了消息中间件,完成了应用的解耦;引入了分布式数据层并且完成了数据变更通知以及数据迁移的系统,数据库也从Oracle换成了Mysql,完成了底层的数据库的伸缩性改造,通过这样的改造,使得我们的集中式的网站变成了一个大型的分布式系统,并且在一定程度内,在应用和数据库层面都是可以做到水平扩展的,这为业务的飞速发展以及应对高峰流量奠定了重要的基础。
上述过程中我提到的服务框架、消息中间件、分布式数据层以及支撑这三个重要系统的软负载中心、集中配置管理中心都是自研的。
CSDN:一个大型的高并发高性能网站架构需要从哪些层面去考虑?技术堆栈的选择又应该注意什么?
曾宪杰:对于大型的高并发高性能网站的架构,我觉得主要考虑的方面包括水平扩展性、稳定性、架构相关基础设施的易用性、容错性、异地数据中心支持等方面。
而技术方面的选择,如果不考虑现有技术人员的情况,那么建议选择的是有成功案例并且社区比较活跃的技术。
CSDN:其中存在的挑战是什么,架构和实现时需要避免哪些坑?
曾宪杰: 细节是魔鬼,一些架构从比较抽象的角度去看,可能比较简单,但是很大的挑战就是细节,这些细节有具体产品实现的细节,也有和业务相关的需求细节。
从我们的经验,从一个功能的构思到最终完全做好,会遇到很多的问题,另外一个方面是一致性,一致性尤其是强一致性的保障是非常具有挑战的事情,再有一个是完全的自动化,这个部分也很困难,一不留神就容易产生雪崩或者不一致等严重的问题,具体需要避免哪些坑,这个在不同的产品上会不一样。
总体来说,在实现中花掉绝大部分时间是用于思考和解决哪些很异常的情况下的实现。
CSDN:关于高负载网站打造有什么建议?
曾宪杰:现在对于很多架构师和工程师来说,水平扩展是大家都特别注意的问题,我的建议是大家也要去重视垂直的扩展,去提升单点的能力在分布式系统中其实是很重要的;另外ÿ