一:微服务架构?

 1.为什么需要微服务架构

    大家都知道,最开始开发系统就是单机模式(only one computer)。但是随着网络的不断发展,数据不断的增加,业务不断的增加,之前在一台机器上实现的服务现在性能上更不上了,所以很需要一种模式来解决这个问题---微服务架构由此诞生。

 2.微服务架构是什么

   大白话讲一下就是:把一个大型的单个应用程序和服务拆分为多个的支持微服务,各自都有对应的业务。个人认为就是按照业务来划分成不同的微服务。

  

 3.其相对于之前的单机模式的优势:

   其处理复杂的系统时表现出高性能,易维护,好协调等好处

(1)通过分解各个微服务,以及各大组件技术,使得服务更好流畅的执行,分工明确。比如说之前饭店有10个人,每个人既要跑堂,又要记账,又要做饭;这很麻烦;然而使用微服务架构后每个人都有了i明确的分工,自然就搞笑了很多,责任也好追查。

(2)微服务架构模式是每个微服务独立的部署。开发者不再需要协调其它服务部署对本服务的影响。这种改变可以加快部署速度。UI团队可以采用AB测试,快速的部署变化。微服务架构模式使得持续化部署成为可能。

   (3)这种架构使得每个微服务都可以有专门开发团队来开发。开发者可以自由选择开发技术,提供API服务。这种自由意味着开发者不需要被迫使用某项目开始时采用的过时技术,他们可以选择现在的技术。甚至于,因为服务都是相对简单,即使用现在技术重写以前代码也不是很困难的事情。

二:当今最流行的微服务框架---Spring Cloud

Spring Cloud整体核心架构只有一点:Rest服务。也就是这一点与其他所有的微服务框架都不同,其他都可以算是PRC框架,而SpringCloud是基于Restful实现的服务调用。而且其社区牛逼,技术更新相比很快。还有一点就是该框架提供的是全家桶服务;不像Dubbo这些框架缺少很多组件,就采用其他组件来弄,搞得像是个杂牌机一样;不过也正如Doubbo的一位负责人说的,Dubbo他的目的和SpringCloud不一样,其旨在解决各个微服务的性能,管理等。接下来我们主要讲各大组件技术。

   1.Eureka(注册中心)

      

  

就是在服务的调用和被调用之间加了一个中间件。这个Rureka主要分为服务器和客户端。

服务生产者把服务注册到Eureka;服务消费者在Eureka中找到想要的服务API,并进行调用。Eureka大多都是用集群,其保证的是AP原则。就是可用性和分区容错性。

    2.Ribbon,Feign(多业务端的负载均衡)

    

    SpringCloud Ribbon 是一个基于Netflix Ribbion实现的的客户端负载工具。主要功能是提供客户端的软件负载均衡算法。通过SpringCloud的封装,可以让我们轻松的将面向服务的REST服务请求自动转换为客户端负载均衡的服务调用。服务提供者只需要启动多个服务实力示例并注册到一个注册中心或是多个相关联的服务注册中心。服务消费者直接通过调用@LoadBalanced注解修饰过的RestTemplate来实现面向服务接口调用。

大白话时刻:就是将LB逻辑集成到消费方,消费方从注册中心获知有哪些地址可用,然后自己再从这些地址中选择出一个合适的服务器。

    Feign是一个声明式WebService端。使用Feign能够让编写WebService客户端更加简单,他的使用方法是定义一个接口,然后在其上面添加注解,其与Rureka和Ribbon组合使用以支持负载均衡。

   Feign集成了Ribbon:利用Ribbon某个微服务维护了服务列表信息,通过集成IRule这个接口,可以实现不同的LB算法。而与Ribbon不同的是通过feign只需要定义服务绑定接口且以声明式的方法,优雅而简单的实现了服务调用。

    3.Hystrix熔断处理

   Hystrix主要是处理分布式系统的延迟和容错的开源库。通常在分布式系统中会出现服务A依赖服务B,服务B有依赖服务C(这种情况叫做扇出);而只要B断开或出问题的话,时间一长会导致所有的服务都卡在这里就会出现系统崩溃。那么Hystrix能够保证在一个微服务出现问题了,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性。

   而把其称之为断路器,也是在一个服务单元发生故障后,通过故障检测(类似熔断保险丝),向调用方返回一个符合预期,可处理的备选响应(Fallback),而不是长时间的等待或者抛出调用方无法处理的异常。这样就保证了服务调用方的线程不会被长时间,不必要的占用,从而避免了故障在分布式系统中的蔓延,乃至雪崩。

   其能够完成服务降级,服务熔断,服务限流,接近实时的监控。其实和前面说的意思差不多。

    4.ZUUL网关代理。

    

    Zuul服务器也是会注册进Eureka中,提供代理,路由,过滤三大功能呢。

Zuul注册进Eureka中,同时也会从Eureka的服务列表中获得其他的微服务信息。即以后的微服务都是通过Zuul跳转后获得的。

    5.SpringCloud Config分布式配置中心

      

    这个理解起来就很简单了。就是把每一个微服务提供者的配置文件统一管理。可以放到Git上,或者其他服务器利用SVN来管理。

三:总结

SpringCloud是一个提供全家桶的微服务架构。下面是常用的组件架构图。

详细的讲一下微服务框架--SpringCloud的更多相关文章

  1. 微服务框架——SpringCloud

    1.SpringCloud微服务框架 a.概念:SpringCloud是基于SpringBoot的微服务框架 b.五大神兽:Eureka(服务发现).Ribbon(客服端负载均衡).Hystrix(断 ...

  2. 微服务框架SpringCloud(Dalston版)学习 (一):Eureka服务注册与发现

    eureka-server eureka服务端,提供服务的注册与发现,类似于zookeeper 新建spring-boot工程,pom依赖: <dependency> <groupI ...

  3. 微服务框架SpringCloud与Dubbo

    #v1.0.0# 1.背景 Dubbo,是阿里巴巴服务化治理的核心框架,并被广泛应用于阿里巴巴集团的各成员站点.阿里巴巴近几年对开源社区的贡献不论在国内还是国外都是引人注目的,比如:JStorm捐赠给 ...

  4. 微服务框架——SpringCloud(三)

    1.Zuul服务网关 作用:路由转发和过滤,将请求转发到微服务或拦截请求.Zuul默认集成了负载均衡功能. 2.Zuul实现路由 a.新建springboot项目,依赖选择 Eureka Discov ...

  5. 微服务框架——SpringCloud(二)

    1.Feign声明式服务调用(负载均衡+熔断器) a.概念:Feign是一个声明式的Web Service客户端,它的目的就是让Web Service调用更加简单.Feign整合了Ribbon和Hys ...

  6. 微服务框架——SpringCloud(四)

    1.Spring Cloud Config 分布式配置 a.Config服务器 ①新建springboot项目,依赖选择Config Server ②pom文件关键依赖 <parent> ...

  7. 基于Spring-Cloud的微服务框架设计

    基于Spring-Cloud的微服务框架设计 先进行大的整体的框架整理,然后在针对每一项进行具体的详细介绍

  8. SpringCloud微服务框架复习笔记

    SpringCloud微服务框架复习笔记 什么是微服务架构? 微服务是一种软件开发技术,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调.互相配合,为用户提供最终价值.每个服务运行在其独立的进 ...

  9. java框架之SpringCloud(1)-微服务及SpringCloud介绍

    微服务概述 是什么 业界大牛 Martin Fowler 这样描述微服务: 参考[微服务(Microservices)-微服务原作者Martin Flower博客翻译]. 下面是关于上述博客中的部分重 ...

  10. 微服务框架Dubbo与Springcloud的区别

    微服务框架Dubbo与Springcloud的区别 微服务主要的优势如下: 1.降低复杂度 将原来偶合在一起的复杂业务拆分为单个服务,规避了原本复杂度无止境的积累.每一个微服务专注于单一功能,并通过定 ...

随机推荐

  1. AutoFill Chrome插件 影响 Vue接口读取,导致页面卡死,caution: request is not finished yet!

    今天页面突然卡死了,也不知道是因为什么,直连服务器,能行,自己本机nginx的,系统访问某个特定的api就会卡死. 经过尝试,发现今天测试的AutoFill影响的.

  2. day11-面向对象02

    面向对象02 7.继承 继承的本质是对某一批类的抽象,从而实现对现实世界更好地建模 extends的意思是"扩展".子类是父类的扩展. Java类中只有单继承,没有多继承!(一个儿 ...

  3. day06-Java流程控制

    Java流程控制 1.用户交互Scanner java.util.Scanner是Java5的新特征,我们可以通过Scannner类来获取用户的输入. 基本语法: Scanner s = new Sc ...

  4. @Autowired和@Resource整理

    参考,欢迎点击原文:https://www.ixigua.com/6991282608663593508?id=6945836219422999079&logTag=944f6616c791c ...

  5. 一个简单的RTMP服务器实现 --- RTMP与FLV

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  6. 详解SSL证书系列(5)SSL证书为什么不能好多年签一次呢

    上一篇介绍了详解SSL证书系列(4)免费的SSL证书和收费的证书有什么区别,这一篇我们继续了解一下我们申请的SSL证书为什么不能好多年签一次呢,这样不是更省事吗? SSL证书最多只能签发一年,一年到期 ...

  7. 记录--记一次前端CSS升级

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 目前平台前端使用的是原生CSS+BEM命名,在多人协作的模式下,容易出现样式冲突.为了减少这一类的问题,提升研效,我调研了业界上主流的7种 ...

  8. Jmeter教程-JMeter 环境安装及配置

    JMeter 环境安装及配置 在使用 JMeter 之前,需要配置相应的环境,包括安装JDK和JMeter. 首先,了解一下JDK,它就是Java的开发工具包. JMeter 是使用 Java 编写的 ...

  9. Avalonia发布MacOS运行程序

    1 打开xxx.csproj项目文件,添加Dotnet.Bundle包: <PackageReference Include="Dotnet.Bundle" Version= ...

  10. DARTS:基于梯度下降的经典网络搜索方法,开启端到端的网络搜索 | ICLR 2019

    DARTS是很经典的NAS方法,它的出现打破了以往的离散的网络搜索模式,能够进行end-to-end的网络搜索.由于DARTS是基于梯度进行网络更新的,所以更新的方向比较准确,搜索时间相当于之前的方法 ...