| April 1, 2017
微服务是目前的热度技术话题,对于企业和互联网软件应用的设计开发,都有良好的指导作用。
我们立足于Java语言,借鉴世界范围内优秀技术,结合自身的实践经验,总结开发出一系列的微服务课程。
目前有3组课程:
- 微服务全局内容:从微服务总体的角度,参考单体结构的系统,如何进行技术演进,对采用的技术进行详细说明和较深入的剖析。对于架构人员和高级开发人员在技术原型,架构设计和重构有帮助。
- 微服务Spring系列技术内容:目前SpringBoot和SpringCloud是Java领域最受瞩目的微服务技术框架,结合容器和编排技术,如何设计应用。对于开发人员进行具体的设计和开发会有帮助。
- MicroProfile微服务相关内容:MicroProfile是JavaEE面向微服务开发定义的技术子集,利用JavaEE API良好的设计和应用服务器稳定实现,来开发微服务应用。对于原有系统的无缝迁移和沿用JavaEE技术知识和保护原有投资,有很强的借鉴意义。同时MicroProfile也在不断的发展完善中,未来可能会成为Java语言微服务方面的标准。
以上3组课程各有侧重点,也有一些内容重合的地方,基本上来说覆盖范围和重合如下图:
课程A-微服务技术全局内容
主题: 企业应用微服务化
时长: 大概需要2-3天
内容纲要:
一,经典企业应用架构
- JavaEE是蕴涵了企业应用特性需求的规范集合
- SpringFramework是优秀的实践落地框架
- 互联网,移动开发带来的设计挑战
二,微服务化的内在动力和外部助力
- 高并发量,分布式运算,无尽的需求和快速功能实现
- 架构微服务化
- 微服务概述
- 和单块应用的区别
- 海量用户互联网
- 应用设计的12要素
- 容器技术和服务编排技术不断成熟
- Docker容器运行微服务
- 使用Kubernetes来管理应用容器
- Nginx或者Undertow提供Web层反向代理
- 对于运维管理的更高要求,架构设计和开发方式也变化
- Keycloak安全权限管理
- Api Gateway提供服务注册和消费,版本升级管理,服务限流,安全防护等
- APM应用管理,检测服务调用路径
- ELK集中管理日志
- 服务治理的需求和实现思路
三,Java应用层技术
- 微服务的本质,不是体积微小,接口很小,而是领域对象聚合根的服务视图。
- SpringBoot+SpringCloud技术
- SpringBoot应用设计
- 关键点是配置项定义
- 通过Rest或者Websocket提供服务
- 各种组件通过maven组合构成
- JavaEE规范技术栈的选用
- 配合SpringCloud,保存配置,注册服务,路由管理,断路控制等
- 系统自治,日志输出,安全设置等
- Wildfly-swarm的追赶,microprofile定义的规范集
- Wildfly-Swarm基于JBoss MSC,设计思路
- 架构分析
- 应用示例
- Vertx异步响应服务框架
- Vertx异步框架
- 基于Netty,内部Json格式
- 和Nodejs类似的循环执行线程,但有独立执行线程的扩展
- Socket和HTTP服务
- Vertx-Web处理Web应用请求
- 异步调用方式处理,RxJava数据处理
- 支持集群,多节点数据共享
- 模块化对微服务的设计的影响
- 现有的OSGi模块化
- 未来采用Jigsaw模块化
四,技术架构的思考
- 对事务需求的初步分析,尽可能的降低对一致性的需求
- 应用特性和面对的客户群
- 分布式运维能力
课程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规范集合
- 形成背景,符合微服务设计
- 主要的支持社区和开源实现
二,JaxRS规范
- REST接口,基于HTTP的语义级别无状态协议,面向资源定义,考虑幂等性
- 资源地址和Annotation注解
- 传递格式,格式文本json/xml,通用解析工具,DOM/SAX/Stax解析方式对比
- 响应处理,返回值和异常
- 过滤器和实现
- REST客户端API
- 异步接口说明
- 异步通信和推送
三,CDI
- IOC注入解析和DI规范
- CDI是DI针对企业应用开发的扩展,揭示对象间关系本质的规范
- Scope/LifeCycle
- Stereotypes
- Decorator
- Event
- Portable extensions
- CDI和EJB,CDI和SpringFramework的区别和相关分析
四,相关规范
- JsonP处理Json格式数据
- XML格式处理
- JPA对象持久化到关系数据库中
五,Wildfly-swarm实现微服务
- wildlfy-core为基础组件
- 子系统扩展机制
- Fraction组成机制
- 配置文件读取方式
- JaxRS和CDI规范实现Resteasy和Weld
- 代码实践