美文网首页
第一个SpringCloud Alibaba应用

第一个SpringCloud Alibaba应用

作者: 索伦x | 来源:发表于2019-05-19 13:29 被阅读0次

    下载 Nacos 及 Sentinel

    链接:https://pan.baidu.com/s/1W5SCjbHEkObh--NaH3jLWw
    提取码:kzef

    启动 Nacos 及 Sentinel

      1. 启动 Nacos
        运行 bin/startup.cmd
      1. 启动 Sentinel
        运行 sentinel.bat

    第一个Spring cloud Alibaba 应用

      1. POM.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>
    
        <groupId>com.suoron</groupId>
        <artifactId>MyFirstSpringCloud</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <packaging>jar</packaging>
    
        <!-- 继承父包 -->
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.6.RELEASE</version>
        </parent>
    
        <properties>
            <spring-cloud.version>Finchley.SR2</spring-cloud.version>
            <spring-cloud-alibaba.version>0.2.1.RELEASE</spring-cloud-alibaba.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
            <dependency>
                <groupId>com.alibaba.csp</groupId>
                <artifactId>sentinel-datasource-nacos</artifactId>
            </dependency>
        </dependencies>
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>${spring-cloud.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                    <version>${spring-cloud-alibaba.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
        <!--maven的插件-->
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
    
                <plugin>
                    <groupId>com.spotify</groupId>
                    <artifactId>dockerfile-maven-plugin</artifactId>
                    <version>1.4.0</version>
                    <configuration>
                        <!--  镜像名, 也可以使用${project.artifactId} -->
                        <repository>testspringboot</repository>
                        <buildArgs>
                            <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                        </buildArgs>
                    </configuration>
                </plugin>
    
            </plugins>
    
            <!-- 配置java版本 不配置的话默认父类配置的是1.6-->
            <pluginManagement>
                <plugins>
                    <plugin>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <configuration>
                            <source>1.8</source>
                            <target>1.8</target>
                        </configuration>
                    </plugin>
                </plugins>
            </pluginManagement>
        </build>
    
    </project>
    
      1. bootstrap.properties
    spring.application.name=server-rpc-test
    #cc654f1e-cce5-4b38-935d-3e95bbb712a7 = DEV
    spring.cloud.nacos.config.namespace=cc654f1e-cce5-4b38-935d-3e95bbb712a7
    spring.cloud.nacos.config.server-addr=localhost:8848
    spring.cloud.nacos.discovery.server-addr=localhost:8848
    spring.cloud.sentinel.transport.dashboard=localhost:8858
    management.endpoints.web.exposure.include=*
    
      1. application.yml (可选)
    server:
      port: 8080
      tomcat:
        uri-encoding: utf-8
    
    
    • 4.Spring Boot 启动主类
    @SpringBootApplication
    @EnableDiscoveryClient
    @ComponentScan(basePackages = "com.suoron.springboot.controller")
    public class CloudPlatformApplication {
        @LoadBalanced
        @Bean
        public RestTemplate restTemplate() {
            return new RestTemplate();
        }
        public static void main(String[] args) {
            SpringApplication.run(CloudPlatformApplication.class, args);
        }
    
    }
    
    1. 服务器提供者
    @RestController
    public class ProviderController {
    
        @SentinelResource("service.echo")
        @RequestMapping(value = "/service/echo/{string}", method = RequestMethod.GET)
        public String echo(@PathVariable String string) {
            return "Hello Nacos Discovery " + string;
        }
    }
    
    1. 服务消费者
    @RestController
    public class ConsumerController {
    
        private final RestTemplate restTemplate;
    
        @Autowired
        public ConsumerController(RestTemplate restTemplate) {this.restTemplate = restTemplate;}
    
        @RequestMapping(value = "/api/echo/{str}", method = RequestMethod.GET)
        public String echo(@PathVariable String str) {
            return restTemplate.getForObject("http://server-rpc-test/service/echo/" + str, String.class);
        }
    }
    

    测试http://localhost:8080/api/echo/hello

    限流测试

    打开网页http://localhost:8858/

    添加限流规则

    测试: 多次刷新 http://localhost:8080/api/echo/hello

    失败页面

    相关文章

      网友评论

          本文标题:第一个SpringCloud Alibaba应用

          本文链接:https://www.haomeiwen.com/subject/hurtgqtx.html