微服务,是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. 绿盟python测试实习面试

    1.简历问题 低级错误:时间写错 最近好像越来越马大哈了,总是犯低级错误. 上次的开题报告首页,这次的时间,每次都有小问题,确是大毛病 到底哪里出错了 2 RHCE证书好像没有用 面试官根本就不懂这个 ...

  2. javaWEB简单商城项目

    javaWEB简单商城项目(一) 项目中使用到了上一篇博文的分页框架,还有mybatis,重点是学习mybatis.现在有些小迷茫,不知道该干啥,唉,不想那么多了,学就对了 一.项目功能结构 1.功能 ...

  3. git :.gitigrone文件不生效的解决办法

    真正的原因是.gitignore只能忽略那些尚未被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的.一个简单的解决方法就是先把本地缓存删除(改变成未track状 ...

  4. NGUI-Tweens

    Tweens(补间动画) 补间动画有很多种: 这里以Tween Height为例: 项目层次: btn为一个按钮,group为一组图片精灵,预览图如下: 第一步:先为每个item附加一个Tween H ...

  5. ES6常用片段

    promise: --在return里面: methods:{ getSellData(){ return axios.get('/api/seller').then((res=>{ retur ...

  6. Python全栈工程师(编码)

    ParisGabriel       Python 入门基础   补充: 主流3操作大系统 Windows: Winxp   Win7 Win8 Win10 Unix: Solaris(SUN) IO ...

  7. 孤荷凌寒自学python第十六天python的迭代对象

    孤荷凌寒自学python第十六天python的迭代对象 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 迭代也就是循环. python中的迭代对象有相关的如下几个术语: A容器 contrai ...

  8. CodeSimth - .Net Framework Data Provider 可能没有安装。解决方法[转载 ]

    原文:http://www.cnblogs.com/chenrui7/p/3592082.html 今天想使用CodeSimth生成一个sqlite数据库的模板.当添加添加数据库的时候发现: .Net ...

  9. String类型的方法使用

    String.equals()方法源代码: public boolean equals(Object anObject) { if (this == anObject) { return true; ...

  10. poj1936 假期计划第一水

    All in All Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 29651   Accepted: 12312 Desc ...