微服务架构 技能图谱
理论基础
概念
多微合适
进程隔离
轻量级通信
独立性
本质
- 服务作为组件
- 围绕业务组织团队
- 产品驱动而非项目驱动
- 技术多样性
- 业务数据独立
- 基础设施自动化
- 演进式架构
优点
缺点
1. 运维成本高
2. 测试成本高
3. 依赖管理成本高
与SOA的差异点
常用模式
部署模式
服务发现
常用库/工具
- Consul
- Eureka
- SmartStack
- Etcd
API网关
服务注册
服务配置
组织结构
数据相关
安全策略
通信机制
同步通信
- RPC/RMI
- Java RMI
- Thrift
- Protocol Buffer
- REST
异步通信
消息队列
后台任务
开发实践
开发模板
JAVA栈
- SpringBoot
- SpringCloud
- DropWizard
Ruby栈(其他脚本语言类似)
配置文件模板
- WEB服务器配置
- 日志格式
- 监控文件配置
- 告警文件配置
部署脚本模板
- Shell
- Chef
- Puppet
- Ansible
持续集成模板
服务说明文件
- 服务描述
- 责任人
- 请求/响应描述
- 开发环境搭建
- 运行环境
- 测试策略
- 部署方式
- 监控告警
服务结构
- 模型表示层
- 业务模型
- 业务逻辑
- 模型存储
- 集成网关
测试实践
单元测试
集成测试
组件测试
契约测试
E2E测试
性能测试
- Gatling
- JProfiler
- JMeter
- Simperf
部署实践
部署环境
- 数据中心/VM
- 公有云(IAAS/PASS)
- 私有云(IAAS/PASS)
- 容器化
应用部署
- 包部署(Tar、RPM、War)
- 映像部署(AMI/...)
- 容器部署(Docker)
基础设施部署工具
- Chef
- Puppet
- Ansible
- CloudFormation
部署策略
- 蓝绿部署
- Immutable Deployment
自动化策略
- 依赖持续部署流水线
- 基础设施自动化
- 应用部署自动化
伸缩策略
Scaling Cube
运维实践
监控
系统监控
应用监控
- 健康性
- 响应时间
- 关联ID(Correlation ID)
- 业务相关Metrics
工具
SAAS
Hosted
告警
告警方式
告警级别
- OnCall
- Backup
- Owner
- Leader
工具
- Splunk
- Nagois
- PagerDuty
日志聚合
工具
- Splunk
- ELK(ElasticSearch/LogStash/Kabana)
- Fluent
- Flume