栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringCloud入门笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringCloud入门笔记

SpringCloud

什么是springcloud?

微服务是分布式架构的一种,而分布式是将服务进行拆分,再拆分的过程中会产生各种各样的问题。而cloud在当中解决的仅仅是服务治理问题

1.Eureka入门 1.1 服务端
  1. 导入Maven坐标

   org.springframework.cloud
   spring-cloud-starter-netflix-eureka-server

  1. yml配置

    eureka:
      client:
        service-url:
          defaultZone: http://localhost:10086/eureka
    
  2. 开启@EnableEurekaServer注解

1.2 客户端
  1. 导入坐标

            
                org.springframework.cloud
                spring-cloud-starter-netflix-eureka-client
            
    
  2. yml配置

    eureka:
      client:
        service-url:
          defaultZone: http://localhost:10086/eureka
    
  3. 开启@EnableEurekaClient注解

  4. 启动多个实例配置

  1. 开启负载均衡

为什么通过其它服务名称能调用服务呢?查看LoadBalanced源码

通过LoadBalancerInterceptor拦截RestTemplate请求,然后从eureka根据服务id拿到服务列表,然后根据负载均衡算法得到真实地址 替换服务id

创建负载均衡器,拿到列表集合

通过负载均衡算法选择server

继续跟进server方法

这里使用默认的轮询算法

自定义负载均衡策略

yml配置

userservice: # 给某个微服务配置负载均衡规则,这里是userservice服务
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则 

Ribbon默认是采用懒加载,即第一次访问时才会去创建LoadBalanceClient,请求时间会很长。

而饥饿加载则会在项目启动时创建,降低第一次访问的耗时,通过下面配置开启饥饿加载:

ribbon:
  eager-load:
    enabled: true
    clients: userservice
2.Nacos入门
  1. 导入坐标

            
                com.alibaba.cloud
                spring-cloud-starter-alibaba-nacos-discovery
            
    
  2. yml配置

    spring:
      cloud:
        nacos:
          server-addr: localhost:8848
    
  3. 配置集群

    spring:
      cloud:
        nacos:
          server-addr: localhost:8848
          discovery:
            cluster-name: HZ # 集群名称
    -Dserver.port=8083 -Dspring.cloud.nacos.discovery.cluster-name=SH     启动多个服务   
    
  4. 配置负载均衡

    userservice:
      ribbon:
        NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则 
    
  5. Eureka和Nacos区别?

    nacos对于临时结点采用心跳机制,对于非临时结点采用主动检测模式,非临时结点不会被剔除

    nacos支持服务列表变更的消息推送模式,服务列表及时更新

    nacos集群支持CP和AP,默认使用AP,当集群有非临时结点时使用CP,Eureka使用AP

  6. config配置

    
    
        com.alibaba.cloud
        spring-cloud-starter-alibaba-nacos-config
    
    

    添加bootstrap.yaml

    spring:
      application:
        name: userservice # 服务名称
      profiles:
        active: dev #开发环境,这里是dev 
      cloud:
        nacos:
          server-addr: localhost:8848 # Nacos地址
          config:
            file-extension: yaml # 文件后缀名
    

    配置热更新

    在@Value注入的变量所在类上添加注解@RefreshScope

    或者添加一个配置类

    @Component
    @Data
    @ConfigurationProperties(prefix = "pattern")
    public class PatternProperties {
        private String dateformat;
    }
    
3.Feign入门
       
            org.springframework.cloud
            spring-cloud-starter-openfeign
        
@FeignClient("userserivce")
public interface UserServiceFeign {

    @GetMapping("/{id}")
    public User queryById(@PathVariable("id") Long id);
}

启动类加上注解@EnableFeignClients

Feign性能优化

feign:
  client:
    config:
      default:
        loggerLever: BASIC #日志级别 只打印请求和响应数据
  httpclient:
    enabled: true #开启feign对httpClient的支持
    max-connections: 200 #最大连接数
    max-connections-per-route: 50 #每个路径的最大连接数

feign的底层客户端是URLConnection 是jdk自带的不支持连接池 那么就意味着每次请求都需要进行3次握手和4次挥手 很大的影响的性能

4.Gateway入门
        
            org.springframework.cloud
            spring-cloud-starter-gateway
        
    gateway:
      routes:
        - id: order-service
          uri: lb://orderservice   # 负载均衡路由服务
          predicates:
            - Path=/order/**   # 断言 根据请求路径匹配
          filters:             # 路由过滤器
            - AddRequestHeader=Truth,Liubo666
     globalcors:
       add-to-simple-url-handler-mapping: true  #解决options请求被拦截问题
       cors-configurations:
         '[/**]':
           allowedOrigns: # 允许哪些网站跨域请求
             - "http://localhost:8083"
           allowedMethods:  #允许跨域的ajax请求方式
             - "GET"
             - "POST"
             - "DELETE"
           allowedHeaders: "*" #允许在请求中携带的头信息
           allowCredentials: true  #是否允许携带cookie
           maxAge: 360000 #本次跨域的有效期
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/858008.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号