Hope is a good thing, and maybe the best thing of all

编程不止是一份工作,还是一种乐趣!!!

2016上海站QCon大会参后感

一. 概要

QCon2016上海站,于10月29日上海宝华国际酒店拉开了华丽的大幕,作为全球顶级技术盛会,吸引了众多业内技术大咖的参加,真可谓盛况空前。本次大会内容丰富多彩,精彩纷呈,涉及微服务、架构、云存储、安全、前沿技术等多个专题,为广大参会者提供了多样化的选择,总共100多场讲座,安排了7个分会场来并行举办。

非常荣幸可以作为途牛旅游网的代表出席本次会议,借此机会可以近距离的接触和了解业内一些顶尖的人才,开阔自身视野。学习别人先进的技术和思想;结合我们自身情况进行一些合理的改进。会议的专题很多,本人只是挑了一些感兴趣的专场:

  • 《微服务:模式与实践》

    QCon 联席主席,路易斯维尔大学兼职教授,前惠普架构师 Wesley Reisz

  • 《构建微服务体系下的全链路监控系统》

    唯品会高级架构师 姚捷

  • 《滴滴代驾微服务架构演进》

    滴滴代驾事业部架构师 赵伟

  • 《电商 CRM 的微服务重构实践》

    阿里巴巴客户体验事业群高级技术专家 邱小侠

  • 《JVM 虚拟化—— 重新定义 Java 容器热部署资源管理机制》

    阿里巴巴技术专家 陆传胜

  • 《Java探针技术在应用安全领域的新突破》

    OneAPM 安全技术总监 刘再耀

  • 《使用 Apache Kafka 进行关键业务消息传输》

    LinkedIn 数据基础架构部门 Kafka 组高级软件工程师 秦江杰

  • 《同程旅游微服务架构设计实践》

    同程旅游首席架构师 王晓波

  • 《转型路上,苏宁技术的砥砺与涅槃》

    苏宁云商 IT 总部执行总裁助理 乔新亮

  • 《企业基于微服务的应用架构设计范式》

    普元解决方案中心总经理 朱江

  • 《什么是架构的极致?——由 IoT 核心参考架构 Sluff 带来的思考》

    南潮(ruff.io)架构师 周爱民

  • 《架构本质及大型电商微服务实践》

    前1号店首席架构师 王庆友

  • 《互联网+下的 CRM 体验进化》

    阿里巴巴 B2B 技术部高级产品专家 张涵

二. 启示与思考

1. 微服务架构

《微服务:模式与实践》,Wesley先生开题用几幅简单的草图讲述了一个简单的单机应用,随着数据量与流量的不断增加、业务不断的扩张,逐渐演进成一个分布式应用集群,最终成为一个复杂的分布式微服务集群的过程。随后介绍了在实施过程中一些常用的架构模式:如Scale Cube提醒我们可以从多个维度提升系统的弹性、CAP原理指导我们在设计系统的时候应该做一些取舍、事件源模式在提升性能的同时还能提高系统整体的可扩展性、CQRS方法在简化服务接口设计的同时还能提升应用的弹性、断路器可以保护系统的可靠性。短短的40多分钟时间,Wesley先生道出了微服务的来龙去脉,实在是精彩。


微服务为我们带来了无限的可能,如系统的弹性、技术异构、扩展性、复用性等等,但世上本无银弹,在享受微服务带来的诸多便利的同时,我们也需要付出一些代价。微服务架构把系统的复杂性,抽象为成千上万个细小的服务以及由这些小服务相互协作来完成具体的业务。因此,系统的整体可靠性就高度依赖这些小服务,如何治理和监控这些服务就成为微服务时代一个新的挑战。

《构建微服务体系下的全链路监控系统》这一课题全面概述了微服务架构下系统监控的方方面面,从服务的概览信息到服务的性能指标,从调用链到拓扑关系,正所谓“三分建设,七分运营”。


前面两个课题的内容都是偏向理论的,而《电商 CRM 的微服务重构实践》则更加亲民,讲述了如何通过微服务架构的应用,重构了原来臃肿低效的 CRM 系统,让每个服务小团队专注自己的业务快速迭代。同时,通过数据、模型、机器学习等智能技术手段构建全新的后台微服务,极大的扩展了我们平台的服务吞吐能力。

途牛的CRM系统面临着同样的问题,系统越来越重,每天大量的慢查询产生,模块间边界模糊等,听了肥侠的分享,也在很大程度上坚定了我们使用服务化的架构对CRM进行重构的决心。

2. 前沿的技术

Java 应用热更新技术是很多容器(如 tomcat)很早就实现的功能,但是由于天生的一些缺陷,比如无法精确控制和干净回收 cpu、内存等资源,一直没有在生产环境中的大规模部署应用,一般只是在开发环境中用于快速验证代码改动。对生产环境中的应用系统升级,大部分项目会采用保守的“重启”方式操作每个节点,使得新版本的 Java 进程或容器运行在一个“干净”的环境中。对于单个节点重启动作开销并不算很大,但是对于拥有海量节点的大规模 Java 应用,为了在升级过程中不间断提供服务、不造成请求数和响应时间的波动,一般需要分较小的批次进行发布和重启,大量持续的重启操作使得发布这一操作成为一个整体上非常耗时的过程。

《JVM 虚拟化—— 重新定义 Java 容器热部署资源管理机制》介绍了阿里的一种动态更新大规模 Java 应用的方案,通过在 Java 虚拟机层面加入虚拟化的支持,能有效解决传统热更新方案的痛点,高效精确的回收系统资源。对于大规模 Java 应用,可以做到不重启 Java 进程而达到更新应用的目的,整体更新操作时间也被大大缩短。在此之前,我们分析JVM无非是定位一些具体的应用,又或者是调优应用的延迟与吞吐,却不曾想过还能通过修改JVM来实现应用的热部署问题,听完这次分享,感触颇深。


网络攻击是让无数安全管理和开发人员头疼不已的难题。在开发阶段提高应用程序的健壮性是解决应用安全的根本,但是无论在理论上还是实践上,都有难以逾越的障碍。现有的应用安全方案有WAF和漏洞扫描等,这些外部防护方案在精确度和时效性上效果不佳。

RASP 是创造性地运用了 JDK 的探针机制,无需人工修改一行应用代码,就可以在应用中嵌入安全防护代码,在应用程序运行时以自适应的方式更有效地实现攻击监控与安全防护,对安全漏洞进行快速修复。

三. 总结

总而言之,这次参会收益颇多,在思想和眼界方面都有很大的提高。

  1. 架构方面,巩固和加深了对微服务架构的理解。对微服务的优缺点、什么时候应该使用微服务来重构系统、建设微服务常用的模式与实践过程等方面都有很大的收获。加深理解了系统的监控与团队的管理在微服务架构下举足轻重的作用。

  2. 技术方面,JVM 虚拟化实现应用的热部署、Java探针技术来加强应用的安全性、Kafka传输关键业务消息这些课题都感触深刻。我们在学习和使用技术解决业务创建价值的同时,也应该大胆尝试创新发明更好的事务,技术是死的,而人是活的,要学会活学活用。