| May 31, 2016
微服务技术体系材料发布
近一年的技术考察和积累,我们总结出一套比较完善的微服务技术和开源产品框架。经过一个月的材料收集和撰写,永源中间件的微服务技术体系演讲材料发布了。包含一下五个大部分:
- 微服务技术
- SpringBoot开发框架
- Vertx异步框架
- 容器技术和配套服务
- 和原有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
- 数据源和缓存,分布式结构
- “微"服务同样需要有完整的技术层次,稍复杂的应用打包后也是庞大的
- 界面技术的选用,浏览器渲染能力,移动设备的考虑
- 针对不同的应用和系统规模的大小,选用合适的架构
- 同样是部署应用到容器,微服务是应用服务器整体的分布化。应用从进程内的调用,扩展到跨进程远程调用。