学习笔记:微服务

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

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

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

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

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

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

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

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

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,133评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,682评论 3 390
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,784评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,508评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,603评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,607评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,604评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,359评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,805评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,121评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,280评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,959评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,588评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,206评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,193评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,144评论 2 352

推荐阅读更多精彩内容

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