zoukankan      html  css  js  c++  java
  • 微服务+:服务契约治理

    一、为什么要治理服务契约?

    在日常工作中发现契约导致的沟通问题很多。另外由于契约定义不严谨,导致线上Bug的出现也时有发生。比如忽略字段长度,导致数据落库失败。由点到面梳理问题如下表:

    问题开发阶段测试阶段运行阶段后期迭代
    契约不严谨 1.增加了开发人员的理解成本
    2.增加了契约相关方的沟通成本
    3.这种情况下,再缺少沟通的话,各相关方按照自己的理解开发导致后期联调成本增加。
    1.增加了测试人员的理解成本
    2.增加了测试与开发的沟通成本
    服务不健壮 1.增加了产品的理解成本
    2.增加了产品与开发的沟通成本
    服务契约与文档契约不一致 1.增加了联调成本
    2.导致联调时某一方的返工
    1.增加测试与开发的沟通成本
    2.导致测试用例的返工
    服务不健壮 1.增加了产品的理解成本
    2.增加了产品与开发的沟通成本
    契约改动通知不到位 1.增加了联调成本
    2.导致联调时某一方的返工
    1.增加测试与开发的沟通成本
    2.导致测试用例的返工
    线上故障  
    契约信任 1.契约验证开发成本
    2.契约验证维护成本
    契约相关的测试成本    

    另外,还存在职责问题,例如:

    服务提供者的问题,被客户端发现。而客户端对这种非自身问题关注是不够的,导致问题不被重视。

    二、怎么治理服务契约呢?

    服务契约的治理是一个工程性问题,本着规范流程,固化最佳实践的目的,设计如下:

     

    三、治理什么?

    一个健壮契约的元数据:

    • 协议
    • 结构
      • 基元类型
        • 文本、数字、布尔、时间
        • 约束
      • 复杂类型
        • 类、数组

    四、支撑该设计的原则

    1. 契约先行
    2. 问题尽早发现
    3. 谁的问题谁发现

    架构思维修炼

  • 相关阅读:
    链表总结
    源码,反码,补码,位运算
    JAVA打印乘法口诀表
    JAVA打印空三角形
    JAVA打印三角形
    列表,元组,字典,集合类型
    for 循环 ,数字类型,以及字符串类型
    基本运算符补充,流程控制if判断与while循环
    内存管理,数据类型的基本使用与基本运算符(python2中与用户交互)
    编程的分类,以及运行python解释器的原理,最后变量
  • 原文地址:https://www.cnblogs.com/hanzhaoxin/p/9183750.html
Copyright © 2011-2022 走看看