微服务,是OO (面向对象,Object Oriented) 专家 Martin Fowler 于2014年在他一篇文章《Microservice》提出的。在 Mattin 的头脑中,兴奋点似乎只有技术。

微服务是用来描述将软件应用程序设计为独立部署的服务的一种特殊方式。

微服务架构是一个分布式系统,一定是按照业务领域划分为独立的服务单元,有自动化运维、容错、快速演进的特点,它能解决传统单体架构中的痛点,同时也能满足复杂的业务需求。

在业务初期,一个产品的前景还不是很明显的情况下,单体架构有这很明显的优势,它的开发成本、运维成本、服务器成本都很低。

单体架构的三个缺点:

1)业务复杂时,代码量会增大,代码的阅读性、可维护性会降低,新人接手代码难度增加。

2)用户增多时,并发越来越大,单体架构不足以承担。

3)测试的难度越来越大,因为你不能保证,改一个业务代码会不会对其他业务代码进行影响。

微服务的微字如何理解:

1)根据代码量大小

2)根据开发时间长短

3)根据业务大小

微服务的6大优点

1)减少新人学习任务的时间成本,因为它把复杂任务拆分为单个任务。

2)增加开发速度,因为服务之间采用HTTP传输,开发人员可以在每个服务上采用自己熟悉的方式开发。

3)具有很强的横向扩展能力,因为每个服务都是独立的,边界明确,所以每个服务都可分解为更小的服务

4)重写服务成本低,和单体结构相比,重新某个微服务不会影响其他服务

5)部署相互不影响,和单体结构想不,部署某个微服务不会影响其他服务

6)在CAP(Consistency(一致性)、Availability(可用性)、Partition-tolerance(分区容错性) )理论中是AP架构,具有高可用、分区容错的特点。

微服务的不足

1)微服务的复杂度,因为是分布式系统,所以比单体架构复杂度高

2)分布式事务,因为微服务是一个AP架构,就需要用分布式事务做数据一致性。业界公认的有 二阶段提交、三阶段提交

3)服务的划分比较难,Martin 提出的规则,服务是可以被替换和更新的、服务与服务之间没有耦合。

4)服务的部署难度大,目前随着用PaaS服务,Docker编排等,难度在降低。

微服务的三大难题

1)服务故障的传播

2)服务的划分

3)服务的分布式事务

熔断器的重大作用

1)服务资源隔离

2)服务降级

3)自我修复

Netflix的Hystrix熔断器开源组件,功能非常强大。

springBoot 微服务的更多相关文章

  1. SpringBoot微服务架构下的MVC模型总结

    SpringBoot微服务架构下的MVC模型产生的原因: 微服务概念改变着软件开发领域,传统的开源框架结构开发,由于其繁琐的配置流程 , 复杂的设置行为,为项目的开发增加了繁重的工作量,微服务致力于解 ...

  2. springboot微服务的简单小结

    springboot微服务的简单小结 近来公司用springboot微服务,所以小结一下. 基础: 什么是SpingBoot微服务? 如何创建SpringBoot微服务? 如何管理和完善SpringB ...

  3. Docker从入门到掉坑(二):基于Docker构建SpringBoot微服务

    本篇为Docker从入门到掉坑第二篇:基于Docker构建SpringBoot微服务,没有看过上一篇的最好读过 Docker 从入门到掉坑 之后,阅读本篇. 在之前的文章里面介绍了如何基于docker ...

  4. 基于Openshift的SpringBoot微服务

    基于Openshift的SpringBoot微服务 OpenShift是红帽的云开发平台即服务(PaaS).自由和开放源码的云计算平台使开发人员能够创建.测试和运行他们的应用程序,并且可以把它们部署到 ...

  5. SpringBoot微服务

    在企业级软件的架构模型上,我们主要讨论下SOA与微服务架构. SOA的全称是Service-Oriented Architecture,可译为“面向服务的架构”,它是一个组件模型,将应用程序的不同功能 ...

  6. ZooKeeper+Dubbo+SpringBoot 微服务Demo搭建

    1. 首先创建springBoot项目,springBoot是一堆组件的集合,在pom文件中对需要的组件进行配置.生成如下目录结构 创建test项目,同步在test创建dubbo-api,dubbo- ...

  7. SpringBoot微服务电商项目开发实战 --- Redis缓存雪崩、缓存穿透、缓存击穿防范

    最近已经推出了好几篇SpringBoot+Dubbo+Redis+Kafka实现电商的文章,今天再次回到分布式微服务项目中来,在开始写今天的系列五文章之前,我先回顾下前面的内容. 系列(一):主要说了 ...

  8. SpringBoot微服务电商项目开发实战 --- 模块版本号统一管理及Redis集成实现

    上一篇文章总结了基于SpringBoot实现分布式微服务下的统一配置.分环境部署配置.以及服务端模块的分离(每一个提供者就是一个独立的微服务).微服务落地.Dubbo整合及提供者.消费者的配置实现.本 ...

  9. 手把手使用Docker搭建SpringBoot微服务镜像

    一.环境准备 1.安装好Docker环境的Linux机器(安装教程) 2.准备好SpringBoot项目打包好的可运行jar包 二.编写Dockerfile 1.首先将SpringBoot打包好的ja ...

随机推荐

  1. HDU 4405 Aeroplane chess(期望dp)

    Aeroplane chess Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  2. 抽象类的作用之一:sdk 传递你需要的参数

    抽象类可以干什么?抽象类可以让别人必须做一件事情,比如实现一个方法. 那它有什么作用呢? 我开始也不知道啊,后来慢慢的知道了,在开发中,我知道了它是干什么的,怎么用的.比如你要写一个sdk给别人用.但 ...

  3. echo shell commands as they are executed

    http://stackoverflow.com/questions/2853803/in-a-shell-script-echo-shell-commands-as-they-are-execute ...

  4. [转]多多“亦”善:把大量内容放到一页PPT的5个技巧

    技巧一:利用灰色“隐蔽”内容 灰色有个好处:自动成为“备胎”,在“现任”被浏览后才会被注意到.所以使用灰色能够让页面内容看起来没那么多. 技巧二:对齐和亲密 这是排版的两个原则. 对齐是指对页面上的元 ...

  5. 获取ubuntu中软件包的有用地址

    http://us.archive.ubuntu.com/ubuntu/pool/main/g/gettext/

  6. 《Cracking the Coding Interview》——第13章:C和C++——题目8

    2014-04-25 20:27 题目:实现一个能够通过引用计数来实现自动回收数据的智能指针,用C++,不是java. 解法:这题真心牛,我的第一反应是发呆,因为对引用计数的了解仅限于这个名词,完全没 ...

  7. 20、AngularJs知识点总结 part-2

    1.作用域 当你在angularJs中创建控制器时,可以将$scope对象作为一个参数进行传递: scope 是一个 JavaScript 对象,带有属性和方法,这些属性和方法可以在视图和控制器中使用 ...

  8. Flask 教程精简版之一(系列片)

    Flask 教程精简版之一(系列片) 现在连教程都有精简版 准备 1.要学会 Flask 之前必须掌握 Python 基本使用. 2.会使用简单的 HTML 效果更加 3.若想练气功必须先自暴自弃 简 ...

  9. Python学习-django-ModelForm组件

    ModelForm a. class Meta: model, # 对应Model的 fields=None, # 字段 exclude=None, # 排除字段 labels=None, # 提示信 ...

  10. python学习总结---面向对象1

    面向对象 - 与面向过程对比 - 面向过程:数学逻辑的映射,学会做个好员工. - 面向对象:生活逻辑的映射,学会做个好领导. - 生活实例 - 类: 人 手机 电脑 - 对象: 习大大.普京 二狗的i ...