liuyulin
发布于 2024-02-02 / 63 阅读
0
0

Spring-cloud

SpringCloud

微服务架构

创建SpringCloud项目

创建父项目

使用spring initializr创建项目的时候不用选择任何的依赖,直接创建就好,后面再按照需求添加。

修改pom.xml打包方式为pom<packaging>pom</packaging>

修改父项目springboot版本以及添加springcloud依赖,spring boot使用2.3.12.RELEASE版本,spring cloud alibaba使用2.2.9.RELEASE版本,spring cloud 使用Hoxton.SR12版本

    <dependencyManagement>
        <dependencies>
            <!--Spring Cloud Alibaba版本管理-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.9.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--Spring boot 版本管理-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>2.3.12.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--Spring Cloud 版本管理-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR12</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

创建子项目

创建子项目的时候可以创建maven项目,创建spring项目的话还会重新添加依赖

Nacos

Nacos是一个更易于构建云原生应用的服务发现、服务配置和服务管理平台,即注册中心+配置中心+服务管理的一个平台。

Nacos关键特性

  • 服务发现和服务健康检测

  • 动态配置服务

  • 动态DNS服务

  • 服务及元数据管理

Nacos注册中心

注册中心CAP特性:C一致性,A可用性,P分区容错性。任何注册中心都没办法同时满足这三个指标。

Nacos Server部署

需要下载并启动Nacos服务,然后再将服务注册到Nacos之中。

下载Nacos要注意下载的版本和spring cloud alibaba版本所对应的版本一致,暂时使用windows版本学习。

下载完成之后进行解压,编辑启动cmd文件,将MODE修改为standalone,配置为单独启动。

修改完之后就可以启动nacos了,和dubbo一样,访问 http://192.168.139.1:8848/nacos/index.html 就可以访问nacos的管理界面。

Nacos Client搭建

添加依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-nacos-discovery</artifactId>
    <version>2.1.0.RELEASE</version>
</dependency>

在配置文件中添加配置信息

spring:
  application:
    name: yunyao
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        namespace: public

启动服务,服务就被添加到nacos之中了

调用服务

调用服务需要用到一个RestTemplate类的bean,在启动类中添加一个RestTemplate的bean

@Bean
@LoadBalanced//添加负载均衡
RestTemplate restTemplate(RestTemplateBuilder builder){
RestTemplate restTemplate = builder.build();
return new RestTemplate();
}

在使用时自动注入这个bean,使用这个bean调用远程服务,url使用注册的服务名

    @Autowired
    RestTemplate restTemplate;

    @GetMapping("/test")
    public String test(){
        return restTemplate.getForObject("http://yunyao/sms/token",String.class);
    }

注册中心配置项

Nacos配置中心

配置中心使用

  • 在nacos界面中创建配置文件

  • 创建一个bootstrap.yaml配置文件,用于设置necos配置中心,在bootstrap中配置注册中心的设置

spring:
  cloud:
    nacos:
      config:
        server-addr: 10.42.97.22:8848
        namespace: 23ea8844-251e-4cee-ab35-234ad10101a0
        file-extension: yaml
        # 配置文件优先级
        ext-config:
          - data-id: yunyao-dev.yaml
            refresh: true
          - data-id: jwt-dev.yaml
            refresh: true
  • 使用ext-config可以添加多个配置文件,注意要配置refresh

Feign

Feign是声明式、模板化的HTTP客户端,声明在服务消费端,整合了负载均衡器,能够更加便捷优雅的调用HTTP API。

Spring Cloud Alibaba 提供了 Open Feign 代替闭源了的 Feign,对Feign进行了增强,使其支持Spring MVC注解,另外还整合了Ribbon和Nacos,从而使Feign的使用更加方便。

整合Open Feign

在pom文件中添加依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

创建与调用服务相同的接口,注意,服务名要准确服务路径也要和调用目标的路径相同

@FeignClient(name = "log-service", path = "/log")
public interface LogFeignService {
    @PostMapping("/send")
    ObjectResult sendLogMsg(@RequestBody SendLogReq logMsg);
}

别忘了在启动类中添加@EnableFeignClients注解

之后再服务中调用接口的方法就好了


评论