微服务框架总览

写在开头:任何架构都不能解决所有问题,没有完美的架构,只有最合适的架构

先放大招

微服务架构.png

微服务简介

微服务一定要区别于系统,服务是指一个或者一组相对较小且独立的功能单元,是在某一设计维度拆分的最小功能集。

微服务最早由Martin Fowler与James Lewis于2014年共同提出,微服务架构风格是一种使用一套小服务来开发单个应用的方式途径,每个服务运行在自己的进程中,并使用轻量级机制通信,通常是HTTP API,这些服务基于业务能力构建,并能够通过自动化部署机制来独立部署,这些服务使用不同的编程语言实现,以及不同数据存储技术,并保持最低限度的集中式管理。

传统单系统弊端

在传统的IT行业软件大多都是各种独立系统的堆砌,这些系统的问题总结来说就是扩展性差,可靠性不高,维护成本高。

主要有以下几个问题:

1. 复杂性逐渐变高

单一系统随着功能的不断增加,在模块之间没有明确区分的情况下,逻辑会越来越乱,查找问题以及交接也会越来越复杂

2. 阻碍技术更新

单一系统使用的某个技术框架如果需要更新,需要查找所有依赖的逻辑,付出的成本代价想当大,所以单系统项目基本会一直使用最初搭建的项目架构一点一点增加补丁,直到无法维护.

3.无法按需伸缩

所有系统所有模块都是同等地位,没办法按照某些接口 IO/CPU 密集型需求单独增加对应的机器,提升系统的整体性能

4.数据和业务无法有效拆分

在传统系统中,所有数据库都在一起,经常会出现单个业务操作多个数据库等操作,导致系统之间业务和数据难以有效拆分.

5. 无法快速迭代

由于所有业务代码都在一起,不管大小迭代都需要经过完整的系统测试,不能测试系统某一部分来保证系统功能正常.

微服务优缺点

随着互联网应用数据量、并发量、业务复杂度的增长,单一系统已经无法满足业务,逐渐产生了微服务思想.

微服务架构主要解决了以下问题:

1.便于开发,测试以及查找问题

每个模块就是一个服务,代码量明显减少,遇到问题比较容易找到定位和修改.修改单个模块只要保证本模块测试通过就可以保证整个系统正常.

2.便于服务按需弹性伸缩

随着业务发展和并发增加,每个模块都要部署很多服务,每个模块可以按照模块性能按需进行弹性伸缩

3.便于数据和业务的封装

单体架构所有的模块都共用一个数据库,存储方式比较单一,微服务每个模块都可以使用不同的存储方式(比如有的用redis,有的用mysql等),数据库也是单个模块对应自己的数据库。

4.便于使用新技术以及业务技术升级

单体架构所有的模块开发所使用的技术一样,微服务每个模块都可以使用不同的开发技术,开发模式更灵活。

微服务会引入以下问题:

1.分布式事务处理

比如转账业务,传统业务会修改用户余额,新增用户账单以及其他操作,如果有其中一个失败就会全部按失败处理,但是如果采用微服务,用户余额和账单如果不在一个服务中处理,就会产生错误数据.

2.RPC服务超时或失败

服务调用者应有一些应对策略,比如重发
关键服务例如支付,要注意幂等性,因为重发会导致重复操作

3.并发锁

相当于单服务中的锁机制

微服务粒度

从拆分粒度可以分为:

粗粒度:一个服务层

所有的信息存储都在一个service里,那么一个地方出bug,就将影响整个业务

一个子业务(数据库)一个service

这个是目前适合大多数公司业务系统拆分的架构
一个service出问题也不会影响其他service,同时数据层也按照业务垂直拆分开了
服务架构见下图


微服务粒度.png

一个数据表对应一个service

等各个数据表之间也解耦开了,不会相互影响了

一个接口对应一个service

多个服务操纵同一个数据表,使用同一片缓存,每个接口出问题,都不会影响其他接口。

微服务设计原则

单一职责原则

意思是每个微服务只需要实现自己的业务逻辑就可以了,比如订单管理模块,它只需要处理订单的业务逻辑就可以了,其它的不必考虑。

服务自治原则

意思是每个微服务从开发、测试、运维等都是独立的,包括存储的数据库也都是独立的,自己就有一套完整的流程,我们完全可以把它当成一个项目来对待。不必依赖于其它模块。

轻量级通信原则

首先是通信的语言非常的轻量,第二,该通信方式需要是跨语言、跨平台的,之所以要跨平台、跨语言就是为了让每个微服务都有足够的独立性,可以不受技术的钳制。

接口明确原则

由于微服务之间可能存在着调用关系,为了尽量避免以后由于某个微服务的接口变化而导致其它微服务都做调整,在设计之初就要考虑到所有情况,让接口尽量做的更通用,更灵活,从而尽量避免其它模块也做调整。

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