许晓斌,阿里巴巴 AliExpress 高级技术专家,目前在 AliExpress 从事微服务实施、研发效率提升相关工作。《Maven 实战》作者,《Cucumber:行为驱动开发》合译者,曾经是 Maven 中央仓库的维护者,参与开发 Maven 仓库管理软件 Nexus。
推崇敏捷开发方法和 DevOps 的理念,关注 Scalability、领域驱动设计、编程语言等技术领域。业余喜欢读书和咖啡。
微服务已经从一个火爆的概念慢慢沉淀成一系列原则、模式、实践和工具。在实践的过程中,如何参考领域驱动设计(DDD)的思路划分服务;当服务数量膨胀后,如何控制发布和运维成本;以及如何做好服务监控及跨服务的链路监控;如何选用分布式系统的基础服务,类似的问题都是大家必然会遇到的。我们将提炼一线微服务架构的经验,从中提炼宝贵的知识分享给大家。此外,我们也会关注微服务领域的最新进展,让这个词依旧充满想象力。
在“史前”单体巨兽型应用时代,配置管理不是什么大不了的事情,但今天在微服务架构中,配置管理已发生革命性的变化,但业内对这一块的前沿探索一直处于秘而不宣的状态,如果我们对这块没有过深入的思考和实践,我们很难真正理解为什么 Spring Cloud 会提出 Configuration Service 的概念。
在面向分布式的微服务系统中,如何通过更高效的配置管理方式,帮助微服务系统架构持续“无痛”的演进,动态调整和控制系统的运行时飞行姿态,值得我们好好的在配置管理上重新思考和设计。
随着三通一达对干线核心能力的建设,菜鸟对物流大数据的掌控,京东物流能力的开放,物流市场的竞争进入了白热化的阶段。大家比拼的不再仅仅是满足客户需求,而是开始比拼对市场变化的反应速度,比拼低成本运营的能力,比拼业务创新的能力。
这些变化使得单体应用越来越大,系统越来越多,数据流越来越复杂,时效越来越差,对业务变化的响应越来越慢,向服务化转型势在必行,这对应用架构,数据架构,基础架构的挑战非常大。
本演讲主要分享顺丰从单体应用架构迁移到微服务架构的过程,同时介绍架构设计思路,服务拆分思路,以及一些基础组件选型的思路,还将分享我们在服务化改造实践中积累的一些经验,教训,希望能给一些正在进行服务化实践的同行一个参考。
随着微服务化在 AliExpress 的全面推进,我们的服务数量在不断上升,在这个发展过程中我们逐渐总结出一些治理手段,以确保技术架构的必要一致性和研发效率的可靠性。
随着微服务架构的不断普及应用,组织架构也随之演变改进,企业内组成很多个小而美的全功能团队。他们每天开发和部署多个不同的服务,每个服务相对独立。这给传统的集成测试带来了很大的挑战。
传统的集成测试的特点:
Ian Robinson 最先提出了用消费者驱动的契约进行面向服务开发的模式,我们公司基于这个模式开发了 Pact 测试框架(https://github.com/realestate-com-au/pact)目的是用轻量级的契约测试来代替厚重的集成测试。它的实现原理是:
在消费端用单元测试的形式(更轻)来生成 pact 契约。服务端通过验证契约来保证两者稳定集成。
现在这个框架得到了很多公司的广泛应用,从最先的 Ruby 版本到现在大部分语言的支持(包括 Java,Scala,.Net,JavaScript,Go,Swift 等)。 同时也开发了一些工具比如 Pact Broker,用来存放契约,和 CI 集成,新的契约能自动触发服务端的 build。目前我们还在尝试跟 Swagger 的集成。
在本次演讲中,我先从阐述微服务架构中的集成测试痛点开始,引出我们的框架,解释它实现的原理,然后现场演示一些实例。同时也顺带分享我们的一些实践经验。
腾讯游戏用户精细化运营业务快速发展,在亿级用户、海量数据、多部门异构系统的背景下,原本 Case-by-case 的模式,在开发效率和运营质量上的瓶颈日益凸现。
本演讲将分享在腾讯游戏用户运营领域模型的探索和技术实践中,通过 Golang 结合 Lua 开发高性能的微服务运行时框架和服务网关,实现流程和协议的标准化,进行敏捷开发和持续交付的历程,同时介绍在技术选型、架构演进、可用性建设方面的思考和实践。
服务高效监控,问题定位,灰度发布,高级路由策略,高效通讯和存储组件等许多自研的中间件,工具和基础服务组成的整套解决方案在小米消息推送,账号等亿级在线服务的应用中,极大的提升了系统的稳定性和运营的便利性,优化系统的架构。通过真实案例的分享,介绍面对大型系统不稳定性中的难点和痛点,如何利用这些组件和基础服务逐步解决问题的思路和方案。