微服务基础

一,什么是微服务

在这里插入图片描述

在这里插入图片描述

什么是服务化?

  • 把传统的单击应用中的本地方法调用,改造成通过RPC,HTTP产生的远程方法调用

  • 把模块从单体应用中拆分出来,独立成一个服务部署

  • 用户模块就可以独立开发,测试,上线和运维,可以交由专门的团队来做,与主模块不耦合

    在这里插入图片描述

    什么是微服务?

  • 一种架构风格

  • 开发单个应用作为一系列小型服务的套件,其中每个服务都运行在自己的进程中,并且通过轻量级的机制实现彼此间的通信,这通常是http资源API

  • 这些服务是围绕着业务功能构建的,并且可以通过完全自动化的部署机制进行独立部署

  • 这些服务的集中式管理做到了最小化(比如docker相关技术),每一种服务都可以通过不同的编程语言进行编写,并且可以使用不同的数据存储技术。

二,微服务的特点

  1. 组件以服务的形式来提供:微服务面向服务,提倡以独立部署的服务来作为一个个组件,而不是提供包括类库,本地方法之间的调用的形式,这样我们需要明确组件间的接口和通信协议

  2. 产品不是项目(传统开发中我们一般把它当做项目,做完了交给维护部门去维护即可。微服务不是这样的,需要对整个生命周期去负责,这样也导致不方便进行外包,因为涉及到的人力会非常多)

  3. 轻量级通信,独立进程(会更加倾向于restful,http,rpc,或愿意采用轻量级的消息队列,比如rabbitmq,而不是更加复杂的协议)

  4. 分散治理,去中心化治理(微服务会把单体框架的组件拆成不同的服务,构建时候是比较分散的,意味着责任下放,不同团队需要对自己的项目负责)

  5. 容错性设计(现在每个服务是独立的,所以对于每一个模块,都要提供日常的故障检测。使用微服务一方面整体的容错性提高了,因为一个模块的故障不会影响全部,但是对个人而言压力更大了,因为一个模块的错误可能会影响其他模块)

  6. 会带来团队组织架构的调整(从横向编程斜向)

    在这里插入图片描述

    结论:

微服务系统需要满足一系列条件和原则,但是并不代表你使用了某个技术或框架就是微服务了。微服务可用模块非常多,我们应该按照项目需要进行选取

三,微服务的优缺点

优点

1)服务简单,便于学习和上手,相对易于维护

2)独立部署,灵活扩展


在这里插入图片描述

3)技术栈丰富,比如语言,开发工具,中间件等技术(非常有利于去引入新技术,可以在某一个小模块先进行使用,等成熟之后再推广到其他模块)

缺点

1)运维成本过高

2)接口可能不匹配

3)代码可能重复

4)架构复杂度提高

不同复杂度情况下,单体应用和微服务的优劣势
横轴复杂度,数轴生产率,绿色是单体应用,蓝色是微服务架构

在这里插入图片描述

四,微服务的两大门派

在这里插入图片描述

在这里插入图片描述

ps:无只是表示dubbo没有,但是它可以使用三方插件来实现
image

在这里插入图片描述

总结和选型建议:

  • dubbo诞生于阿里系,而且这个也广泛应用,但是因为诞生之初是为阿里的业务服务的,所以各个组件不太全面,增加了使用难度。spring cloud是spring家族的,专注企业级微服务领域,而且迭代快,组件全,开发起来非常简单便捷。dubbo再次之前有很长时间的停止维护,但是现在正常更新了

  • 比喻:组装电脑,品牌机

  • 如果想稳定可靠,就选择spring cloud,如果想了解dobbo,或者觉得文档全,就选择dubbo,需要根据自身的研发水平和所处阶段选择

五,微服务的拆分

什么时候进行服务化拆分:

  1. 第一阶段的主要目标是快速开发和验证想法(通常第一阶段都打包在一起进行开发运维,这是最高效也最节省成本的方式)

  2. 进一步增加更多的新特性来吸引更多的目标用户

  3. 同时进行开发的人员超过10人,这个时候就该考虑进行服务化拆分了

不适合拆分的情况:

  1. 小团队,技术基础较为薄弱

  2. 流量不高,压力小,业务变化也不大(比如企业内部的管理系统)

  3. 对延迟很敏感的低延迟高并发系统

微服务拆分的两种方式:

  1. 纵向拆分:按照业务维度去拆分,关联程度紧的就拆分成一个微服务,功能比较独立的拆分成一个微服务。比如社交app,可以对评论,消息,个人主页独立拆分

  2. 横向拆分:按照公共领域去拆分,比如社交app,评论,消息,个人主页都需要用到用户模块,如果纵向拆分里这几个模块都分别实现用户模块,成本就太高了,可以把用户服务作为横向拆分出来,并且把这个功能提供给各个模块,这样用户服务复用性就很高

  3. 结合业务综合分析,一般需要同时采用横向和纵向两种,无论是采用横向还是纵向拆分,不一定是拆分的越细越好,过细会让服务数量膨胀,变得难以管理,要结合实际进行拆分,建议每个开发负责的服务不超过3个。
    六,服务扩展


    在这里插入图片描述
  • x轴-水平复制:把系统作为一个整体,直接重新部署几套,然后前面加几个负载均衡器解决问题(效果部署特别好,资源存在浪费)

  • y轴-功能解耦:微服务拆解,效率比x轴高

  • z轴-数据分区:在系统更大之后,数据库是需要分区独立的,可以按照不同属性值进行数据拆分,独立提供资源,提高系统的可用性和性能

自动按需扩展:

  • 根据cpu负载程度,特定时间(比如周末),消息中间件的队列长度,业务具体规则,预测等来决定是否扩展

  • 自动分配一个新的服务实例,提高可用性

  • 提高了可伸缩性(双11之后,自动减少服务器)

  • 具有最佳使用率,节约成本

六,微服务重要模块

  1. 服务描述:说明是http服务还是其他类型的,接口什么样子,返回什么内容

  2. 注册中心:不注册消费者就不知道去哪里找到

  3. 服务框架:注册好后还需要解决以下问题,比如采用什么协议,传输类型等,服务框架就会对此进行统一

  4. 负载均衡

  5. 熔断与降级:服务多了以后,如果某一个服务发生故障,那还有兜底策略

  6. 网关:当服务多了以后,需要统一网关,然后由网关进行下一步的分发,还有进行统一转换,权限校验,过滤等

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

推荐阅读更多精彩内容

  • 单点****系统架构 传统****项目****架构 传统项目分为三层架构,将业务逻辑层、数据库访问层、控制层放入在...
    冷枫abc阅读 1,171评论 0 0
  • 引言 为了帮助初学者快速理解入门微服务,这里简单介绍一下微服务的基本概念及常用组件说明,希望能给初学者带来帮助,如...
    槿灬阅读 617评论 0 0
  • 垂直系统VS微服务 垂直系统的弊端:1、 随着业务量的增加,复杂性逐渐变高、代码耦合太深,不利于开发和维护2、技术...
    壹点零阅读 440评论 0 1
  • Monolithic单体式架构指的是尽管是模块化逻辑,但是最终还是会打包并部署为一个单一应用。 基准代码 基准代码...
    Mjolnir1107阅读 541评论 1 1
  • 微服务概述 微服务架构主旨 将原本独立的一个系统,拆分成多个小型服务,每个小型服务在各自独立的进程中运行,相互之间...
    JHolland阅读 99评论 0 0