SpringCloud学习

微服务架构的4个核心问题:

  1. 服务很多,客户端应该如何访问?
  2. 这么多服务,服务间应该如何通信?
  3. 这么多服务,如何治理?
  4. 服务挂了怎么办?

解决方案:
spring cloud 生态

  1. springCloud NeFlix 一站式解决方案
    api网关 zuul组件
    Feign —HttpClient —Http通信方式,同步,阻塞
    服务注册与发现 Eureka
    熔断机制:Hystrix

  2. Apache Dubbo Zookeeper
    API:没有,使用第三方组件,或自己实现
    Dubbo
    Zookeeper
    熔断机制:没有
    方案不完善

  3. springCloud Alibaba 一站式解决方案,更简单

SpringCloud和Springboot

  • springboot专注于单个微服务的开发
  • springcloud关注于全局的微服务协调治理框架,它将springboot开发的一个个单体服务整合并管理起来,为各个微服务之间提供:配置管理、服务发现、端路器、路由、微代理、事件总线、全局锁、决策竞选、分布式对话等集成服务。
  • springboot可以离开springcloud独立使用,但是springcloud依赖springboot
  • ** springboot专注于快速、方便开发单个个体微服务,springcloud关注全局的微服务治理框架**

环境搭建

  1. 新建maven项目
  2. 导依赖
  • springcloud
  • springboot
  • 数据库
  • springboot启动器
  • log4j
  • Junit
  1. 创建连接数据库
  2. 创建实体类(实现序列化)
  3. 编写配置文件
  4. 提供者
  5. 消费者

Rest访问

Eureka 服务注册与发现

Eureka Server 提供服务注册与发现
Eureka Client 心跳机制(默认30s刷新)
与Zookeeper的区别:
CAP原则:C-数据一致性 A-可用性 P-容错性

  • Zookeeper满足CP,Eureka满足AP
  • Zookeeper:数据要在各个服务间同步完成才返回用户结果,如果出现网络波动,会立即从服务列表中删除,服务不可用
  • Eureka:网络波动时,启动自我保护机制,虽然用户获取到的服务有可能不可用,但是能获取到服务列表,访问服务列表时可以利用重试机制,找到正确可用的服务,更符合分布式高可用需求
  • Zookeeper集群节点中有主从之分,Eureka各个集群节点平等
  • Eureka服务发现要主动获取,Zookeeper采用监听机制
  • Zookeeper监听服务列表变化,实时通知客户端更新
  • Eureka主动获取服务列表,将其缓存,30s后重新拉取

Ribbon

基于NeFlix Ribbon实现的一套客户端负载均衡工具。

负载均衡(LoadBalance)

将用户的请求均摊到多个服务器上,从而达到系统的高可用(HA)
常见算法:

  • 轮询(默认)
  • 随机
  • 权重

Feign

声明式web server客户端,让服务间调用更简单,调用微服务的两种方法:

  • 微服务名【Ribbon】
  • 接口和注解【Feign】

Hystrix

用于分布式系统的延迟和容错的开源库,断路器

服务熔断

(服务端)对应雪崩效应的一种微服务链路保护机制。当某服务不可用或者调用超时时,调用备选方法,快速响应,返回友好提示(类似保险丝):

  • 导包
  • 编写熔断备选方法,使用@HystrixCommand(fallbackMethod=“备选方法”)注解指定熔断回调方法
  • 开启断路器 @EnableDiscoveryClient(服务发现)/@EnableCircuitBreaker(过时)

服务降级

(客户端)从整体网站请求负载考虑,当某个服务熔断或者关闭之后,服务将不再被调用,此时客户端可以准备一个fallbackFactory,返回一个默认值,整体服务水平下降,但是请求是正常的
@FeignClient (value=“”, fallback=“继承fallbackFactory的类”)

Dashboard流量监控

  • 导依赖(spring-cloud-starter-netflix-hystrix-dashboard)
  • 开启@EnableHystrixDashboard
  • 增加一个ServletRegistrationBean bean = new ServletRegistrationBean (new HystrixMetricsStreamServlet());
  • bean.addUrlMappings(“/actuator/hystrix.stream”);

Zuul路由网关

包含对请求的路由和过滤
Zuul本身会注册到Eureka中

  • 导入依赖
  • 编写配置文件
  • 开启@EnableZuulProxy

Spring Cloud Config 分布式配置中心

中文文档:
https://www.bookstack.cn/read/spring-cloud-docs/docs-project-SpringCloudConfig.md

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值