zoukankan      html  css  js  c++  java
  • 《微服务设计》6、7章

    上一篇 《微服务设计》4、5章笔记



    第六章 部署

    6.1 持续集成

    提交与现有的不断集成,所有人不断地同步。

    思考

    • 你真的在做CI么?
    • 是否每天签入代码到主线
    • 是否一组测试来验证修改
    • 当构建失败之后,团队是否会优先处理

    6.2 把持续集成映射到微服务中


    - 如果你修改了一个服务,那到底会影响了多少个服务呢? - 如果估量,所有系统都要校验这个服务呢? - 将一个代码库的子目录映射到不同的构建中 - 跨服务怎么办呢? ==》测试用例要跟着服务走

    CD 持续交付(不断验收,与线上要求相匹配)

    ==》保证微服务可以独立部署

    6.4 平台特定的构建物

    • 需要Apache或Nginx
    • 不同技术栈问题(Ansible)

    6.5 使用系统支持的构建物

    centos RPM,Ubuntu deb.(在可控制的机器上)
    缺点:编写脚本过程
    定制化镜像(虚拟机之类的)

    不可变的服务器

    1. 源码配置与服务器不一致?
    2. 走流程验证
    3. 服务器备份

    环境

    1. 主机隔离不一致
    2. 配置不一样
    3. 各种差异
    4. ==》反馈问题不一样

    服务器配置

    1. 要知道部署的环境?
    2. 不能讲数据库密码提交到源码?
    3. 》单独管理配置?

    服务与主机映射

    1. 监控单个服务还是监控主机呢?
    2. 一个服务出问题了,也可能影响到其他服务?


      如何治理?

    对某些容器表示质疑?

    一个主机多个服务

    • 在jvm上做程序生命周期管理比较难。
    • 只包含http服务器

    一个主机一个服务(虚拟化问题)

    • 寻找复杂根源
    • 如果没有PaaS平台,就会大大减少复杂性
    • 平台即是服务(Heroku)

    6.10 自动化

    REA 上线速度提升

    6.11 从物理机到虚拟机

    • 多台主机的成本高
    • 隔离了,总体可用的资源也少了。

    工具

    1. hypervisor
    2. vagrant

    liunx 容器(共享内核)

    • 例如:lxc
    • 好处
      • 加快了放映时间
      • 启动快
    • 特例:
      • 有些进程可能会跳出容器
      • 或与其他容器。

    docker(与centos很好兼容)

    1. 轻量级
    2. 抽象,简单
    3. 比作:单机的PaaS,你还需要一些集群管理的工具(Kubenetes和CoreOS)
    4. 比较PaaS好多了,也做对了不少东西。

    小结:

    • 自动化管理是非常重要的
    • 构建部署(人员配合,规范)

    推荐书籍:《持续交付》

    测试

    如何高效和有效测试分布式系统呢?

    7.1 测试类型

    image
    近年来,理解你自己的系统。放弃大规模的手工测试,尽可能地使用自动化。

    7.2 测试范围

    测试金字塔

    image

    缺点:反馈时间长
    1. 单元测试(通常只是一个函数)==》驱动测试
    2. 服务测试(单独服务测试)
    3. 端对端测试

    mock和打桩

    • 打桩:被测试服务的请求创建一些有着预响应的打桩服务。
    • mock:进一步校验请求本事是否被正确请求。(过度mock会使测试变得脆弱)

    微妙的端到端测试

    • 使用什么版本?
    • 测试哪些服务
    • 测试服务有重叠?
      • 引入一个独立端对端的阶段测试。
      • 端对端有一些缺点

    脆弱的测试

    • 服务的失败,可能来源于另外一个服务。
    • 不确定性
    • 服务拥有者写测试用例

    Pact 消费者驱动的测试工具

    • 沟通
    • 消费者和生产者要有良好的信任和沟通。

    7.9 还应该使用端到端测试吗?

    • CDC工具+监控
    • 不断减少端对端依赖

    再怎么测试无法消除所有的缺陷

    所以要做监控和修复!!

    部署

    • 金丝雀发布,将部分流量引流到新的部署系统。(验证)
    • 平均修复时间+平均故障间隔

    7.11 跨功能测试

    • 性能测试
    • 延迟性,用户量
    • 最初没有足够系统资源(但有不能拖延上线)
    • 性能测试,不可能在每次构建时候执行(一周或一个月吧)
    • 运行了越是久远,发生问题。 (很难)

    推荐书籍

    • 《敏捷软件测试》
    • 《Scrum 敏捷软件开发》
    • 《测试驱动的面相对象软件开发》
  • 相关阅读:
    windows下Yarn安装与使用(两种方法)
    git配置公钥---解决码云出现git@gitee.com: Permission denied (publickey)
    npm使用国内镜像的两种方法
    【LeetCode】33. Search in Rotated Sorted Array (4 solutions)
    【LeetCode】83. Remove Duplicates from Sorted List
    【LeetCode】82. Remove Duplicates from Sorted List II
    【LeetCode】85. Maximal Rectangle
    【LeetCode】84. Largest Rectangle in Histogram
    【LeetCode】87. Scramble String
    【LeetCode】162. Find Peak Element (3 solutions)
  • 原文地址:https://www.cnblogs.com/carvendy/p/7828511.html
Copyright © 2011-2022 走看看