2017-04-01

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

我们立足于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要素

  3. 容器技术和服务编排技术不断成熟

    • Docker容器运行微服务

    • 使用Kubernetes来管理应用容器

    • Nginx或者Undertow提供Web层反向代理

  4. 对于运维管理的更高要求,架构设计和开发方式也变化

    • Keycloak安全权限管理

    • Api Gateway提供服务注册和消费,版本升级管理,服务限流,安全防护等

    • APM应用管理,检测服务调用路径

    • ELK集中管理日志

    • 服务治理的需求和实现思路

三,Java应用层技术

  1. 微服务的本质,不是体积微小,接口很小,而是领域对象聚合根的服务视图。

  2. SpringBoot+SpringCloud技术

    • SpringBoot应用设计

    • 关键点是配置项定义

    • 通过Rest或者Websocket提供服务

    • 各种组件通过maven组合构成

    • JavaEE规范技术栈的选用

    • 配合SpringCloud,保存配置,注册服务,路由管理,断路控制等

    • 系统自治,日志输出,安全设置等

  3. Wildfly-swarm的追赶,microprofile定义的规范集

    • Wildfly-Swarm基于JBoss MSC,设计思路

    • 架构分析

    • 应用示例

  4. Vertx异步响应服务框架

    • Vertx异步框架

    • 基于Netty,内部Json格式

    • 和Nodejs类似的循环执行线程,但有独立执行线程的扩展

    • Socket和HTTP服务

    • Vertx-Web处理Web应用请求

    • 异步调用方式处理,RxJava数据处理

    • 支持集群,多节点数据共享

  5. 模块化对微服务的设计的影响

    • 现有的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注解
2. 传递格式,格式文本json/xml,通用解析工具,DOM/SAX/Stax解析方式对比
3. 响应处理,返回值和异常
4. 过滤器和实现
5. REST客户端API
6. 异步接口说明
7. 异步通信和推送

三,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. 代码实践