1.springcloud简介

SpringCloud是Spring旗下的项目之一,它是微服务架构的一种实现方式。

Spring最擅长的就是集成,把世界上最好的框架拿过来,集成到自己的项目中。

SpringCloud也是一样,它将现在非常流行的一些技术整合到一起,实现了诸如:配置管理,服务发现,智能路由,负载均衡,熔断器,控制总线,集群状态等等功能。其主要涉及的组件包括:

Netflix:

Eureka:注册中心

Zuul:服务网关

Ribbon:负载均衡

Feign:服务调用

Hystrix:熔断器

场景模拟:

​现在来使用springboot创建两个微服务,为了方便直观,将服务的提供者命名为user-service,将服务的消费者命名为consumer-demo,我们利用这两个微服务之间的调用,来感受一下pringcloud这个全局的治理框架的作用

2.Eureka

废话不多说,直接上图!

renewal:续约

Eureka-Server:就是服务注册中心(可以是一个集群),对外暴露自己的地址。

提供者:启动后向Eureka注册自己信息(地址,服务名称等),并且定期进行服务续约

消费者:服务调用方,会定期去Eureka拉取服务列表,然后使用负载均衡算法选出一个服务进行调用。

心跳(续约):提供者定期通过http方式向Eureka刷新自己的状态

首先,Eureka是一个注册中心,和zookeeper功能类似,其中不同的一点是zookeeper是一个软件,启动直接可以使用,而Eureka是需要我们自己开发的。

下面对开发一个Eureka注册中心进项简单的解析:

1.首先一个简单的Eureka注册中心只需要一个依赖

org.springframework.cloud

spring-cloud-starter-netflix-eureka-server

2.其次,编写一个启动类,该类上加上一个注解

@SpringBootApplication

@EnableEurekaServer //开启Eureka注册服务

public class EurekaServer {

public static void main(String[] args) {

SpringApplication.run(EurekaServer.class, args);

}

}

3.最后,编写该项目基本的配置文件

server:

port: 10086#端口号

spring:

application:

name: eureka-server # 应用名称,会在Eureka中作为服务的id标识(serviceId)

eureka:

client:

service-url: # EurekaServer的地址,现在是自己的地址,如果是集群,需要写其它Server的地址。

defaultZone: http://127.0.0.1:10086/eureka#注册的地址,如果是集群,应该用,隔开

register-with-eureka: false # 不注册自己

fetch-registry: false #不拉取服务

这样一个简单的Eureka就完成了,可以启动服务,访问http://127.0.0.1:10086,查看在该注册中心上注册的以及服务的基本信息。

服务的注册(客户端的开发):

​Eureka开发完成之后,访问发现没有服务注册到Eureka中,现在我们要让user-service和consumer-demo注册到Eureka上。

​第一步:在需要注册的微服务中加入依赖

org.springframework.cloud

spring-cloud-starter-netflix-eureka-client

​第二步:在启动类上添加@EnableDiscoveryClient来开启Eureka客户端的功能

@SpringBootApplication

@EnableDiscoveryClient // 开启Eureka客户端发现功能

public class UserServiceDemoApplication {

public static void main(String[] args) {

SpringApplication.run(UserServiceDemoApplication.class, args);

}

}

​第三步:再次访问http://127.0.0.1:10086可以看到有两个服务注册到Eureka上

2.zuul

在微服务架构中,Zuul就是守门的大Boss!一夫当关,万夫莫开!

不管是来自于客户端(PC或移动端)的请求,还是服务内部调用。一切对服务的请求都会经过Zuul这个网关,然后再由网关来实现 鉴权、动态路由等等操作。Zuul就是我们服务的统一入口。

再来一张图:

这可以看出Zuul在整个架构中扮演着什么样的角色,其实zuul的主要作用有两个:过滤(鉴权)和路由

和Eureka相同,Zuul同样需要我们自己来开发

1.创建一个model,一个Zuul的的服务端应该导入下面这个依赖

org.springframework.cloud

spring-cloud-starter-netflix-zuul

2.编写启动类,这里要注意的是要打上@EnableZuulProxy开启zuul的网关功能

@SpringBootApplication

@EnableZuulProxy // 开启Zuul的网关功能

@EnableDiscoveryClient//开启Eureka的客户端发现

public class ZuulApplication {

public static void main(String[] args) {

SpringApplication.run(ZuulApplication.class, args);

}

}

3.编写配置文件

server:

port: 10010 #服务端口

spring:

application:

name: api-gateway #指定服务名

eureka:

client:

service-url:

defaultZone: http://127.0.0.1:10086/eureka#配置Eureka的地址,将zuul会代理Eureka上注册的服务

zuul:

prefix: /api # 添加路由前缀

routes:

user-service: /user-service/** # 这里是映射路径

这里的user-service在Eureka上注册的一个服务,这里配置了他的映射路径。路径就要以/api/user-service开头的请求都会被分发到该服务上。

Zuul是集成了另外一个组件负载均衡的组件Ribbon,所以,如果Eureka上有两个名称为user-service的服务,可以自动的进行负载均衡,默认的策略是轮询

熔断机制

Zuul还集成了Hystix熔断机制。但是所有的超时策略都是走的默认值,比如熔断的超时时间只有1S,也就是说,访问一个服务,如果1s没有响应,就判定为异常,我们也可以自己设置超时时间

hystrix:

command:

default:

execution:

isolation:

thread:

timeoutInMilliseconds: 6000

euraka有哪些组件_SpringCloud及其五大常用组件之Eureka和Zuul相关推荐

  1. SpringCloud五大常用组件

    一.SpringCloud简介 SpringCloud是微服务架构的集大成者,将一系列优秀的组件进行了整合.通过一些简单的注解,我们就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统. Spr ...

  2. java组件代码_[java]常用组件

    代码: zujian.java public class zujian { public static void main(String args[]){ ComponentInWindow win ...

  3. JQuery EasyUI的常用组件

    jQuery EasyUI 是一个基于 jQuery 的框架,集成了各种用户界面插件,该框架提供了创建网页所需的一切,帮助您轻松建立站点. 注:本次介绍的JQuery EasyUI版本为1.5版. 一 ...

  4. wdcp php5.3 pdo_mysql,WDCP常用组件(memcache、mysqli、PDO_MYSQL、mysql innodb、libmcrypt、php zip)的安装方法...

    一般来说WDCP安装之后就可以正常使用了,不过对于一些朋友来说还无法满足,现在收集了有关WDCP常用组件,比如memcache.mysqli.PDO_MYSQL.mysql innodb.libmcr ...

  5. amazeui学习笔记--css(常用组件4)--关闭按钮Close

    amazeui学习笔记--css(常用组件4)--关闭按钮Close 一.总结 1.关闭按钮基本用法:关闭按钮样式,可以结合其他不同组件使用.对 <a> 或者 <button> ...

  6. amqp协议_AMQP协议、模型及RabbitMQ常用组件

    大家好,我是小T 今天咱们来介绍RabbitMQ的消息发送的原理 ^-^ RabbitMQ作为一款消息中间件,它的核心功能主要是消息的收发.消息收发的媒介是通过网络传输来实现的. RabbitMQ最底 ...

  7. Mysql数据库五大常用数据引擎

    目录: 数据库 什么是数据库? RDBMS 术语 MySQL数据库的介绍 MySQL数据库的特点: 五大常用数据库引擎 Innodb与MyIASM引擎的区别与应用场景 为什么MyIASM会比Innod ...

  8. 「五大常用算法」一文图解分治算法和思想

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:硬刚一周,3W字总结,一年的经验告诉你如何准备校招! 个人原创100W+访问量博客:点击前往,查看更多 前言 分 ...

  9. HarmonyOS之常用组件RoundProgressBar的功能和使用

    RoundProgressBar 继承自 ProgressBar,拥有 ProgressBar 的属性,在设置同样的属性时用法和 ProgressBar 一致,用于显示环形进度. RoundProgr ...

  10. HarmonyOS之常用组件TabList与Tab的功能和使用

    一.什么是 Tablist 与 Tab ? Tablist 可以实现多个页签栏的切换,Tab 为某个页签. 子页签通常放在内容区上方,展示不同的分类. 页签名称应该简洁明了,清晰描述分类的内容. 二. ...

最新文章

  1. 【Spring】Spring系列6之Spring整合Hibernate
  2. 更改eclipse的Package Explorer的字体
  3. 关于浮点数精度的问题
  4. docker为什么比虚拟机快
  5. 5.1.2全景声音箱摆位_如何体验全景声
  6. php正则去掉width=,关于php使用正则去除宽高样式的方法
  7. jieba分词_wordcloud词云美化——jieba结巴中文分词(将长句拆分)
  8. JavaScript数据类型之数字型(4)
  9. [Linux程序设计][调试][splint]
  10. 1.3 app的urls与 views
  11. 成长路上破局思维:工具化时间管理
  12. 解决cannot find module providing package或cannot find main module
  13. chrome设置开启GPU加速
  14. Elasticsearch 可以更改 Mapping 吗?如何修改?
  15. 黑莓蓝牙摇杆-Zeemote
  16. 布线光纤方面的知识都在这了,千万别错过!
  17. Java面试题(4)
  18. c30-程序中的三国天下(c31-程序中的内存布局)
  19. java导入excel组件_三十五、Java中常见解析Excel引入的XXE组件复现与分析
  20. python爬虫爬取天气数据并图形化显示

热门文章

  1. Hadoop学习笔记三
  2. Mac效率:配置Alfred web search
  3. 玩转windows内置linux子系统_1.安装
  4. 纯C实现的词法分析和lex实现的词法分析的对比
  5. Html5 学习系列(三)增强型表单标签
  6. LeetCode_151_python_翻转字符串里的单词
  7. 题目管理后台系统_推荐一套GitHub开源通用后台管理系统
  8. vue限制点击次数_如何处理vue按钮多次点击重复提交数据
  9. ARM开发7.3.3 基础实训( 3 ) 独立式键盘的输入系统设计--LPC21XX
  10. 重构Webpack系列之五 ---- Plugins