zoukankan      html  css  js  c++  java
  • SpringCloud学习心得

    SpringCloud

    初衷

    最近公司的老项目基本维护稳定了,规划一个资讯项目,我打算用众望所归的cloud提升下技术b格,之前只会用boot,做技术的就要一直保持学习,不吃老本,开始学习cloud。写篇博客记录下。

    介绍

    SpringCloud为开发人员提供了快速构建分布式系统的常用工具,包括配置管理、服务发现、服务熔断、智能路由、总线、鉴权等。SpringCloud基于SpringBoot实现微服务架构,它是Java项目从单体应用架构向微服务架构变迁的主流选择之一。

    特性

    (1) 分布式/版本化配置

    (2) 服务注册和发现

    (3) 路由

    (4) service - to - service 调用

    (5) 负载均衡

    (6) 断路器

    (7) 分布式消息传递

    打比方

    单体应用:个人开发者

    微服务:开发公司

    主要组件

    (1)服务注册、发现 Eureka -- 公司通讯录

    (2)微服务应用 -- 小组成员

    (3)断路器Hystrix--员工绩效考核制度

    (4)断路器监控Hystrix Dashboard和Turbine--员工绩效考核表

    (5)客户端负载均衡器Ribbon--小组组长的工作安排机制

    (6)路由/网关Zuul--项目经理的工作安排机制

    (7)统一配置Config--管理部的开发规范

    (8)链路追踪Sleuth--工作进度统计

    CAP定理 (一致性、可用性、分区容错性)

    zk   CP (追求强一致性)

    eureka  AP(强可用性)

    eureka 服务治理 (服务注册、发现)

    (1) 接下来重点讲一下 eureka服务端,要声明自己是eureka 的服务端,在启动类注解

    yml配置:

      client:

        register-with-eureka: false  (为别人提供注册服务的,自己不需要)

        fetch-registry: false  (不需要同步别人的服务)

        service-url: (比如是一个map,可以查看源码)

          default-zone : http://${}:${}/eureka/    (如果不配置默认加载8761的 eureka)

    region(大区)  zone(具体的小区)

    (2) 如何去注册:

    比如说hello-service ,要声明自己是eureka 的客户端,在启动类注解

    yml配置:

      server.port : 8081  

      spring.application.name=hello

      eureka.client.service-url.defaultZone=http://${}:${}/eureka/  (去哪里注册,就是上面所说的服务端) 

    同理,可以注册多个 eureka 的客户端 的服务。

     

    心跳和续约区别:

    (1) 心跳是 服务端请求客户端: 哥们你还活着吗?

    (2) 续约是 客户端来服务端续约,在过期时间到来前 不访问就被服务端干掉

    Ribbon 客户端的负载均衡(知道哪些服务是高可用的)

    主要是进行请求转发,默认的负载均衡算法就是轮巡,可以修改负载的规则(随机等)

    yml:

      server.port= 9000

      spring.application.name:=ribbon-consumer

      # stores.rabbon.listOfServers=localhost:8081,localhost:8082 (写死是不合适的、要跟eureka 结合使用)

      stores.ribbon.NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule (这种配置后就是随机)

    hystrix 请求熔断 服务降级  依赖隔离(舱壁模式 docker)  请求缓存  请求合并

    @EnableCircuitBreaker  在启动类上配置

    @HystrixCommand(fallbackMethod = "b" [服务降级])

    public String a() {

      return "";

    }

    public String b() {

      return "";

    }

    如果a 坏了、就降级到b。

    Feign 声明式服务调用

    zuul  api网关

  • 相关阅读:
    导出表结构
    smarty cache
    浏览器插件
    互联网技术网站介绍
    目录拷贝
    sphinx搜索不到
    powerdesigner 导出数据库表结构
    PowerDesigner 连接 mysql
    update join
    ClipboardJS的坑,
  • 原文地址:https://www.cnblogs.com/pzyin/p/10980857.html
Copyright © 2011-2022 走看看