2016-05-31

微服务技术体系材料发布

近一年的技术考察和积累,我们总结出一套比较完善的微服务技术和开源产品框架。

经过一个月的材料收集和撰写,永源中间件的微服务技术体系演讲材料发布了。

包含一下五个大部分:

  1. 微服务技术

  2. SpringBoot开发框架

  3. Vertx异步框架

  4. 容器技术和配套服务

  5. 和原有JavaEE技术的对比和结合使用

从当前活跃开发的开源项目中,选取可靠稳定的产品进行组合,构建出一套完善的,开箱即用的微服务技术框架。

涉及到的项目有:

  • 容器相关技术:docker, kubernetes

  • JavaEE开发框架: SpringBoot, Wildfly-swarm

  • 异步开发工具:Vertx

  • SpringCloud以及配套项目

  • Nginx

  • 微服务管理:API Gateway, 分布式跟踪和性能监控, SSO Server, 统一日志管理

  • JavaEE应用服务器的应用思考

微服务知识体系大纲

微服务概述

  • 和单块应用的区别

  • 海量用户互联网

  • 应用设计的12要素

SpringBoot应用设计

  • 配置项定义

  • 通过Rest或者Websocket提供服务

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

  • JavaEE技术栈的选用

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

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

  • Wildfly-Swarm类似的设计思路

Vertx异步框架

  • 基于Netty,内部Json格式

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

  • Socket和HTTP服务

  • Vertx-Web处理Web应用请求

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

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

容器技术和服务管理工具

  • Docker容器运行微服务

  • 使用Kubernetes来管理应用容器

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

  • Keycloak安全权限管理

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

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

  • ELK集中管理日志

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

JavaEE应用服务器回顾

  • Corba时代的微服务

  • 企业应用对事务的需求

  • EJB的灵活设计,

  • 远程EJB能力,其他RPC选择,如Dubbo,gRPC

  • Servlet和EJB支持非阻塞调用

  • 消息机制运用到设计中

  • Spring框架和CDI规范

  • JPA和SpringData

  • 数据源和缓存,分布式结构

  • "微"服务同样需要有完整的技术层次,稍复杂的应用打包后也是庞大的

  • 界面技术的选用,浏览器渲染能力,移动设备的考虑

  • 针对不同的应用和系统规模的大小,选用合适的架构

  • 同样是部署应用到容器,微服务是应用服务器整体的分布化。应用从进程内的调用,扩展到跨进程远程调用。

演示文件地址