2018-11-06

11 月 3 日,Spring 技术的拥有者 Pivotal 在北京举办 SpringOne Tour 技术峰会,包括 Spring 技术布道师 Josh Long、Pivotal 软件开发布道师 Spencer Gibb 在内的一众 Spring 社区大咖来到中国,献上一道 Spring 技术盛宴。

对于想要学习云原生 Java、Spring Cloud、微服务、Spring Boot 2.0 的开发者来说,Spring 技术布道师 Josh Long 的演讲和演示最值得期待。

他还是一贯的风格,语速极快、富有激情、语言诙谐。虽然现场网络开始时有一点问题,但是丝毫没有影响他的情绪。作为《云原生 Java》一书的作者,他还推荐了自己的新书《响应式 Spring》。

2018-11-06_第1张图片

他的演讲主题是《云原生 Spring》,他的演示主要围绕的是如何在微服务环境下进行响应式编程。他选择了 Spring Boot 一个比较旧的版本——2.0.6 版本,用于建立并演示一个服务。

具体到演示环节,信息量还是非常大的,加之 Josh 语速快、手下代码翻飞,现场观众看得直呼过瘾。

Josh 以 Demo 的方式来介绍云原生 Spring,首先快速从 start.spring.io 上构建一个基于 Spring Boot、Reactive、Mongo 的 reservation 微服务,然后基于微服务构建 routing 支持,引入 Spring Cloud Gateway,Spring Hystrix,Spring Security,Flow Control,Client 检测,Rsocket 等机制。整体 Demo 演示下来,能够让与会的开发者充分了解 Spring Framework 的新功能和机制。

午间休息的时候,很多参会者去跟 Josh Long 以及其他几位 Spring 技术专家合影,这其中有些人是第一次来中国。大家都很兴奋,很多人是 Josh Long 以及众多技术大咖的“粉丝”,合影时大喊“Open source”,令人感受到社区的强大,以及开发者的热情。

2018-11-06_第2张图片

现场随机采访几位参会者,大多对 Josh Long 操控代码的熟练程度、思维的活跃印象深刻。某银行客户提及 Josh Long 的演讲表示:该分享从微服务思路上介绍了各类服务组合,包括调用、控制、认证、拦截等等,是比较完整的微服务治理的概念和思路的展示。对于开发者来说,有利于建立对 Spring 的系统认识。

如果大家对 Josh Long 的分享尤其是代码演示感兴趣,可以观看视频回放,Josh Long 的代码演示还是非常精彩的。

当天参加活动的小伙伴们还是很幸运的,因为 Josh 在下午活动中再次亲身上阵进行 Deom 演示,告诉大家如何测试 Spring 应用和服务。标题很有意思,叫做:Bootiful Testing。

有了测试驱动型开发 (TDD),我们可以确信自己构建的内容正确无误。TDD 让开发人员知道他们能够修复出现的问题并加以改进,从而满怀信心。这个演示包括如何测试基本组件模型、如何利用测试切片的优势,以及如何测试 Web 应用。

响应式 Spring 的道法术器

Pivotal 软件开发布道师 Mark Heckler 发表了题为《响应式 Spring 和 Spring Boot 2.0》的演讲并现场编写了一个 CoffeeService 的 Reactive Stream 的 demo 应用,通过 coffeeservice 的 demo 应用,开发人员可以理解 reactive 的非阻塞、异步、事件驱动机制。Mark 很风趣地自诩为一位“懒惰的编程者”,不知道这一说法从何而来。

现场编写 Demo 的 github repository 点击可以看到。

2018-11-06_第3张图片

响应式编程是 SpringFramework5.0 最重要的特性之一。响应式编程提供了另一种编程风格,专注于构建对事件做出响应的应用程序。Mark 介绍了 reactive stream(定义响应性 API 的语言中立尝试)和 Reactor(由 Spring Pivotal 团队提供的 Reactive Stream 的 Java 实现)的用途以及核心 API。

在分享结束的时候 Mark 展示了一张 PPT,这些资源可以协助开发者进行测试。

2018-11-06_第4张图片

Spring、函数、无服务器如何为我所用?

Pivotal 资深云平台机构师刘凡的分享集中在 Knative、riff 和 Serverless,希望揭示的问题是:Spring、函数、无服务器如何为我所用?

分享一开始,刘凡询问现场有多少人在用 k8s,举手的人还是挺多的,这也与当前 k8s 的热度相吻合。

Knative 构建在 Kubernetes 之上,提供了一系列中间件组件来构建以源码为中心,基于容器的现代应用,便于这些应用能够运行在任何云环境,支持不同的公有云、私有云、甚至在第三方的数据中心。

Knative 的每一个组件都是基于 kubernetes 框架或应用并可以进行共享的,同时也是真实场景中成功经验的总结。Knative 的组件主要关注解决单调重复但复杂的任务,比如部署容器、基于 kubernetes 从源代码到 URL 的工作流容器编排、针对蓝绿部署的路由和流量管理、基于请求的自动弹性扩展、对事件生态绑定运行的服务。

riff 也是一个开源项目,提供 90% 的 Knative 的源码。刘凡进行了一个 riff on Knative 的演示。对于 riff 来说,第一步是创建 K8S 集群,进行安装。

对于无服务器函数,刘凡介绍,其作用是用于让大家更加关注自己的业务,提升资源的使用效率。不同的工作负载可以使用不同的平台,比如容器编排(CaaS)、应用平台 (PaaS)、Serverless Functions。

2018-11-06_第5张图片

无服务器 /FaaS(Function-as-a-Service)的适用场景包括:数据实时处理、文件实时处理、实时流处理(如日志流)、实时消息处理、ETL、IOT、移动应用后端、数据分析、API 和微服务开发、Webhook、作业调度、消息推送服务、错误处理等很多个。

3Spring Cloud Gateway 的架构和体验之旅

Pivotal 软件开发布道师 Spencer Gibb 的分享主题是《Spring Cloud Gateway 的架构和体验之旅》。围绕 API 网关能让企业的微服务架构获得哪些好处、API 网关概念、类型及特征展开。值得一提的是,他是 Spring Cloud 的成员,更是 Spring Cloud Gateway 的主要贡献者,这是他第一次来到中国。

Spencer 在演讲中首先幽默地拆解了 Spring、Cloud 和 Gateway 的关系及,即 Spring 指的是运营在 Spring Framwork5.0 以上,Cloud 指的是运行在 Spring Boot2.0 以上并按照云原生的方式开发,而云原生的模式就是 API Gateway,所以三者相互依赖与共存。

在当前的微服务应用中,应用在调用后端的微服务的过程中,不可避免的会面临路由、安全、监控、弹性、金丝雀部署等要求,而 API Gateway 就是在这样的需求和背景下应运而生。API Gateway 的类型可以是 Applicance、SaaS 服务、Web Server、Mesh 和面向开发者的。

2018-11-06_第6张图片

而具体到 Spring Cloud Gateway,它是基于 Spring boot2.0、Project Reactor 等技术开发的非阻塞网关。

在演示环节,Spencer 介绍了 Spring Cloud Gateway 以及它的架构和开发人员的体验。现场听众了解了路由匹配和筛选,以及与 Zuul 1 体验的不同之处。Spring Cloud Gateway 作为 Spring Cloud 生态系中的网关,目标是替代 Netflix zuul。

Spencer Gibb 表示,Spring Cloud Gateway 对于开发者的最大意义和价值在于,这是一个云原生,不仅仅是架构,而是涉及整个流程的持续创新,可以让开发者直接部署而不用依赖于任何其他团队和组织。

4为什么 Cloud Foundry 是运行 Java 微服务的最佳平台?

Pivotal 高级解决方案架构师李刚的演讲主题是《为什么 Cloud Foundry 是运行 Java 微服务的最佳平台?》

对于企业来说,从开发到生产,经历了什么?其实生产之旅并非一片坦途,其间有很多磕磕绊绊。借助 Spring 和 PAS(Pivotal Application Service,也就是 Pivotal Cloud Foundry——PCF),让我们能够快速上升到生产环境。

在对 Spring Boot 和 Spring Cloud 的介绍中李刚表示:所谓 Spring Boot,可以五分钟构建出一个简单的应用,甚至这个时间其实可以更短。Spring Boot 的能力特性包括:快速生成应用、自动依赖映射管理、用 profiles 文件来管理不同环境下的配置、强大的开发工具、自动配置、监控并管理 endpoints 、面向微服务。

而所谓 Spring Cloud,这是与 Netflix 合作、专门针对脆弱的基础设施而设计,这是一个 Java 的微服务框架,100% Spring Boot 支持。

在提及企业为什么应该选择 PAS 的时候李刚表示:通过统计,大部分开发人员每天专注于写代码的时间并不长,很多时间都用于应用程序的部署、基础设施的配置等等了,没有放在代码本身。

但是对于很多企业来说,很多转变正在发生。T-Mobile 过去更新和交付新软件版本需要 72 个步骤、历时 7 个月,现在实现了当日部署;利宝互助保险集团在一个月内构建部署了一款 MVP 应用,几个月后便交付了最终版本;康卡斯特一支 4 人组成的运维团队支持了 1500 位开发人员;

家得宝每月向生产环境交付 1500 次,每月向所有环境交付 17000 次。

2018-11-06_第7张图片

使用 Spinnaker 在 k8s 上测试、构建和部署应用

Pivotal 解决方案架构师 Paul Czarkowski,他的分享主题是《使用 Spinnaker 在 Kubernetes 上创建开发工作流》。

Paul 在演讲一开始就调侃自己既不会 Java 更不会 Spring,自己只是一个运维者。作为运维者,Paul 目前力求改进 k8s 和 OpenStack 等复杂分布式系统的可运维性问题。在演讲中,Paul 介绍了 k8s 及其核心组件,借助 Spinnaker 的演示,着重介绍了 Spinnaker 可以轻松创建自定义工作流,用于在 k8s 上测试、构建和部署应用。

2018-11-06_第8张图片

k8s 是一个运维平台,具备极大的灵活性,近期受到越来越多的关注,应该说是一个非常热门的概念。但其实 k8s 部署简单应用时会遇到一些问题,而 Spinnaker 可以帮助开发者轻松创建自定义工作流,用于在 k8s 上测试、构建和部署应用。应该说,Spinnaker 可以节省很多劳动,它是一个开源的云驱动的应用,是一个好工具,用在多个平台、多个云上,无论用户要把云部署到哪里。

在分享中 Paul 为听众进行了一个 Spinnaker on PKS 的演示,这个演示的安装和部署还是非常简单的,只需要 5 分钟。

你可能感兴趣的:(2018-11-06)