Spring - Cloud (微服务)

SpringCloud 和 SpringBoot 版本选择对应: 

版本对应:https://start.spring.io/actuator/info

Cloud官网:Spring Cloud 

中文网:Spring Cloud中文网-官方文档中文版

在官网可以查看 当前Cloud 推荐的Boot版本:

Spring - Cloud (微服务)_第1张图片

Spring - Cloud (微服务)_第2张图片

当前技术栈选型和停更图(2020年):

Spring - Cloud (微服务)_第3张图片

Spring - Cloud (微服务)_第4张图片

Spring - Cloud (微服务)_第5张图片

创建聚合工程 (使用Maven 或 Spring Initializr 都是可以的):

Spring - Cloud (微服务)_第6张图片

JDK版本改为8:

Spring - Cloud (微服务)_第7张图片

注解激活生效:新版的lonbok好像需要勾选:

Spring - Cloud (微服务)_第8张图片

字符编码集UTF-8:

Spring - Cloud (微服务)_第9张图片

Maven配置案例:

Spring - Cloud (微服务)_第10张图片

父模块:



    4.0.0
    org.example
    alibaba2023
    1.0-SNAPSHOT
    pom

    
        demo
    

    
        8
        8
        2.3.12.RELEASE
        2.2.10-RC1
        Hoxton.SR12
    

    
        
            
            
                org.springframework.boot
                spring-boot-dependencies
                ${spring-boot.version}
                pom
                import
            
            
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
            
            
            
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                ${spring-cloud-alibaba.version}
                pom
                import
            
            
            
                org.springframework.boot
                spring-boot-starter-web
                ${spring-boot.version}
            
        
    

子模块:



    4.0.0
    com.example
    demo
    0.0.1-SNAPSHOT
    demo
    Demo project for Spring Boot

    
        alibaba2023
        org.example
        1.0-SNAPSHOT
    

    
        1.8
    

    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-actuator
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.vintage
                    junit-vintage-engine
                
            
        
        
            org.projectlombok
            lombok
            true
        

        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-config
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        
        
            com.alibaba.cloud
            spring-cloud-circuitbreaker-sentinel
        
    

    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.8.1
                
                    1.8
                    1.8
                    UTF-8
                
            
            
                org.springframework.boot
                spring-boot-maven-plugin
                ${spring-boot.version}
                
                    com.example.demo.DemoApplication
                    true
                
                
                    
                        repackage
                        
                            repackage
                        
                    
                
            
        
    


注意点 1:

# 
    
        UTF-8
        1.8
        1.8
        4.12
        1.2.17
        1.16.18
        5.1.47
        1.1.16
        1.3.0
    



# 引用时
#  标签

  
    mysql
    mysql-connector-java
    ${mysql.version}
  
  
    com.alibaba
    druid
    ${druid.version}
  




#  

  com.zbx.springcloud         //创建工程时候的完整包名
  cloud-api-commons     //工程的名字 (如下图)
  ${project.version}          //当前自己pom里面定义的版本号 (固定这样写就可以了)

Spring - Cloud (微服务)_第11张图片

注意点 2:

使用 Run Dashboard (批量 Run):

  • 当前.idea 下 workspace.xml
  • 找到  标签 第一行应该是  
  • 添加 
               

           

Spring - Cloud (微服务)_第12张图片

注意点3:

所有的微服务,一定要有自己的微服务名称,在配置文件里面进行配置

 

1.服务注册与发现:

什么是服务治理:     

  •    在传统rpc远程调用中,服务与服务依赖关系,管理比较复杂,所以需要使用服务治理,管理服务与服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册。

      在服务注册与发现中,有一个注册中心,当服务器启动的时候,会把当前自已服务器的信息 比如 服务地址通讯地址等以别名方式注册到注册中心上。另一方(消费者|服务提供者),以该别名的方式去注册中心上获取到实际的服务通讯地址,然后在实现本地rpc调用远程。

可用组件: 

DiscoveryClient 对象 (Spring提供):

Spring Cloud Commons 提供的抽象

  最早的时候服务发现注册都是通过DiscoveryClient来实现的,随着版本变迁把DiscoveryClient服务注册抽离出来变成了ServiceRegistry抽象,专门负责服务注册,DiscoveryClient专门负责服务发现。还提供了负载均衡的发现LoadBalancerClient抽象。

DiscoveryClient通过@EnableDiscoveryClient的方式进行启用。

  • 从Spring Cloud Edgware开始,@EnableDiscoveryClient 或@EnableEurekaClient 可省略。只需加上相关依赖,并进行相应配置,即可将微服务注册到服务发现组件上。

@EnableDiscoveryClient和@EnableEurekaClient:

  • 共同点:都是能够让注册中心能够发现,扫描到改服务。
  • 不同点:@EnableEurekaClient只适用于Eureka作为注册中心,@EnableDiscoveryClient 可以是其他注册中心。

使用:

  • 可对外提供接口,查询 已注册的服务等相关的信息。
  • 入口主类添加注解 @EnableDiscoveryClient
@Resource
    private DiscoveryClient discoveryClient;

@GetMapping(value = "/payment/discovery")
    public Object discovery() {
        List services = discoveryClient.getServices();
        for (String element : services) {
            log.info("*****element: " + element);
        }

        List instances = discoveryClient.getInstances("CLOUD-PAYMENT-SERVICE");
        for (ServiceInstance instance : instances) {
            log.info(instance.getServiceId() + "\t" + instance.getHost() + "\t" + instance.getPort() + "\t" + instance.getUri());
        }

        return this.discoveryClient;

注册中心 Eureka 、ZookeeperConsul 的区别:

Spring - Cloud (微服务)_第13张图片

  • Nacos 支持AP 和 CP 模式可切换 

 Spring - Cloud (微服务)_第14张图片

 Spring - Cloud (微服务)_第15张图片

Spring - Cloud (微服务)_第16张图片

Spring - Cloud (微服务)_第17张图片

 2.服务的调用与负载均衡:

Ribbon:

Spring - Cloud (微服务)_第18张图片

主要作用:负载均衡 + RestTemplate调用

负载均衡设置:

Spring - Cloud (微服务)_第19张图片

配置方式一:配置类方式 

Spring - Cloud (微服务)_第20张图片Spring - Cloud (微服务)_第21张图片

配置方式二:配置文件  

Spring - Cloud (微服务)_第22张图片

配置方式三:自定义实现   

Spring - Cloud (微服务)_第23张图片

OpenFeign:

Spring - Cloud (微服务)_第24张图片

 3.服务的熔断和降级:

4.服务网关:

5.

你可能感兴趣的:(spring,微服务,java)