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

微服务设计-读书笔记

作者: 黏着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