微服务,是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. poj3348 Cows 凸包 叉积求多边形面积

    graham扫描法,参考yyb #include <algorithm> #include <iostream> #include <cstdio> #includ ...

  2. VSX-5 VSXMusic 编码听音乐

    给VS写个扩展来听音乐的说法,缘来已久,这两天做了个初版,使用豆瓣FM,先发出来. 插件现在只做了VS2013的,别的版本有待下一步支持. 现在暂时只有一个Adornment(就是那个有封面的),一个 ...

  3. 做出一个SwitchButton的效果,并详细学习一下onDraw(Canvas canvas)方法的使用

    代码的灵感和原理主要来自于android自定义开关控件-SlideSwitch http://blog.csdn.net/singwhatiwanna/article/details/9254309这 ...

  4. 这个写法会出什么问题: @property (copy) NSMutableArray *array;

    因为copy策略拷贝出来的是一个不可变对象,然而却把它当成可变对象使用,很容易造成程序奔溃 //如:-[__NSArrayI removeObjectAtIndex:]: unrecognized s ...

  5. oracle集群部署相关文章

    1. Oracle数据库HA架构方案介绍:http://blog.sina.com.cn/s/blog_7273b6cc0100p0sr.html 2.Oracle 集群概念和原理

  6. 剑指Offer - 九度1361 - 翻转单词顺序

    剑指Offer - 九度1361 - 翻转单词顺序2013-11-23 02:45 题目描述: JOBDU最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fi ...

  7. yum源是什么

    我们安装软件的时候需要下载软件,将很多软件放在一起就是源.软件安装包的来源. 所以yum源就是软件安装包来源. 如果我们是在线的,他会在网上给你下载安装包,如果是离线的没有网络.那么就只能配置本地的y ...

  8. An internal error occurred during: "Launching on Tomcat 7.x"

    1.首先关闭MyEclipse工作空间.2.然后删除工作空间下的文件.“MyEclipse10\workspace.metadata.plugins\org.eclipse.core.runtime. ...

  9. C#帮助类

    1.集合操作 // <summary> /// 判断一个集合是否包含某个值 /// </summary> /// <typeparam name="T" ...

  10. python学习总结 --函数基础

    函数基础 ### 函数简介 - 定义:具有特定功能的一段代码 - 优点: - 可以减少代码的重复书写 - 可以将功能的实现着和使用者分开,可以提高开发效率 - 分类: - 库函数:print.inpu ...