• 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

  • 相关阅读:
    阿里P7Java最全面试296题:阿里天猫、蚂蚁金服含答案文档解析,备战金九银十!
    理解Hash表
    杀戮空间2开服服务器架设教程UE3Redist
    CenterFusion: Center-based Radar and Camera Fusion for 3D Object Detection 解读
    基于改进神经网络的风电功率预测(Matlab代码实现)
    Spring的两种事务处理方式及五大隔离级别
    SpringMVC的准备工作
    Soul CEO张璐团队以用户安全为核心,探索社交平台安全治理新路径
    使用Jmeter+ant进行接口自动化测试(数据驱动)
    MATLAB程序设计与应用 4.2 程序控制结构
  • 原文地址:https://blog.csdn.net/qq_37718585/article/details/126090825