Spring-Cloud-Alibaba的简单使用(二)

简介: Spring-Cloud-Alibaba的简单使用

1.5 创建服务消费者

spring-cloud-alibaba-demo-consumer

pom.xml

xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.lzj</groupId>
        <artifactId>spring-cloud-alibaba-demo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>
    <artifactId>spring-cloud-alibaba-demo-consumer</artifactId>
    <packaging>jar</packaging>
    <dependencies>
        <!-- Spring Boot Begin -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- Spring Boot End -->
        <!-- Spring Cloud Begin -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <!-- Spring Cloud End -->
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <mainClass>com.lzj.spring.cloud.alibaba.consumer.ConsumerApplication</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>


ConsumerApplication

java

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class ConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class,args);
    }
}

application.yml

yaml

spring:
  application:
    name: service-consumer
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
server:
  port: 8081
#健康检查
management:
  endpoints:
    web:
      exposure:
        include: "*"

feignClient

java

@FeignClient(value = "service-provider")
public interface ConsumerService {
    @GetMapping(value = "/echo/{string}")
    String echo(@PathVariable("string") String string);
}

controller

java

@RestController
public class ConsumerController {
    @Resource
    private ConsumerService consumerService;
    @GetMapping("/echo/{str}")
    public String echo(@PathVariable String str){
        return "Consumer send str and reply is:" + consumerService.echo(str);
    }
}

1.6 加入分布式配置中心

  • 在消费者中增加依赖
    xml
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
  • 创建bootstrap.properties 文件
    properties
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
  • application.yml中的配置 添加再nacos中

  • application.yml文件删除,这里为保证项目完整,更名为tmp_application.yml
  • 启动测试
  • 动态刷新配置

在nacos配置中加入新配置

yaml

user:
  name: 张三

更改ConsumerController 增加注解@RefreshScope

java

@RestController
@RefreshScope
public class ConsumerController { 
  @Value("${user.name}")
    private String username;
    @GetMapping("/user")
    public String user(){
        return username;
    }
}
  • 启动测试 访问http://localhost:8081/user 返回结果为:张三
  • 更改配置为

yaml

user:
  name: 李四
  • 再次访问: 可以看到结果为:李四

1.7 加入sentinel 流量监控

获取控制台

release 页面 下载最新版本的控制台 jar 包。

启动控制台 sentinel-dashboard-version.jar 替换成真实jar包名

shell

java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-version.jar

引入依赖

xml

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>

当前spring-cloud-starter-alibaba-sentinel并不支持最新版sentinel 1.7.1的客户端,所以我们下载1.7.0的客户端

  • 配置控制台信息
    yml
spring:
  cloud:
    sentinel:
      transport:
        port: 8719
        dashboard: localhost:8080
  • 配置文件打开 Sentinel 对 Feign 的支持:feign.sentinel.enabled=true
  • 加入 spring-cloud-starter-openfeign 依赖使 Sentinel starter 中的自动化配置类生效(已加入)

2.使用dubbo

1.1 创建dubbo服务提供者

spring-cloud-alibaba-demo-dubbo-provider

pom.xml

xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.lzj</groupId>
        <artifactId>spring-cloud-alibaba-demo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <artifactId>spring-cloud-alibaba-demo-dubbo-provider</artifactId>
    <packaging>pom</packaging>
    <properties>
        <nacos.version>1.1.3</nacos.version>
        <dubbo.version>2.7.3</dubbo.version>
        <spring-context-support.version>1.0.6</spring-context-support.version>
    </properties>
    <dependencies>
        <!-- Apache Dubbo Begin -->
        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
            <version>${nacos.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-registry-nacos</artifactId>
            <version>${dubbo.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>${dubbo.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo</artifactId>
            <version>${dubbo.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>javax.servlet</groupId>
                    <artifactId>servlet-api</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-serialization-kryo</artifactId>
            <version>${dubbo.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.dubbo</groupId>
                    <artifactId>dubbo-common</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.alibaba.spring</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring-context-support.version}</version>
        </dependency>
        <!-- Apache Dubbo End -->
    </dependencies>
    <modules>
        <module>spring-cloud-alibaba-demo-dubbo-provider-api</module>
        <module>spring-cloud-alibaba-demo-dubbo-provider-service</module>
    </modules>
</project>


1.2 创建api

spring-cloud-alibaba-demo-dubbo-provider-api

pom.xml

xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.lzj</groupId>
        <artifactId>spring-cloud-alibaba-demo-dubbo-provider</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <artifactId>spring-cloud-alibaba-demo-dubbo-provider-api</artifactId>
    <packaging>jar</packaging>
</project>

interface

java

package com.lzj.spring.cloud.alibaba.dubbo.provider;
/**
 * @author Zijian Liao
 * @date 2020/1/17 18:36
 * @description
 */
public interface HelloService {
    String hello(String string);
}
目录
相关文章
|
1月前
|
JavaScript 前端开发 Java
【GoWails】Go做桌面应用开发?本篇文章带你上手Wails框架!一步步带你玩明白前后端双端的数据绑定!
wails是一个可以让你使用Go和Web技术编写桌面应用的项目 可以将它看作Go的快并且轻量级的Electron替代品。可以使用Go的功能,并结合现代化UI完成桌面应用程序的开发
288 4
|
6月前
|
机器学习/深度学习 数据采集 人工智能
快瞳AI鱼类识别 —— AI赋能海洋生物智能监测
鱼类AI识别技术基于深度学习算法,通过大量鱼类图像训练,实现对鱼类的快速精准识别。该技术模仿人类视觉系统,利用卷积神经网络(CNN)提取鱼体特征,从浅层的鳞片纹理到深层的整体形态逐步分析。快瞳科技提出的MF-Net模型突破了鱼类种类繁多、数据不均衡等难点,通过多阶段特征融合、动态权重调整及三维特征建模,显著提升识别性能。这项技术不仅重塑水产科研方式,还为海洋生物多样性保护提供智能化解决方案,推动AI在生态保护领域的应用迈入新阶段。
|
安全 Java Linux
|
12月前
|
SQL Rust Java
Java 8 异步编程利器:CompletableFuture
Java 8引入了CompletableFuture,这是一个强大的异步编程工具,增强了Future的功能,支持链式调用、任务组合与异常处理等特性,使异步编程更加直观和高效。本文详细介绍了CompletableFuture的基本概念、用法及高级功能,帮助开发者更好地掌握这一工具。
207 0
|
关系型数据库 API PostgreSQL
如何创建免费版本的ABP分离模块?
如何创建免费版本的ABP分离模块?
如何查看Java是否安装成功、如何查看Java版本
记录如何查看Java在自己的电脑上是否安装成功
1472 0
|
数据中心
校园二手交易系统 毕业设计 JAVA+Vue+SpringBoot+MySQL(二)
校园二手交易系统 毕业设计 JAVA+Vue+SpringBoot+MySQL
256 2
|
XML 测试技术 程序员
QTest单元测试框架,简单,好用,高效
QTest单元测试框架,简单,好用,高效
|
关系型数据库 MySQL 应用服务中间件
Centos 7 升级PHP5.x到PHP7.3(php-fpm)
Centos 7 升级PHP5.x到PHP7.3(php-fpm)
1404 0