代码人生

实施微服务的挑战

代码人生 http://www.she9.com 2018-09-19 10:53 出处:网络 编辑:@技术狂热粉
我们生活在一个微服务的世界。“从单体到微型服务”是我们今天从70%的技术领导者那里听到的一句话。好处已经得到了充分的证明:增强的弹性、改进的可伸缩性、更快的上市时间。与大多数转型趋势一样,实现微服务也带来

我们生活在一个微服务的世界。“从单体到微型服务”是我们今天从70%的技术领导者那里听到的一句话。好处已经得到了充分的证明:增强的弹性、改进的可伸缩性、更快的上市时间。与大多数转型趋势一样,实现微服务也带来了自身的挑战。必须充分理解这些挑战,或者准备好让你的项目永远看不到曙光,或者完成它,只看到许多预期的好处没有实现。


以下是一些组织在他们的微服务之旅中面临的最大挑战:

实施微服务的挑战

管理Microservices


随着微服务数量的增加,管理它们变得更加具有挑战性。在构建微服务之前或在构建微服务时进行管理是很重要的。虽然模块化很有帮助,但如果管理不善,事情很快就会失控。许多工程负责人已经指出,这些服务的管理不善和从单一应用程序转换的初始阶段所面临的问题一样多。


自行开发微服务管理工具虽然是一种有效的选择,但它可能非常复杂和繁琐。我们建议寻找一个功能包括微服务管理的平台。


监控


传统的监视和诊断形式不能很好地与微服务保持一致,因为您有多个服务组成了以前由单个应用程序支持的相同功能。当应用程序中出现问题时,如果您没有监视和跟踪特定请求所经过的路径的方法(比如对来自用户界面的特定请求遍历了多少和哪些微服务),那么查找根本原因就很困难。


我们看到客户很难分析这些服务之间的通信链以及潜在的问题。这个视频是关于这个话题的一个很好的视频。


拥抱DevOps文化


独立的团队需要敏捷性、自主性和持续交付,以便能够交付初始版本和随后的迭代变更。DevOps文化的缺乏会限制发布,影响到整个市场的时间以及对业务请求和问题的响应。

容错


重要的是,个别服务不能拖垮整个系统。在服务级别,更重要的是在整体解决方案级别,容错是非常关键的。考虑到微服务环境的复杂性和复杂的依赖链,失败是不可避免的。微服务需要能够承受内部和外部故障。健壮的弹性测试是成功做好问题准备的关键。


测试


由于不同的服务、它们的集成和相互依赖,测试在微服务环境中要复杂得多。负责质量保证的团队成员需要了解服务之间通信的顺序和渠道,以便在测试用例中全面覆盖。微服务的异步方面也使得在较低的环境中测试变得更加困难。微服务的模糊行为更难预测和验证。


关于微服务测试挑战的更多细节可以在这里和这篇颇有见地的帖子中找到。


设计时要考虑到失败


虽然这对许多人来说是违反直觉的,但是预期失败场景和构建一组健壮的微服务对于成功实现来说是必不可少的。当在设计过程中预测到更多的故障情况时,将构建更多的异常处理机制,并更好地处理问题的无缝解决。说起来容易做起来难

Cyclic Dependencies

实施微服务的挑战

Source: queue.acm.org.

跨不同服务及其功能的依赖关系管理非常重要,如果不能及时地识别和解决循环依赖关系,就会令人头痛。在微服务体系结构中,您甚至更容易受到依赖问题导致的错误的影响。关于具有这些依赖关系的相关服务的升级的决策是至关重要的。本文详细讨论了跟踪和控制依赖关系。


请关注公众号:程序你好
0

精彩评论

暂无评论...
验证码 换一张
取 消