微服务,是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中全局变量的修改

    对于全局变量的修改,如果全局变量是int或者str,那么如果想要在函数中对函数变量进行修改,则需要先在函数内,声明其为global,再进行修改 如果是list或者dict则可以直接修改 a = 1 b ...

  2. 洛谷P1451 求细胞数量

    求细胞数量 题目链接 这道题大概是一个最简单的联通块的题了qwq 注意枚举起点的时候 一定不要从0开始不然你就会从0进入到了其他联通块中从而多查. 一定看清题意这道题不是同色为联通块!!! AC代码如 ...

  3. oracle(sql)基础篇系列(二)——多表连接查询、子查询、视图

    多表连接查询 内连接(inner join) 目的:将多张表中能通过链接谓词或者链接运算符连接起来的数据查询出来. 等值连接(join...on(...=...)) --选出雇员的名字和雇员所在的部门 ...

  4. 《Cracking the Coding Interview》——第4章:树和图——题目3

    2014-03-19 03:34 题目:给定一个排好序的数组,设计算法将其转换为一棵二叉搜索树,要求树的高度最小. 解法:递归生成平衡二叉树,使左右子树的节点数尽量相等,所以对半开最好了.其实也可以生 ...

  5. Python 3基础教程4-变量

    本文介绍变量,什么是变量呢,可以这样理解:变量是一个容器,这个容器可以用来存储值,而且可以被其他对象引用. 看看下面的demo.py # 这里介绍 变量 # 变量可以是数字var1 = 5print( ...

  6. APP测试工程师面试题:之一

    第六题主要流程:编写计划 → 测试用例 → 评审用例 → 执行用例 → 写BUG →测修复情况 → 上线

  7. [译]11-spring bean定义的继承

    spring中bean的定义包含很多信息,如,构造器参数.property指定的依赖项.初始化方法.工厂类和工厂方法等. 如果spring容器的中每个bean都重复声明这些属性,是非常烦人也是十分低效 ...

  8. Spider_Man_6 の Scrapy_Downloader Middleware(针对一下🐷🐷🐷)

    下载器中间件(Downloader Middleware) 下载器中间件是介于Scrapy的request/response处理的钩子框架.是用于全局修改Scrapy request和response ...

  9. [OpenCV]Mat类详解

    http://blog.csdn.net/yang_xian521/article/details/7107786 Preface Mat:Matrix Mat类可以被看做是opencv中C++版本的 ...

  10. UVa 1445 - Cubist Artwork

    统计正面看高度为i的竖条个数为cnt1[i], 统计侧面看高度为i的竖条个数为cnt2[i]: ans = sum( i * max( cnt1[i], cnt2[i] ) ); ( 1 <= ...