美文网首页
微服务设计-读书笔记

微服务设计-读书笔记

作者: 黏着Leon的小尾巴 | 来源:发表于2017-09-03 16:35 被阅读24次

微服务

  • 内聚、专注、独立、足够小
  • 自治性、互相隔离
  • 服务间通过网络通信
  • 弹性、可扩展(集群、分布式)
  • 部署简化、定位精准
  • 互相组合、单个优化简单

建模

  • 松耦合
  • 高内聚
  • 限界上下文(由显式边界限定特定责任)
    • 细胞之所以存在,是因为细胞壁定义了什么在细胞内,什么在细胞外,并确定什么物质可以通过细胞壁。
    • 先从单块系统理解服务边界,再划分微服务(不宜过早划分)。
    • 识别出粗粒度的限界上下文,再划分嵌套的上下文。

集成

  • 微服务间通信方式
  • SOAP
  • XML-RPC
  • Thrift
  • REST
  • Protocol Buffers
  • 避免破坏性修改
  • 保证 API 技术无关性(对任何第三方对接都没有技术限制)
  • 消费方容易接入
  • 隐藏内部实现细节
  • 同步与异步的选择
  • 编排与协同
  • RPC
    • 低延迟通信场景(TCP、UDP)
    • 避免过度抽象以至于网络因素被隐藏
    • 确保可独立升级服务而不用强迫客户端升级
    • 网络质量监控、远程调用链路监控(日志)
  • REST
    • 大流量通讯场景
    • HTTP 协议与错误码
    • 动词
    • Json
  • 响应式扩展(把多个调用的接口组装并执行)
  • DRY(Don`t repeat yourself),代码重用需谨慎
  • 版本管理
    • 不同接口共存
    • 旧接口请求转换,V1 转去 V2

分解单块系统

  • 数据表分离
  • 数据库分离
  • 应用程序分离
  • 事务边界
    • 最终一致性,主流程启用事务,其他操作异步触发(例如捕获下单成功后,仓库处理可以走异步订阅模式)
    • 补偿事务抵消之前操作
    • 分布式事务,由“事务管理器”统一协调所有底层系统运行的事务(常见:两阶提交)
  • 报表
    • 单独的中央报表数据库( 数据汇总、DMP)

持续集成(CI)

  • 每个微服务都有一个源代码库和 CI 的构建
  • 持续交付(CD)
    • 对代码从提交到上线部署的过程中所需要的经历的流程建模
  • 将镜像作为构建物(Docker images)
  • 自动化处理

测试

测试金字塔,越往上,测试覆盖范围更大,对系统测试更有信心(时间消耗更长,错误模块定位难),越往下,模块越小,测试更快,隔离更好。

  • 单元测试(测试函数和方法调用)
  • 服务测试、消费者驱动测试
  • UI 测试
  • 性能测试
  • 安全测试

监控

  • 日志(如:Logstash 、Kibana)
  • 服务指标跟踪(如:Graphite、Coolectd,返回响应时间等)
  • 系统综合监控(如:Nagios)
  • 语义监控(我的理解是:是用真实流量测试)
  • 服务关联标识(服务链路 GUID,方便查询日志,如:Zipkin)

安全

  • 身份验证与授权
    • SSO 单点登录
    • Oauth 授权
    • 细粒度授权
  • Https
  • API 密钥
  • 数据加密
  • 深度防御
    • 防火墙
    • 敏感操作日记
    • 入侵检测(IDS)
    • 入侵预防(IPS)
    • 网络隔离(VPN)
    • 内建安全(CI 构建时漏洞扫描)
    • 外部验证(外部信息安全团队实施渗透测试)

相关文章

网友评论

      本文标题:微服务设计-读书笔记

      本文链接:https://www.haomeiwen.com/subject/hqpidxtx.html