乐趣区

关于java:spring-cloud-alibaba

[TOC]

历史

  1. 架构倒退

    1. 单体架构
    2. 垂直利用架构: 按服务独立拆分多个
    3. 分布式架构: 抽取公共层
    4. SOA: 减少服务注册核心进行集群调度
    5. 微服务: 服务间彻底拆分, 原子化
  2. 组成
    服务治理: 服务主动注册与发现
    服务调用: REST/RPC
    服务员容错: 避免雪崩
    链路追踪: 记录服务调用链路
  3. 实现:
    ServiceComb: 前身是华为云
    Spring Cloud
    SpringCloud Alibaba

SpringCloud Alibaba

  • Sentinel: 流量管制, 熔断降级, 负载爱护
  • Nacos: 服务治理
  • RocketMQ, Dubbo
  • Alibaba Cloud ACM: 配置核心
  • Alibaba Cloud OSS: 存储
  • Alibaba Cloud SchedualerX: 任务调度
  • Alibaba Cloud SMS: 短信服务

Nacos

  1. 服务治理: 次要用于服务的注册与发现. 解决一般 restTemplate 调用时间接硬编程写入 ip 端口, 且无负载平衡.
    常见的有 Zookeeper(次要解决分布式数据问题), Eureka(注册与发现), Consul(基于 GO 开发, 提供注册发现配置, 自身是可执行文件装置部署不便, kv 存储等性能), Nacos(注册发现和配置, =Eureka+config)
  2. 启动
    nacos/bin/startup.cmd -m standalone
    拜访 http://localhost:8848/nacos, nacos/nacos
  3. 应用
    引入

    <dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-starter-nacos-discovery</artifactId>
    </dependency>

    主类退出 @EnableDiscoveryClient
    application.yml 退出
    spring.cloud.nacos.discovery.server-addr: 127.0.0.1:8848
    服务调用: DiscoveryClient 负责服务注册和发现
    @Autowired
    private DiscoveryClient dc;
    ServiceInstance si = dc.getInstances(“service-product”).get(0);// 能够 get 不同的 instance 实现负载平衡, 或应用 Ribbon(@LoadBalanced)
    String url = si.getHost() + “:” + si.getPort();
    restTemplate.getForObject(“http://”+url+”/product”+pid, Product.class);

  4. Ribbon 负载平衡策略
  5. BestAvailabeRule: 抉择申请起码的 server
  6. availabilityFilteringRule: 过滤被标记为 circuit tripped 的 server
  7. WeightResponseTimeRule: 调配工夫权重
  8. RoundRobinRule: 轮询形式
  9. randomRule: 随机
  10. Feign: 申明式的伪 http 客户端, 像调用本地服务一样调用近程服务, nacos 兼容 feign, feign 集成 ribbon

服务容错

  1. 常见容错形式:
  2. 隔离: 将服务划分为若干绝对独立的模块, 使危险只存在某个模块外部. 罕用办法有线程池隔离和信号隔量隔离
  3. 超时: 超出设置工夫则间接断开申请, 开释线程
  4. 限流
  5. 熔断: 当上游拜访剧增而响应变慢或失败, 上游服务科临时切断上游服务调用, 这种就义部分顾全整体的措施叫熔断. 熔断 3 中状态:

    • 敞开(Closed): 无故障
    • 开启(Open): 后续调用不在通过网络, 而是间接执行本地的 fallback 办法
    • 半熔断(Half-Open): 容许无限流量, 并监控成功率, 如达到预期则敞开熔断, 否则重回敞开
  6. 降级: 为服务提供托底计划, 一旦调用无奈失常, 则应用托底计划
  7. 常见容错组件
  8. Hystrix: NetFlix 组件, 用于隔离近程调用, 服务或第三方库
  9. Sentinel: alibaba 组件
  10. Resilience4J: 轻量简略
    比照

sentinel

  1. 集成
    依赖com.alibaba.cloud.spring-cloud-starter-alibaba-sentinel
  2. 控制台
    https://github.com/alibaba/Se…
    java -jar 启动
  3. 我的项目退出配置
    spring.cloud.sentinel.dashboard: localhost:8080
    启动我的项目即可拜访
退出移动版