一.微服务简介

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. CentOS下配置FTP

    http://www.cnblogs.com/zhenmingliu/archive/2012/04/25/2470646.html 常见错误: 1.FTP服务器已经拒绝 解决方案 # setenfo ...

  2. linux下文件查询命令(cat,more,less,head,tail)

    众所周知Linux中命令cat.more.less均可用来查看文件内容,主要区别有:cat是一次性显示整个文件的内容,还可以将多个文件连接起来显示,它常与重定向符号配合使用,适用于文件内容少的情况:m ...

  3. 14:django 用户认证系统

    django认证系统包含三个部分:用户.权限和分组 安装 django项目默认启用了认证系统,如果不是使用django-admin.py创建项目的可以通过在settings配置文件里面的INSTALL ...

  4. linux命令(6):tar命令

    压缩方法:tar zcvf test.tar.gz test [表示把文件夹目录压缩成test.tar.gz文件保存] 解压方法:tar zxvf test.tar.gz –C /home [表示解压 ...

  5. Set Matrix Zeroes——常数空间内完成

    Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. Did yo ...

  6. PHP7.3发布啦

    作为PHP5的最后一个版本,也是目前使用最广泛的PHP版本,PHP 5.6始于公元2014年(不是1804年,嘿嘿),其第一个测试版PHP 5.6 alpha 1版于2014年1月发布.随机产生了第一 ...

  7. CentOS按电源键关机

    chkconfig --list查看没有acpid服务.安装之后解决yum install acpid -y 安装后需要重启,不然会提示:* Starting acpid ...acpid: can' ...

  8. localStorage和sessionStorage的总结

    localStorage:没有时间限制的数据存储 API: 1.localStorage.setItem('name','wangwei')/localStorage.name='wangwei'存储 ...

  9. zoj 4020 The 18th Zhejiang University Programming Contest Sponsored by TuSimple - G Traffic Light(广搜)

    题目链接:The 18th Zhejiang University Programming Contest Sponsored by TuSimple - G Traffic Light 题解: 题意 ...

  10. 2018CCPC 中国大学生程序设计竞赛 网络赛

    链接 1.括号序列贪心/CF&51nod原题 [分析]: 贪心,每次到i的时候,假如你要在i里面要卖掉股票,获益是a[i], 肯定要在前面要么:1)把已经卖了的变成不买不卖,需要-a[j], ...