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

| 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. 架构微服务化
  • 微服务概述
  • 和单块应用的区别
  • 海量用户互联网
  • 应用设计的12要素
  1. 容器技术和服务编排技术不断成熟
  • Docker容器运行微服务
  • 使用Kubernetes来管理应用容器
  • Nginx或者Undertow提供Web层反向代理
  1. 对于运维管理的更高要求,架构设计和开发方式也变化
  • Keycloak安全权限管理
  • Api Gateway提供服务注册和消费,版本升级管理,服务限流,安全防护等
  • APM应用管理,检测服务调用路径
  • ELK集中管理日志
  • 服务治理的需求和实现思路

三,Java应用层技术

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