现在大部分公司的项目架构都选择了微服务,我们公司也不例外,那么什么是微服务呢?今天就来开启SpringCloud之旅!

SpringCloud是基于SpringBoot的一整套的微服务架构。他提供了微服务开发所需的配置服务(SpringCloud Config)、服务发现(Eureka)、服务容错保护(Hystrix)、服务网关(Zuul)、负载均衡(Ribbon)、声明式服务调用(Fegin)等组件;

一、服务发现(Eureka)

  作用:服务治理---服务的注册与发现;

  组成:Eureka服务端和Eureka客户端;

二、客户端负载均衡(Ribbon)

  Ribbin从Eureka注册中心获取服务列表信息,缓存到本地,在本地实现负载均衡策略;

  说到这里,我印象里还有个Nginx也可以实现负载均衡,那么他们有什么区别呢?

    Nginx是将客户端的所有请求统一交给Nginx进行处理,实现负载均衡请求转发。

    

    废话不多说直接上图↓

              

三、服务容错保护(Hystrix)

  1、主动超时:设置一个请求时间,超时就返回;

  2、限流:限制最大并发数;

  3、熔断:当错误超过一定阈值时快速返回失败,不调用后端服务,同时隔一定时间放几个请求重试这个后端服务时候恢复。如果正常就关闭熔断,失败则直接返回;

  4、隔离:把每个依赖或者调用的服务都隔离开,防止整体服务不可用;

  5、降级:服务失败后,返回指定的默认信息;

四、声明式服务调用(Fegin)

  Fegin是一个声明式、模板化的Http客户端,整合了Eureka、Robbin和Hystrix,方便Fegin的使用;

@FeignClient(name = "eureka-service")
public interface UserFeignClient {
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public User findById(@PathVariable("id") Long id);
}
@RestController
public class MovieController {
@Autowired
private UserFeignClient userFeignClient; @GetMapping("/user/{id}")
public User findById(@PathVariable Long id) {
     return this.userFeignClient.findById(id);
}
}
@EnableDiscoveryClient //注册发现服务
@SpringBootApplication
@EnableFeignClients //启动Fegin项目
public class ConsumerMovieApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerMovieApplication.class, args);
}
}

五、服务网关(Zuul)

  微服务网关是介于客户端和服务器端之间的中间层, 所有的外部请求都会先经过微服务网关;

  优点:

  • 易于监控。可在微服务网关收集监控数据并将其推送到外部系统进行分析。
  • 易于认证。可在微服务网关上进行认证,然后再将请求转发到后端的微服务,而无须在每个微服务中进行认证。
  • 减少了客户端与各个微服务之间的交互次数。

  

Zuul的核心是一系列的过滤器,这些过滤器可以完成以下功能。

  1、身份认证与安全;识别每个资源的验证要求,并拒绝那些与要求不符的请求。
  2、审查与监控:在边缘位置追踪有意义的数据和统计结果,从而带来精确的生产视图。
  3、动态路由:动态地将请求路由到不同的后端集群。
  4、压力测试:逐渐增加指向集群的流量,以了解性能。
  5、负载分配:为每一种负载类型分配对应容量,并弃用超岀限定值的请求。
  6、静态响应处理:在边缘位置直接建立部分响应,从而避免其转发到内部集群。
  7、多区域弹性:跨越AWS Region进行请求路由,旨在实现ELB ( Elastic Load Balancing) 使用的多样化,以及让系统的边缘更贴近系统的使用者。

SpringCloud之旅的更多相关文章

  1. SpringCloud之旅第一篇-微服务概念

    一.单体架构的问题 微服务为什么会出现?在学习Springboot的时候知道Springboot极大的简化了我们的开发,我们可以快速的进行业务开发,Springboot单体应用在项目的开发初期能够满足 ...

  2. springcloud (一) 介绍

    开启springcloud 之旅... 传统单体架构: 微服务架构: 每个模块独立运行,就是独立的进程. 接下来基于springboot 来构建微服务: 1, 客户端->订单微服务->用户 ...

  3. SpringCloud系列之配置中心(Config)使用说明

    大家好,最近公司新项目采用SpingCloud全家桶进行开发,原先对SpringCloud仅仅只是停留在了解的初级层面,此次借助新项目的契机可以深入实践下SpringCloud,甚是Happy.大学毕 ...

  4. Spring-Cloud之Eureka排坑之旅

    1 快速demo 1.0 环境说明   Intelli IDEA+Spring Boot 1.1 新建工程chap52(通过New Project->Spring Initializer-> ...

  5. SpringBoot + SpringCloud的爬坑之旅

    1,application.yaml中配置没有生效问题解决 如果配置文件确认没有错误但是没有生效首先是要到编译目录去查看是否被编译过去了,如果没有,请先将项目clean在重启 但是idea启动项目时也 ...

  6. 快速搭建 SpringCloud 微服务开发环境的脚手架

    本文适合有 SpringBoot 和 SpringCloud 基础知识的人群,跟着本文可使用和快速搭建 SpringCloud 项目. 本文作者:HelloGitHub-秦人 HelloGitHub ...

  7. Linq之旅:Linq入门详解(Linq to Objects)

    示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...

  8. WCF学习之旅—第三个示例之四(三十)

           上接WCF学习之旅—第三个示例之一(二十七)               WCF学习之旅—第三个示例之二(二十八)              WCF学习之旅—第三个示例之三(二十九)   ...

  9. 【微框架】之一:从零开始,轻松搞定SpringCloud微框架系列--开山篇(spring boot 小demo)

    Spring顶级框架有众多,那么接下的篇幅,我将重点讲解SpringCloud微框架的实现 Spring 顶级项目,包含众多,我们重点学习一下,SpringCloud项目以及SpringBoot项目 ...

  10. 【C#代码实战】群蚁算法理论与实践全攻略——旅行商等路径优化问题的新方法

    若干年前读研的时候,学院有一个教授,专门做群蚁算法的,很厉害,偶尔了解了一点点.感觉也是生物智能的一个体现,和遗传算法.神经网络有异曲同工之妙.只不过当时没有实际需求学习,所以没去研究.最近有一个这样 ...

随机推荐

  1. Visual C++ Redistributable for Visual Studio各版本下载地址

    Visual C++ Redistributable for Visual Studio各版本下载地址飞鹰_天涯于 2021-06-24 09:35:21 发布 5978收藏 8版权Microsoft ...

  2. Python3 文件处理相关脚本

    对文件相关处理是脚本中最常见的,下面列举几种实用的案例: 批量删除: (1)删除指定目录,指定后缀文件 例:删除目录J:/start下的 .log与.tmp结尾文件 def del_files(pat ...

  3. 面试视频知识点整理1-7(http协议)

    http协议类 1)http协议的主要特点             简单快速   统一资源符 灵活          通过http协议,可以修改http头,完成不同数据类型的传输 无连接        ...

  4. nginx增加自定义账号鉴权

    nginx增加自定义账号鉴权 使用nginx反向代理实现 当一个站点内部程序是个黑盒(无法修改里面的请求逻辑),如何增加自己的账号系统鉴权 实现逻辑 使用nginx的反向代理功能 自定义账号系统增加两 ...

  5. Localstorage、sessionStorage、cookie 的区别

    共同点:都是保存在浏览器端.且同源的 区别: 1.cookie 数据始终在同源的 http 请求中携带(即使不需要),即 cookie 在浏览器和服务器 间来回传递,而 sessionStorage ...

  6. jvm中的年轻代 老年代 持久代 gc ----------转载

    jvm中的年轻代 老年代 持久代 gc 虚拟机中的共划分为三个代:年轻代(Young Generation).老年代(Old Generation)和持久代(Permanent Generation) ...

  7. [2007年NOIP普及组] 奖学金

    某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金.期末,每个学生都有3门课的成绩:语文.数学.英语.先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序, ...

  8. 天龙八部<三联版>二

    段誉来到无锡,遇上乔峰,斗气与乔峰比酒,乔峰误以为段誉是慕容复,段誉被乔峰豪气所折服,像乔峰坦言,乔峰不但不怒,反而对段誉很认可,二人结拜 段誉跟随乔峰来到丐帮,包不同和三女因为慕容复而和丐帮发生争执 ...

  9. 20 local_settings文件配置 && .gitignore

    1 local_settings 第一步:需要在项目根目录下的settings配置如下 try: from .local_settings import * except Exception: pas ...

  10. Windows 10 ~ Jenkins 安装

    首先: jenkins是由java写的,所以在使用之前请安装好JDK(最好安装JDK1.8) 下载jenkins.war包并放到一个自己创建的目录D:\jenkins下:https://mirrors ...