微服务技术体系

Jeff Zhang | May 31, 2016

微服务技术体系材料发布

近一年的技术考察和积累,我们总结出一套比较完善的微服务技术和开源产品框架。经过一个月的材料收集和撰写,永源中间件的微服务技术体系演讲材料发布了。包含一下五个大部分:

  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
  • 数据源和缓存,分布式结构
  • “微”服务同样需要有完整的技术层次,稍复杂的应用打包后也是庞大的
  • 界面技术的选用,浏览器渲染能力,移动设备的考虑
  • 针对不同的应用和系统规模的大小,选用合适的架构
  • 同样是部署应用到容器,微服务是应用服务器整体的分布化。应用从进程内的调用,扩展到跨进程远程调用。

演示文件地址