一.微服务简介

1.演变过程:单体架构、SOA、微服务

2.单体架构:一个应用包含了应用之间所有的功能程序,通过打成war包的方式发布部署。

缺点:复杂性逐渐偏高、技术债务逐渐变慢、阻碍技术的创新扩展、无法按需求伸缩

3.SOA:面向服务的架构,是一个组件的架构模型,它将应用程序之间不同的功能单点通过服务之间的良好接口进行关联,接口采用中立的方式进行定义,以一种统一的方式进行交互。

特征:外部访问、随时可用、服务接口分级、松散耦合、可复用的服务、服务接口设计管理、标准化服务接口、支持消息模式

4.微服务:以开发一组小型应用的方式进行,开发一个完全独立的应用系统,独立运行自己的进程,并采用http资源API轻量的机制进行相互通信,并围绕业务功能进行设计。

特征:独立运行进程、独立的构建系统、轻量级通信、Rest API的方式应用调用

优点:易于开发、启动快、局部修改容易、技术不受限制、按需求伸缩、DevOps

带来的问题:运维、维护要求高、分布式复杂性、接口调整成本高、

设计原则:单一原则(只关注自己)、服务自理(独立)、明确接口、轻量通信

二.服务发现与注册

1.创建调用关系的微服务

服务提供者:负责提供Rest API的微服务

服务消费者:负责调用微服务的微服务

2、使用实现微服务注册与发现

三.微服务容错

实现容错机制:

1.超时机制:通过网络请求其他服务时,都必须设置超时。正常情况下,一个远程调用一般在一定的毫秒内得到请求的响应,如果超时了这个时间、依赖的服务不可用、网络有问题、响应的时间则会变得很长。通常情况下,一次请求对应着一个线程、进程。如果响应太慢就得不到这个线程的释放、又对应着系资源的释放。如果得不到、则会越积累越多,服务资源就会被耗尽,从而导致服务不可用。所以必须给每个请求都设置【超时机制】,让资源尽快的得到【释放】。

2.断路器:依赖的服务有大量的超时请求的时候,得不到资源的释放、积累越多、导致系统服务不可用,再去请求已经没有意义了。只能是无谓的消耗现有资源从而导致【其他的服务不可用】,例:设置超时机制2秒,如果在某个时间内100个请求在2秒钟得不到请求的响应,意味着这个服务发生异常。此时其他依赖的的请求再去请求已经没有意义了。

使用断路器实现快速失败,让资源得到快速的响应。例它在某个时间2秒内侦查到200个请求的失败、超时,就会强迫立即快速失败,不再请求所依赖的服务,从而防止应用程序不断的尝试执行可能会失败的操作,这样应用程序就会执行不用等待错误回调、或者去浪费cpu的时间去等待很长很长时间的超时。断路器也能实现程序的错误是否已经得到修复,如果已经修复、应用程序就会再次调用操作。

springCloud微服务使用的更多相关文章

  1. 【微服务】之二:从零开始,轻松搞定SpringCloud微服务系列--注册中心(一)

    微服务体系,有效解决项目庞大.互相依赖的问题.目前SpringCloud体系有强大的一整套针对微服务的解决方案.本文中,重点对微服务体系中的服务发现注册中心进行详细说明.本篇中的注册中心,采用Netf ...

  2. 【微服务】之三:从零开始,轻松搞定SpringCloud微服务-配置中心

    在整个微服务体系中,除了注册中心具有非常重要的意义之外,还有一个注册中心.注册中心作为管理在整个项目群的配置文件及动态参数的重要载体服务.Spring Cloud体系的子项目中,Spring Clou ...

  3. 从零开始,轻松搞定SpringCloud微服务系列

    本系列博文目录 [微服务]之一:从零开始,轻松搞定SpringCloud微服务系列–开山篇(spring boot 小demo) [微服务]之二:从零开始,轻松搞定SpringCloud微服务系列–注 ...

  4. 【微服务】之四:轻松搞定SpringCloud微服务-负载均衡Ribbon

    对于任何一个高可用高负载的系统来说,负载均衡是一个必不可少的名称.在大型分布式计算体系中,某个服务在单例的情况下,很难应对各种突发情况.因此,负载均衡是为了让系统在性能出现瓶颈或者其中一些出现状态下可 ...

  5. 【微服务】之五:轻松搞定SpringCloud微服务-调用远程组件Feign

    上一篇文章讲到了负载均衡在Spring Cloud体系中的体现,其实Spring Cloud是提供了多种客户端调用的组件,各个微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使 ...

  6. 【微服务】之六:轻松搞定SpringCloud微服务-API网关zuul

    通过前面几篇文章的介绍,我们可以轻松搭建起来微服务体系中比较重要的几个基础构建服务.那么,在本篇博文中,我们重点讲解一下,如何将所有微服务的API同意对外暴露,这个就设计API网关的概念. 本系列教程 ...

  7. java~springcloud微服务目录索引

    回到占占推荐博客索引 最近写了不过关于java,spring,微服务的相关文章,今天把它整理一下,方便大家学习与参考. java~springcloud微服务~目录索引 springcloud~服务注 ...

  8. SpringCloud微服务负载均衡与网关

    1.使用ribbon实现负载均衡ribbon是一个负载均衡客户端 类似nginx反向代理,可以很好的控制htt和tcp的一些行为.Feign默认集成了ribbon. 启动两个会员服务工程,端口号分别为 ...

  9. SpringCloud微服务之跨服务调用后端接口

    SpringCloud微服务系列博客: SpringCloud微服务之快速搭建EurekaServer:https://blog.csdn.net/egg1996911/article/details ...

  10. springcloud微服务实战:Eureka+Zuul+Feign/Ribbon+Hystrix Turbine+SpringConfig+sleuth+zipkin

    相信现在已经有很多小伙伴已经或者准备使用springcloud微服务了,接下来为大家搭建一个微服务框架,后期可以自己进行扩展.会提供一个小案例: 服务提供者和服务消费者 ,消费者会调用提供者的服务,新 ...

随机推荐

  1. MUI 页面刷新及页面传值问题

    一.页面刷新问题 1.父页面A跳转到子页面B,B页面修改数据后再跳回A页面,刷新A页面数据 (1).父页面A代码 window.addEventListener("pageflowrefre ...

  2. leetcode 之Copy List with Random Pointer(23)

    深拷贝一个链表,不同的是这个链表有个额外的随机指针.参考:http://blog.csdn.net/ljiabin/article/details/39054999 做法非常的巧妙,分成三步,一是新建 ...

  3. HDU-2389

    Rain on your Parade Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 655350/165535 K (Java/Ot ...

  4. Fel表达式使用过程中需要注意的问题

    精度问题: 我们知道java中直接使用float和double参与的计算都可能会产生精度问题,比如0.1+0.3.1.0-0.9 等.所以一般财务系统,都会使用BigDecimal进行加减乘除. 在调 ...

  5. 《java并发编程实战》读书笔记11--构建自定义的同步工具,条件队列,Condition,AQS

    第14章 构建自定义的同步工具 本章将介绍实现状态依赖性的各种选择,以及在使用平台提供的状态依赖机制时需要遵守的各项规则. 14.1 状态依赖性的管理 对于并发对象上依赖状态的方法,虽然有时候在前提条 ...

  6. hdu 3367(与最大生成树无关。无关。无关。重要的事情说三遍+kruskal变形)

    Pseudoforest Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tot ...

  7. react与mox-react的shouldComponentUpdate 理解

    react性能优化中,提到的就是通过 React.PureComponent 替换 React.Component 组件进行编程. 两个组件之间的不同主要就是PureComponent做了should ...

  8. Linux让程序后台运行命令之screen与nohup

    一.nohup nohup时间长了会断掉  所以建议使用screen nohup 命令 & 如果运行成功刚默认会将标准输出重定向到当前目录的nohup.out文件中,查看此文件,可以了解运行的 ...

  9. CentOS 7 Docker

    安装docker yum install docker 查看docker docker version 这是因为docker还没有运行,需要启动docker 启动docker systemctl st ...

  10. UnicodeEncodeError: 'gbk' codec can't encode character ...

    使用Python写文件的时候,或者将网络数据流写入到本地文件的时候,大部分情况下会遇到:UnicodeEncodeError: 'gbk' codec can't encode character ' ...