SpringCloud学习⼼得
SpringCloud
初衷
最近公司的⽼项⽬基本维护稳定了,规划⼀个资讯项⽬,我打算⽤众望所归的cloud提升下技术b格,之前只会⽤boot,做技术的就要⼀直保持学习,不吃⽼本,开始学习cloud。写篇博客记录下。
介绍
springcloud和springbootSpringCloud为开发⼈员提供了快速构建分布式系统的常⽤⼯具,包括配置管理、服务发现、服务熔断、智能路由、总线、鉴权等。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 : ${}:${}/eureka/    (如果不配置默认加载8761的 eureka)
region(⼤区)  zone(具体的⼩区)
(2) 如何去注册:
⽐如说hello-service ,要声明⾃⼰是eureka 的客户端,在启动类注解
yml配置:
  server.port : 8081 
  spring.application.name=hello
  eureka.client.service-url.defaultZone=${}:${}/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: comflix.loadbalancer.RandomRule (这种配置后就是随机)
hystrix 请求熔断服务降级依赖隔离(舱壁模式 docker)请求缓存请求合并
@EnableCircuitBreaker  在启动类上配置
@HystrixCommand(fallbackMethod = "b" [服务降级])
public String a() {
  return "";
}
public String b() {
  return "";
}
如果a 坏了、就降级到b。Feign 声明式服务调⽤zuul  api⽹关

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。