永源中间件微服务系列课程

Jeff Zhang | April 1, 2017

微服务是目前的热度技术话题,对于企业和互联网软件应用的设计开发,都有良好的指导作用。

我们立足于Java语言,借鉴世界范围内优秀技术,结合自身的实践经验,总结开发出一系列的微服务课程。

目前有3组课程:

  1. 微服务全局内容:从微服务总体的角度,参考单体结构的系统,如何进行技术演进,对采用的技术进行详细说明和较深入的剖析。对于架构人员和高级开发人员在技术原型,架构设计和重构有帮助。
  2. 微服务Spring系列技术内容:目前SpringBoot和SpringCloud是Java领域最受瞩目的微服务技术框架,结合容器和编排技术,如何设计应用。对于开发人员进行具体的设计和开发会有帮助。
  3. MicroProfile微服务相关内容:MicroProfile是JavaEE面向微服务开发定义的技术子集,利用JavaEE API良好的设计和应用服务器稳定实现,来开发微服务应用。对于原有系统的无缝迁移和沿用JavaEE技术知识和保护原有投资,有很强的借鉴意义。同时MicroProfile也在不断的发展完善中,未来可能会成为Java语言微服务方面的标准。

以上3组课程各有侧重点,也有一些内容重合的地方,基本上来说覆盖范围和重合如下图:

Microservice三个系列课程范围

课程A-微服务技术全局内容

主题: 企业应用微服务化

时长: 大概需要2-3天

内容纲要:

一,经典企业应用架构

  1. JavaEE是蕴涵了企业应用特性需求的规范集合
  2. SpringFramework是优秀的实践落地框架
  3. 互联网,移动开发带来的设计挑战

二,微服务化的内在动力和外部助力

  1. 高并发量,分布式运算,无尽的需求和快速功能实现
  2. 架构微服务化
  3. 微服务概述
  4. 和单块应用的区别
  5. 海量用户互联网
  6. 应用设计的12要素
  7. 容器技术和服务编排技术不断成熟
  8. Docker容器运行微服务
  9. 使用Kubernetes来管理应用容器
  10. Nginx或者Undertow提供Web层反向代理
  11. 对于运维管理的更高要求,架构设计和开发方式也变化
  12. Keycloak安全权限管理
  13. Api Gateway提供服务注册和消费,版本升级管理,服务限流,安全防护等
  14. APM应用管理,检测服务调用路径
  15. ELK集中管理日志
  16. 服务治理的需求和实现思路

三,Java应用层技术

  1. 微服务的本质,不是体积微小,接口很小,而是领域对象聚合根的服务视图。
  2. SpringBoot+SpringCloud技术
  3. SpringBoot应用设计
  4. 关键点是配置项定义
  5. 通过Rest或者Websocket提供服务
  6. 各种组件通过maven组合构成
  7. JavaEE规范技术栈的选用
  8. 配合SpringCloud,保存配置,注册服务,路由管理,断路控制等
  9. 系统自治,日志输出,安全设置等
  10. Wildfly-swarm的追赶,microprofile定义的规范集
  11. Wildfly-Swarm基于JBoss MSC,设计思路
  12. 架构分析
  13. 应用示例
  14. Vertx异步响应服务框架
  15. Vertx异步框架
  16. 基于Netty,内部Json格式
  17. 和Nodejs类似的循环执行线程,但有独立执行线程的扩展
  18. Socket和HTTP服务
  19. Vertx-Web处理Web应用请求
  20. 异步调用方式处理,RxJava数据处理
  21. 支持集群,多节点数据共享
  22. 模块化对微服务的设计的影响
  23. 现有的OSGi模块化
  24. 未来采用Jigsaw模块化

四,技术架构的思考

  1. 对事务需求的初步分析,尽可能的降低对一致性的需求
  2. 应用特性和面对的客户群
  3. 分布式运维能力

课程B-微服务Spring系列技术内容

主题: SpringBoot和SpringCloud构建微服务

时长: 大概2-2.5天

一. SpringBoot

  • 微服务设计方式适应互联网云端应用
  • SpringBoot介绍
  • SpringBoot设计原则,单一jar包组合方式,Initializer分析
  • 构建工具一览和Maven构建
  • Starter POMs
  • 创建可以执行的Jar
  • 多个层次可以选择适用的技术实现,如Tomcat/Jetty/Undertow,SpringMVC/Jersery,JPA/SpringDataRedis等等
  • 创建REST API,具体实现和swagger使用
  • 数据层访问,SpringData,加载数据
  • 事务处理和多事务源的分布式事务考虑
  • JMS和消息的配置和使用
  • 自动配置的奥妙,代码分析
  • Reactor,异步数据获取
  • 安全部分Spring Sercurity结合使用
  • Session全局管理
  • 生产级功能,监控/管理/统计能力的实现
  • Cli命令行管理方法

二. SpringCloud

  • 配置信息的灵活管理,中心配置能力
  • Netflix重点开源项目讲解
  • 通过Eureka注册和发现实例
  • CircuitBreaker的作用和重要性,Hystrix使用
  • RestClient的能力和Ribbon负载均衡调度
  • 通过Zuul进行路由和拦截操作
  • 集中日志处理分析说明

三. MicroService

  • 传统企业应用迁移到云端需要注意的问题,12条设计原则
  • 微服务和JavaEE设计方案的对照分析,简化还是复杂
  • 微服务对于运营能力的高要求,部署方式的改变等分析
  • Docker和K8s容器和编排工具考虑
  • 企业应用服务化迁移的案例和思考

课程C-Microprofile微服务技术和Wildfly-swarm实现

课程题目: MicroProfile技术精解–JavaEE面向微服务的规范子集

时长: 大概2天

课程介绍: MicroProfile是Java技术社区新定义的JavaEE规范子集,目前1.0包括JaxRS, CDI, JsonP三个规范。 在当前云计算,微服务的技术演进大背景下,企业应用设计开发也需要进行架构变革和技术适应。 JavaEE技术作为企业应用优秀的技术全集,对于需要快速迭代的互联网软件开发,有些过于庞大了。 把30多个规范其中一部分提取出来,构成一个干练的子集,用来构建微服务应用,正是Micro Profile的设计原则。

课程目标: 讲述MicroProfile中的各个规范技术特点。JaxRS规范和实现如何处理REST访问请求,CDI规范的技术内容,具体设计原则等。 以及利用wildfly-swarm进行微服务实战演练,wildfly-swarm基于Wildfly(JBossAS)应用服务器, 紧凑的内核设计和可扩展的子系统,可以方便的进行微服务系统的剪裁。 通过对这个课程的学习,学员可以了解如何利用JavaEE标准技术构建微服务, 以及进行微服务实践和掌握wildfly-swarm架构原理。并且对单体系统向微服务系统迁移的也有参考意义。

授课对象: 中高级Java程序员,架构师。对JavaEE有关规范有一定了解的开发者。

内容大纲:

一,MicroProfile规范集合

  1. 形成背景,符合微服务设计
  2. 主要的支持社区和开源实现

二,JaxRS规范

  1. REST接口,基于HTTP的语义级别无状态协议,面向资源定义,考虑幂等性
  2. 资源地址和Annotation注解
  3. 传递格式,格式文本json/xml,通用解析工具,DOM/SAX/Stax解析方式对比
  4. 响应处理,返回值和异常
  5. 过滤器和实现
  6. REST客户端API
  7. 异步接口说明
  8. 异步通信和推送

三,CDI

  1. IOC注入解析和DI规范
  2. CDI是DI针对企业应用开发的扩展,揭示对象间关系本质的规范
  3. Scope/LifeCycle
  4. Stereotypes
  5. Decorator
  6. Event
  7. Portable extensions
  8. CDI和EJB,CDI和SpringFramework的区别和相关分析

四,相关规范

  1. JsonP处理Json格式数据
  2. XML格式处理
  3. JPA对象持久化到关系数据库中

五,Wildfly-swarm实现微服务

  1. wildlfy-core为基础组件
  2. 子系统扩展机制
  3. Fraction组成机制
  4. 配置文件读取方式
  5. JaxRS和CDI规范实现Resteasy和Weld
  6. 代码实践