Spring实操指南:必须掌握的技术、工具和应用原理(spring实战怎么样)
7 月 21 日,Pivotal 在北京举办“应用无忧 Spring 实战营”,包括 Pivotal 高级技术总监 Andrew Clay Shafer、京东金融资深研发张凡、Pivotal 高级解决方案架构师李刚在内的多位 Spring 技术专家,从 Spring 技术、工具如何帮助开发者解决业务转型和创新中的实际问题出发,发表多场精彩演讲。
1 使用 Devops 就万事大吉?未必如此
Pivotal 高级技术总监 Andrew Clay Shafer 多年来一直是开源领域的使用者和贡献者,在构建开源业务和社区方面颇有见地,因发表关于 DevOps 和组织学习的论述而出名。作为开场第一位演讲嘉宾,他的演讲主题是《论 Devops 创新的五大关键要素》。
对于企业来说,只要用到 Devops 就万事大吉吗?其实未必如此,从文化、自动化、精益思维、指标与共享这五个 Devops 要素方面,Andrew 进行了一一阐述。他的 PPT 示意图也非常有意思,把这五个要素比喻为了中国的五行金木水火土。
文化会告诉我们如何改善、如何优化、如何进行工作。Andrew 以一张优秀文化和不那么成功文化的对比列表,来阐述为什么文化会决定着 Devops 成功与否。
自动化方面,它与架构密切相关。有时候大家会说软件的一切都要自动化,比如容器、调度、K8S …的流行就是最好的佐证。演讲中 Andrew 也用一张对比图来进行阐释。
指标方面,据 Andrew 介绍,在 Spring 社区,已经在做对服务水平进行评估和监测的很多工作。
共享方面,有人提出在开发人员和运营人员之间再单独配备 Devops 人员,Andrew 认为这并非明智之举,还是需要建立共享机制,让大家打破围墙进行对话。在这方面,Andrew 也特别强调了社区力量的重要性。
精益思维方面,它可以包括软件的方方面面,以上几个要素都可以归在精益层面当中。为什么要强调精益?因为要强调持续改善,不断做得比今天更好。
身为软件开发者,Andrew 在演讲中还传授了非常多个体的成功秘诀,比如创新、比如改变你的行为、比如拥抱风险…
2 深度解析 Spring Cloud Netflix-Ribbon
第二位演讲嘉宾是京东金融资深研发张凡,主要是对 Spring Cloud Netflix-Ribbon 进行了深度解析。主要通过一部分代码讲述 Ribbon 如何作用在客户端来拦截请求,完成负载均衡;默认配置如何生效;怎样获得服务列表;有哪些负载均衡算法,并从代码中找一些负载算法的例子来看 Ribbon 是怎么实现等等。具体来看,他的演讲包括这几个方面:Ribbon 简介、Ribbon 如何实现客户端负载、Ribbon 负载均衡行为定义、Ribbon 的负载均衡策略、Ribbon 服务列表的获取、Ribbon 的重试。
张凡的分享完全从自身工作实践出发,干货满满。这里截取几页演示 PPT,从中可以看到 Spring Cloud Netflix-Ribbon 的使用情况。
3 分布式跟踪和 Zipkin 概念及实践
第三位演讲嘉宾是 Spring Cloud OSS 分布式跟踪技术员 Adrian Cole,演讲内容侧重在分布式跟踪和 Zipkin,Adrian 在 Pivotal 的 Spring Cloud OSS 团队工作。
当我们部署微服务的时候,微服务会积累越来越多,如果有一个图表来显示整体情况,就变得非常重要。对此 Adrian Cole 演示了一个微服务的图表。看到这个图大家会觉得很复杂,但是实际情况就是如此,这个实例是从一个 BBS 抓取的。
对此 Adrian Cole 表示,如果你有 15 个以上的服务要同时展现相互关系,就会非常复杂。所以我们需要有服务图,更需要有具体的仪表板工具。
所谓跟踪,就是追踪系统里的请求走到了哪里,追踪会帮助开发者做出结论,了解服务前后的因果关系。当我们进行异步编程的时候,必须要了解真正的因果关系,而不是时间的顺延关系。通过分布式跟踪,所体现出的因果关系就会非常可靠,这才能让我们知道延迟的根本原因是什么。
所谓 Zipkin 分布式跟踪系统,它可以帮助收集时间数据,解决在微服务架构下的延迟问题;它管理这些数据的收集和查找;Zipkin 的设计基于谷歌的 Google Dapper 论文。
随着微服务架构和容器技术的兴起,看似简单的一个应用,后台可能有几十个甚至几百个服务在支撑;另外当请求变慢或者不可用时,我们也无法得知是哪个后台服务引起的,这时就需要解决如何快速定位服务故障点,Zipkin 分布式跟踪系统就能很好的解决这样的问题。
Zipkin Java 追踪器中最受欢迎的是 Brava;另外还有 Sleuth,可以做侦查,在搜索和自动追踪的时候可以使用。此外还有一些开源的追踪库,包括 OpenCensus、OpenTracing、OpenTracing、Kamon,这些库可以相互作用,在网络上共享数据。
4 Spring Cloud Data Flow 概念及演示
第四位演讲嘉宾是 Spring Cloud Skipper/Stream/Data Flow committer Ilayaperumal,他主要介绍如何使用 Spring Cloud Data Flow 执行数据集成和实时数据处理流水线,并将它们部署到 Cloud Foundry 和 Kubernetes 等多个平台。
在演讲开始,Ilayaperumal 首先介绍了云原生、微服务、Spring Cloud Data Flow 等概念的内涵以及应用场景。
很长时间以来,Spring Boot 一直被我们所关注,Spring Boot 有什么优势呢?Spring Boot 使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。如果你做微服务应用开发,Spring Boot 会是最佳的选择,它可以快速、方便、简单的进行开发。它提供自动配置功能,如果你做一个数据库的开发,如果把数据库开发的参数输入 Spring Boot,它可以协助你进行开发。
在消息驱动的微服务方面, Spring Cloud Data Flow 就是一个最好的例子,它以流为导向,对微服务进行更好的分布。Spring Cloud Data Flow 是一个编排工具,提供流应用,可以持续性的进行交付。在随后的演示中,Ilayaperumal 使用 Spring Cloud Data Flow 的 DSL 和 Designer User Interface 展示了在不用编写任何代码的情况下,针对常见用例如何组装数据流水线。
此外,Ilayaperumal 还介绍了如何使用 Spring Cloud Skipper 持续交付这些处理流水线。Spring Cloud Skipper 是一个 CI/CD 平台,可用于发现、安装、升级和回滚多个云平台上的应用程序。
5 揭秘 Eureka 工作和应用原理
在最后一个演讲中,Pivotal 高级解决方案架构师李刚介绍了 Spring Cloud Netflix-Eureka 原理以及工作原理。Eureka 作为 Spring Cloud 微服务架构中的注册中心,扮演着重要的角色。演讲从源码角度出发,详细介绍了 Eureka 的实现机制。
Eureka 是一个古希腊词语,含义为我找到了,我发现了。相传阿基米德发现浮力原理的时候,说出了这个词。在李刚展示的一张 Eureka 架构图中,可以看到 Eureka Server 不同节点之间的工作原理。
从注册机制来看,包括保存注册信息、更新阈值、将新增示例保存到 Queue、清空缓存、复制给其他 Eureka Server 节点等几个流程;从 Renew 机制来看,包括找到续约实例、更新续约时间、复制给其他 Eureka Server 节点几个流程;此外,李刚还介绍了包括 Cancel、Evict 机制。
在 Eureka Server 缓存机制上,Eureka Server 内置两层缓存,readOnlyCacheMap 本质 MAP,无过期时间;readWriteCacheMap 本质 Guava 缓存,存在过期时间;通过参数可以决定是否启用 MAP 缓存。
在 Eureka Server 节点复制机制上,Eureka Server 启动时从相邻节点同步已有注册信息;Eureka Server 接收 register、 renew、 cancel 事件时会将次信息同步给相邻节点。
6 一个彩蛋
关注 Pivotal 公众号(pivotal_china),可获得此次实战营讲师全部演讲 PPT,让你犹如亲临现场。