点击围观!腾讯 TAPD 助力金融行业研发提效、敏捷转型最佳实践! 了解详情
写点什么

Spring 技术布道师 Josh Long 来华:用 Show 代码的方式来聊云原生

  • 2018-11-06
  • 本文字数:3746 字

    阅读完需:约 12 分钟

Spring 技术布道师 Josh Long 来华:用 Show 代码的方式来聊云原生

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

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

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

他的演讲主题是《云原生 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”,令人感受到社区的强大,以及开发者的热情。

现场随机采访几位参会者,大多对 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 点击链接可以看到。


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

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

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。

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

Spring 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 和面向开发者的。

而具体到 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 对于开发者的最大意义和价值在于,这是一个云原生,不仅仅是架构,而是涉及整个流程的持续创新,可以让开发者直接部署而不用依赖于任何其他团队和组织。

为什么 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 次。

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

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

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

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

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

2018-11-06 16:2318658
用户头像
张晓楠 InfoQ总编辑

发布了 144 篇内容, 共 87.6 次阅读, 收获喜欢 377 次。

关注

评论 10 条评论

发布
用户头像
快如闪电
2018-11-08 17:12
回复
用户头像
网站重要改版了,哎。真是不容易呀。
2018-11-08 13:43
回复
用户头像
哪里有现场演讲视频吗?
2018-11-08 11:30
回复
Josh Long的那段文章中就有。点击可以收看。
2018-11-09 10:48
回复
用户头像
恭喜改版成功,不过发现图片显示很慢才加载成功
2018-11-08 11:06
回复
应该不会,昨天某个时间段官网流量太高。今天再试试?
2018-11-09 10:48
回复
用户头像
跟 Josh 合了个影,让他在我给他翻译的云原生 Java 上签了个名。https://jimmysong.io/posts/cloud-native-java/
2018-11-08 10:03
回复
厉害。
2018-11-09 10:48
回复
用户头像
spring的文章配了一个php程序的图片,还请编辑改进一下。
2018-11-08 09:39
回复
^_^
2018-11-08 09:48
回复
没有更多了
发现更多内容

JVM最佳学习笔记<一>---Java内存区域与内存溢出异常

Loubobooo

Java JVM

AutoConfigurationImportSelector到底怎么初始化

编号94530

Java spring Spring Boot import

变则通,通则久 —— 读《谁动了我的奶酪?》

YoungZY

读书 读书感悟

如何成为高手: 到知识的源头去

lmymirror

学习 方法论 高手

OAM v1alpha2 新版:平衡标准与可扩展性

孙健波

运维那点事 - jenkins流水线

yann [扬] :曹同学

运维与云

yann [扬] :曹同学

Kafka系列8:一网打尽常用脚本及配置,宜收藏落灰!

z小赵

大数据 kafka 实时计算

这么多年了,QQ没发现这个问题吗?

BabyKing

JavaScript 基础拾遗 —— this 的前世今生

hq

Java 学习 大前端

如何用五步建设数据中台?

博文视点Broadview

大数据 数据中台 架构 中台

Yii2.0 RESTful API 认证教程

Middleware

php RESTful Yii2

Linux 终端下记不住命令的使用方法?这个开源项目帮你解决。

JackTian

Linux 开源 运维 操作系统 命令

原创 | 使用JUnit、AssertJ和Mockito编写单元测试和实践TDD (九)测试驱动开发(TDD)

编程道与术

Java 编程 软件测试 TDD 单元测试

zabbix 实战指南(2)

橙子冰

zabbix

算法:时间复杂度和空间复杂度

shirley

算法 时间复杂度

Yii2.0 RESTful API 基础配置教程

Middleware

php RESTful Yii2

JVM最佳学习笔记---总览

Loubobooo

Java JVM

眼前搁座金山也看不见

池建强

搜索引擎 学习

七年老程序员面试经历

代码诗人

钱从哪里来 - 中国家庭的财富方案

石云升

读书笔记 工作 财富 买房 资产配置

到底谁是你老板

Neco.W

工作 创业心态

2020年全球经济萎缩,飞链热交易所逆袭而来闪耀数字经济

极客编

将footer固定在底部: Flexbox vs Grid

寇云

CSS css3

ESP8266远程控制+MicroPython 固件初体验

黄耗子皮

物联网 esp8266

Python 沙盒环境配置

黄耗子皮

分支管理模式

wiflish

git

python实现·十大排序算法之堆排序(Heap Sort)

南风以南

Python 排序算法 堆排序

这个开源神器可快速帮你安装 MacOS 虚拟机!

JackTian

macos GitHub Linux 操作系统 虚拟机

DevOps知识点——3C知多少

禅道项目管理

DevOps 测试 持续集成

奈学教育:分布式架构,刚性事务-2PC必须注意的问题及3PC详细解说

奈学教育

分布式架构 2PC 3PC

Spring 技术布道师 Josh Long 来华:用 Show 代码的方式来聊云原生 _云原生_张晓楠_InfoQ精选文章