微服务架构 技能图谱

优质
小牛编辑
142浏览
2023-12-01

理论基础

概念

多微合适

  • 非代码函数
  • 非重写时间
  • 适合团队最重要
    • 独立业务属性
    • 全功能团队

进程隔离

  • 服务运行在独立的进程中

轻量级通信

  • 协议跨平台
  • 格式语言无关

独立性

  • 独立开发
  • 独立测试
  • 独立部署

本质

  • 服务作为组件
  • 围绕业务组织团队
  • 产品驱动而非项目驱动
  • 技术多样性
  • 业务数据独立
  • 基础设施自动化
  • 演进式架构

优点

  • 按需伸缩
  • 独立部署
  • 业务独立
  • 技术多样性

缺点

1. 运维成本高

  • 环境配置(Provisioning)
  • 部署
  • 监控

2. 测试成本高

  • 自动化测试
  • 契约测试

3. 依赖管理成本高

  • 版本管理
  • 服务依赖
  • 服务治理

与SOA的差异点

  • 实现方式
  • 服务粒度
  • 集成方式
  • 部署方式

常用模式

部署模式

  • 单机多实例
  • 单机单实例
  • 容器多实例
  • 容器单实例

服务发现

  • 客户端发现
  • 服务器端发现

常用库/工具

  • Consul
  • Eureka
  • SmartStack
  • Etcd

API网关

  • 请求转发
  • 响应合成
  • 协议转换
  • 安全认证

服务注册

  • 自注册
  • 第三方注册

    常用库/工具

    • Consul
    • Eureka

服务配置

组织结构

  • 全功能团队
  • 去中心化
  • 康威定律

数据相关

  • 数据库
    • RDBMS
    • NOSQL
  • 数据伸缩
    • 缓存
  • 业务数据隔离

安全策略

  • 单点登录
  • 点对点验证
  • 安全网关

通信机制

同步通信

  • RPC/RMI
    • Java RMI
    • Thrift
      • Protocol Buffer
  • REST
    • HAL

异步通信

消息队列

  • ActiveMQ
  • MSMQ
  • RabbitMQ

后台任务

  • Sidekiq
  • Resque

开发实践

开发模板

JAVA栈

  • SpringBoot
  • SpringCloud
  • DropWizard

Ruby栈(其他脚本语言类似)

  • 代码结构
  • 测试结构
配置文件模板
  - WEB服务器配置
- 日志格式
- 监控文件配置
- 告警文件配置
部署脚本模板
  • Shell
  • Chef
  • Puppet
  • Ansible
持续集成模板
  • Jenkins
  • Bamboo

服务说明文件

  • 服务描述
  • 责任人
  • 请求/响应描述
  • 开发环境搭建
  • 运行环境
  • 测试策略
  • 部署方式
  • 监控告警

服务结构

  • 模型表示层
  • 业务模型
  • 业务逻辑
  • 模型存储
  • 集成网关

测试实践

单元测试

  • 基于Mock/Stub
  • 基于真实依赖

集成测试

  • 服务间集成
  • 数据库集成
  • 与第三方接口集成

组件测试

  • 进程内
  • 进程外

契约测试

  • PACT
  • PACTO

E2E测试

  • Selenium
  • WebDriver

性能测试

  • Gatling
  • JProfiler
  • JMeter
  • Simperf

部署实践

部署环境

  • 数据中心/VM
  • 公有云(IAAS/PASS)
  • 私有云(IAAS/PASS)
  • 容器化

应用部署

  • 包部署(Tar、RPM、War)
  • 映像部署(AMI/...)
  • 容器部署(Docker)

基础设施部署工具

  • Chef
  • Puppet
  • Ansible
  • CloudFormation

部署策略

  • 蓝绿部署
  • Immutable Deployment

自动化策略

  • 依赖持续部署流水线
  • 基础设施自动化
  • 应用部署自动化

伸缩策略

Scaling Cube
  • X轴水平克隆
  • Y轴功能性按需伸缩
  • Z轴数据分离

运维实践

监控

系统监控
  • CPU
  • 内存
  • 磁盘
应用监控
  • 健康性
  • 响应时间
  • 关联ID(Correlation ID)
  • 业务相关Metrics
工具
SAAS
  • NewRelic
  • OneAPM
Hosted
  • Nagios
  • Zabbix

告警

告警方式
  • 电话
  • 短信
  • 邮件
  • 即时通信工具
告警级别
  • OnCall
  • Backup
  • Owner
  • Leader
工具
- Splunk
- Nagois
- PagerDuty

日志聚合

  • 聚合每个服务实例的日志
  • 关联相关日志
工具
- Splunk
- ELK(ElasticSearch/LogStash/Kabana)
- Fluent
- Flume