学习笔记:微服务

传统的应用结构通常是单体应用。有统一的数据库、UI层、控制层和逻辑层,虽然有分模块,但是在代码层面都是聚集在一起的。如果是一个简单应用,这不是什么问题,但是随着业务越来越复杂,应用也变得越来越复杂、逐渐变成一头大“怪兽”,维护和后续开发变得越来越困难,牵一发则动全身。交付周期越来越长,交付风险越来越高,应用本身也变得越来越难理解,新人对它的学习周期也会非常长。

在这个背景下, 微服务架构应用而生。如同我在前一篇学习笔记中记录的:微服务不是被发明出来的,而是从现实世界中总结出来的一种趋势。

微服务架构就是把整个应用按照业务拆分成独立的应用。它具备如下特征:

每个应用可独立开发、部署和扩容,甚至有独立的数据库;

每个应用的职责单一、松耦合,和其他应用通过远程接口调用,没有代码依赖;

每个应用的开发、查错和变更速度快(基于以上原因),它能更快地响应业务需求,提高敏捷性;

由于采取去中心化架构,每个应用可以采取完全不同的技术栈以及不同的开发语言,在技术选型上自由度大。

这个世界上是没有“银弹”的。微服务架构降低了每个微服务应用的复杂性,却增加了整个架构的复杂性。其实只要业务是复杂的,系统的整体复杂度就不会降低,只是体现在不同的层面上而已。微服务架构大大增加了集成测试、部署、监控等方面的复杂性。所幸诸如契约测试、容器和Spring Cloud框架等技术的出现大大降低了解决这些问题的难度。

所谓的契约测试是基于消费者驱动契约测试的理念的、API之间的集成测试,涉及彼此独立的不同系统和依赖,相当复杂和昂贵,会大大拖慢交付进度。API存在提供者和消费者两个角色。提供API的一方称为提供者,调用API的一方称为消费者。在开发时,双方根据消费者的验收条件拟定一份契约,契约放在一个双方都可以访问的公共区域,双方通过运行这份契约来测试彼此是否满足要求。这个手段可以使双方的开发过程解耦,解除测试的依赖关系,而且实现像单元测试那样得快速和稳定。目前有Pact和Spring Cloud Contrac两个框架支持契约测试。在微服务架构下,应用之间都是通过Restful API互相调用,契约测试解决了微服务集成测试难的问题。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言 本文是对微服务架构知识点的梳理,主要是对《分布式服务架构》一书第一章的阅读笔记整理,旨在从整体上把握微服务架...
    LY丶Smile阅读 1,580评论 0 1
  • 引子 随着领域驱动设计、持续交付、按需虚拟化、基础设施自动化、小型自治团队、大型集群系统这些实践的流行,微服务也应...
    万学凡阅读 3,725评论 0 2
  • 微服务最近非常流行,各大互联网公司纷纷采用微服务架构体系,微服务架构模式正在为敏捷部署以及复杂企业应用实施提供巨大...
    Sting阅读 12,961评论 0 57
  • 摘要:本文中,我们将进一步理解微服务架构的核心要点和实现原理,为读者的实践提供微服务的设计模式,以期让微服务在读者...
    Java架构师Carl阅读 11,297评论 0 20
  • 鸟徘徊,月徘徊/ 我在岸边徘徊/ 你在我心中徘徊/ 山朦胧,水朦胧/ 我在路上朦胧/ 路在我眼前朦胧/ ~~ ...
    寒北溟阅读 1,414评论 0 4

友情链接更多精彩内容