消息队列和应用工具产品体系-微服务架构引发的问题

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
可观测监控 Prometheus 版,每月50GB免费额度
简介: 消息队列和应用工具产品体系-微服务架构引发的问题

开发者学习笔记【阿里云云原生助理工程师认证(ACA)课程:消息队列和应用工具产品体系-微服务架构引发的问题】

课程地址:https://edu.aliyun.com/course/3112075/lesson/19036


消息队列和应用工具产品体系-微服务架构引发的问题

 

内容介绍:
微服架构对系统的可用性带来的影响

一.快速迭代导致功能性测试周期大大缩短

二.较小的业务单元需要更强大的调用链路跟踪

 

一.快速迭代导致功能性测试周期大大缩短

服务架构倡导小团队、小服务,快速迭代开发的模式,在这种模式中,一个迭代周期平均时间只有几周甚至几天,这种情况下留给 QA 人员的测试时间也变得很,测试人员很难瀑布式开发流程中那样,执行单独完成完善的整体测试流程。
而如何在短时间内完成测试并保证质量,就对 QA 人员和整个开发模式提出了新的挑战。因此业界也对软件测试提出了很多新的思路,其中比较有代表性的是 Kent Beck 著作测试驱动开发,简称 TDD,就是下面图中的这本书。

image.png


TDD 最主要的思想就是在软件设计之初就开始进行测试用例的编写,开发人员提交的代码进行快速的验证,从而达到测试来驱动整个研发过程的。
图中的八个状态表示了 TDD 倡导测试在软件迭代中期中的八个阶段。首先在本次迭代的功能确定开始就开始编写测试例,然后通过测试用例来验证开发者每次提交的代码。开始时开发者提交的代码无法通过测试通过不停的迭代和修改,测试的通过率越来越高,直到全部通过测试接着开发者在对内部的流程进行重构,提高代码的运行效率,完善架构。
通过流程可以发现 TDD 思想在实践过程中,测试用的集合要不断的执行测试和验证工作,因此这就需要利用更加强大的自动化测试工具才能达到持续验证的目的

 

二.较小的业务单元需要更强大的调用链路跟踪

互联网业务的高速发展带来了业务逻辑的日趋复杂,越来越多的网站采用分布式部署架构,同时 Spring cloud double 等微服框架不断成熟,分布式架构已经成为互联网业务的主流软件架构。分布式的微服务架构在开发效率上具备先进,但是给传统的监控、运维、诊断技术带来了巨大挑战。

淘宝网的分布式架构微服实践过程来看,遇到的挑战主要有

1. 定位问题难,客服人员接到用户反馈后,会交给技术人员排查解决,而服务架构中,网站的请求通常要经过多个服务节才能返回结果一旦请求出现错误,通常要在多台机器上反复翻看日志才能步定问题。对简单问题的排查也常常涉及到多个团队的反复沟通,浪费大量的开发精力。
image.png

2. 发现瓶颈难,当用户反馈网站出现卡顿的现象,很难快速发现瓶颈在哪里,是用户终端到服务端的网络问题,还是服务端负载过高导致响应变慢,或是数据库压力过大,即使定位到了导致卡顿的环,也很难快速定位到代码层的根本原因

3. 架构梳理。在业务逻辑变得越来越复杂后,很难从代码梳理出应用依赖数据库、HTTPAPI、缓存等下游服务和资源,及外部调用。业务逻辑的梳理、架构的制度和容量的规划也变得更加困难。以双11促销活动的准备为例,成百上千的服务,每个服务能承受最大的并发是多少?需要为每个应用准备多少台机器,出现问题如何快速的定位?
这些信息通过传统的人工运维和人工观测的方法都很难获得准确数据,因此就需要通过新的应用工具进行诊断和跟踪。

相关文章
|
15天前
|
运维 持续交付 开发工具
深入浅出:GitOps在微服务架构中的应用
【10月更文挑战第26天】本文深入探讨了GitOps在微服务架构中的应用,介绍了其核心理念、自动化部署流程和增强的可观测性。通过实例展示了GitOps如何简化服务部署、配置管理和故障恢复,并推荐了一些实用工具和开发技巧。
|
1月前
|
消息中间件 监控 API
理解微服务架构:构建灵活和可扩展的应用
【10月更文挑战第7天】理解微服务架构:构建灵活和可扩展的应用
|
1月前
|
消息中间件 监控 API
深入理解微服务架构:构建可扩展与灵活的应用
【10月更文挑战第7天】深入理解微服务架构:构建可扩展与灵活的应用
43 0
|
6天前
|
监控 Go API
Go语言在微服务架构中的应用实践
在微服务架构的浪潮中,Go语言以其简洁、高效和并发处理能力脱颖而出,成为构建微服务的理想选择。本文将探讨Go语言在微服务架构中的应用实践,包括Go语言的特性如何适应微服务架构的需求,以及在实际开发中如何利用Go语言的特性来提高服务的性能和可维护性。我们将通过一个具体的案例分析,展示Go语言在微服务开发中的优势,并讨论在实际应用中可能遇到的挑战和解决方案。
|
7天前
|
Go 数据处理 API
Go语言在微服务架构中的应用与优势
本文摘要采用问答形式,以期提供更直接的信息获取方式。 Q1: 为什么选择Go语言进行微服务开发? A1: Go语言的并发模型、简洁的语法和高效的编译速度使其成为微服务架构的理想选择。 Q2: Go语言在微服务架构中有哪些优势? A2: 主要优势包括高性能、高并发处理能力、简洁的代码和强大的标准库。 Q3: 文章将如何展示Go语言在微服务中的应用? A3: 通过对比其他语言和展示Go语言在实际项目中的应用案例,来说明其在微服务架构中的优势。
|
5天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
5天前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
13天前
|
JavaScript 持续交付 Docker
解锁新技能:Docker容器化部署在微服务架构中的应用
【10月更文挑战第29天】在数字化转型中,微服务架构因灵活性和可扩展性成为企业首选。Docker容器化技术为微服务的部署和管理带来革命性变化。本文探讨Docker在微服务架构中的应用,包括隔离性、可移植性、扩展性、版本控制等方面,并提供代码示例。
52 1
|
26天前
|
Cloud Native Go API
Go语言在微服务架构中的创新应用与实践
本文深入探讨了Go语言在构建高效、可扩展的微服务架构中的应用。Go语言以其轻量级协程(goroutine)和强大的并发处理能力,成为微服务开发的首选语言之一。通过实际案例分析,本文展示了如何利用Go语言的特性优化微服务的设计与实现,提高系统的响应速度和稳定性。文章还讨论了Go语言在微服务生态中的角色,以及面临的挑战和未来发展趋势。
|
27天前
|
运维 Go 开发者
Go语言在微服务架构中的应用与优势
本文深入探讨了Go语言在构建微服务架构中的独特优势和实际应用。通过分析Go语言的核心特性,如简洁的语法、高效的并发处理能力以及强大的标准库支持,我们揭示了为何Go成为开发高性能微服务的首选语言。文章还详细介绍了Go语言在微服务架构中的几个关键应用场景,包括服务间通信、容器化部署和自动化运维等,旨在为读者提供实用的技术指导和启发。