微服务,是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. CodeForces 778D Parquet Re-laying 构造

    题意: 有两个\(n \times m\)的矩阵\(A,B\),都是由\(1 \times 2\)的砖块铺成,代表初始状态和结束状态 有一种操作可以把两个砖块拼成的\(2 \times 2\)的矩形旋 ...

  2. Java从数据库读取页面树形菜单

    从数据库加载菜单及子菜单主要使用递归的方法,具体实现可看代码 首先封装一个菜单pojo public class Menu { // 菜单id private String id; // 菜单名称 p ...

  3. 常用数据库连接URL地址大全

    1.Oracle8/8i/9i数据库(thin模式) Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); ...

  4. 剑指Offer - 九度1507 - 不用加减乘除做加法

    剑指Offer - 九度1507 - 不用加减乘除做加法2013-11-29 20:00 题目描述: 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 输入: 输入可能包 ...

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

    2014-03-19 04:16 题目:找出一棵二叉搜索树中的中序遍历后继节点,每个节点都有指针指向其父节点. 解法1:分两种情况:向下走时,先右后左:向上走时,先左后右.如果目标节点有右子树,就向右 ...

  6. BInder浅析

    Binder是什么 Binder是运行在Android内核态用于进程间通信(IPC)的驱动,采用C/S架构,由三项基本组件组成:Binder服务端,Binder驱动,应用程序客户端. 为什么要用Bin ...

  7. http客户端缓存

    这篇文章写得比较,点击查看

  8. Percona-Tookit工具包之pt-heartbeat

      Preface       Replication delay is a common issue in MySQL replications.Especially in those replic ...

  9. super和final关键字

    一.super关键字 super关键字的使用 JAVA类中使用super来引用父类的属性或者方法,用this来引用当前对象,主要用法: 1.子类的构造函数默认第一行会默认调用父类的无参数构造函数 2. ...

  10. 基于eclipse+maven创建web工程

    Eclipse+Maven创建webapp项目<一> 1.开启eclipse,右键new——>other,如下图找到maven project 2.选择maven project,显 ...