天天看点

自动化测试平台化[v1.0.0][微服务化演进]

微服务是将功能分割成一个一个可以自治管理的模块,模块通过REST API或RPC对外提供服务,它隔离了功能模块,极大地解耦了模块之间的数据,并且可以通过负载均衡增加单个服务的处理能力,同时也提高了整个系统的扩展能力

Monolith单体架构

早期的软件运行于单体系统中,功能少且单一,所有代码在一个项目中,功能上没有明确的边界,模块间函数互相调用,功能模块之间通过代码级别的引用建立依赖关系,模块功能发生变化就不得不考虑依赖关系的影响,随着功能越来越多,整个系统越来越臃肿,最终发展到难以维护的地步,并且性能无法轻松的扩展,总结起来就是扩展能力差、逻辑耦合严重、系统升级非常麻烦

分布式架构和SOA

微服务

  • 微服务将团队分割成一个一个小的团队,每个团队负责自己的微服务开发,便于管理,执行力高
  • 服务是高可用的,一个服务可以发起多个进程提供同样的服务,通过负载均衡算法决定调用哪个进程的服务
  • 非常高的横向扩展能力,一个服务遇到瓶颈,可以通过启动更多的服务进程来提高并发处理能力
  • 灰度发布,微服务架构下的缺陷修复,不再需要统一的版本控制,如果一个问题可以很简单的修复,并且这个服务在系统中运行了100个进程,那么可以先给10个进程做升级,然后看看实际运行过程中是否有问题也就是测试结果而定是否要升级其他进程,即便有问题也只是影响了10%的流量,可以回退版本继续修复

微服务难题

  • 过于自治的服务导致联调成本巨大,特别是对于接口的定义频繁变动的团队而言,沟通成本也巨大
  • 数据一致性问题,服务被拆成了小块,有些操作就要有事务的概念,因为服务不允许存在状态,当一个事务包含多个微服务的调用的时候就要解决数据的竞争问题,也就是数据一致性问题
  • 运维难度变大,随着服务越来越多,运维难度也逐渐加大,对CICD的成熟程度是个考验

继续阅读