SpringCloud Alibaba完整使用

SpringCloud Alibaba完整使用搭建AlibabaCloud首先搭建几个环境全部在Linux下1、nacos注册中心2、sentinel流量控制,断路3、apache-skywalking-apm-bin监控接口的速度、效率等等4、Rocketmq的使用项目如下在这里插入代码片首先创建pom工程***Alibaba-Cloud***|<?xmlver……

大家好,又见面了,我是你们的朋友全栈君。

分享一套牛逼SpringCloudAlibaba视频

白嫖版连接
https://z701.com/f/30768329-501599316-70864f
(访问密码:2822)

项目下载地址
sentinel JAR下载地址

由于微信群七天失效\先加QQ群 再拉你进微服务微信群

关注公众号
请添加图片描述
在这里插入图片描述

介绍 NACOS 命名空间的使用
在这里插入图片描述
| 在这里插入图片描述

在这里插入图片描述

创建带有分组的配置、通过配置设置使用的那个分组、然后访问测试显示dev
在这里插入图片描述

项目如下
在这里插入代码片在这里插入图片描述

     首先创建pom工程  ***Alibaba-Cloud***
     
  |<?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.hxx.alibaba</groupId>
<artifactId>Alibaba-Cloud</artifactId>
<version>1.0-SNAPSHOT</version>
<modules>
    <module>Alibaba-Cloud-Member</module>
    <module>Alibaba-Cloud-Provder</module>
    <module>Alibaba-Gateway-Api</module>
</modules>


<packaging>pom</packaging>


<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.1.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Finchley.SR1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>0.2.2.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>


    <!--引入配置中心阿里巴巴-->
    <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>

    <!--sentinel-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
    </dependency>

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.2</version>
        <optional>true</optional>
    </dependency>
</dependencies> </project>|




  工程名称  ​Alibaba-Cloud-Provder

​​package com.hxx.alibaba.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 使用说明: 使用了 yaml配置中心后我的请求一直访问不到资源是404  出现这个情况的话 在Controller类在加一个@RequestMapping("/alibaba")
 *
 * @author huangxiangxiang
 * @version 2.0.0
 * @createTime 2019年09月10日 13:25:00
 */

@RestController
@RequestMapping("/alibaba")
public class ProvderController {


    @RequestMapping("/getNmae")
    public String getNmaeList(String name) {
        System.out.println("生产者");
        return name + "生产者";
    }
}

package com.hxx.alibaba;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
    启动类
 * 使用说明:生产者生产东西
 *
 * @author huangxiangxiang
 * @version 2.0.0
 * @createTime 2019年09月10日 13:22:00
 */

@SpringBootApplication
@EnableDiscoveryClient
public class ProvderApp {

    public static void main(String[] args) {
        SpringApplication.run(ProvderApp.class, args);
    }
}

bootstrap.properties 配置文件

#1、端口已经配置到 -NACOS 注册中心
#–这个要和 Nacos 的 Data ID 前缀一致 spring.application.name=alibaba-cloud-provder
#2、配置文件的地址
spring.cloud.nacos.config.server-addr=192.168.220.129:8848

#3、注册中心的地址
#spring.cloud.nacos.discovery.server-addr=192.168.220.128:8848

#4、限流监控中心
#spring.cloud.sentinel.transport.dashboard=192.168.220.128:8080
#spring.cloud.sentinel.eager=true

#5、配置以yaml的形式—-不配置就拉取不到
spring.cloud.nacos.config.file-extension=yaml

这是把本地的配置 放到了配置中心 、启动项目就可以拉取到配置、以yml的方式、默认是 properties
在这里插入图片描述

创建消费者工程 Alibaba-Cloud-Member

package com.hxx.alibaba.controller;

import com.hxx.alibaba.consum.ConsumService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

/**
 * 使用说明:
 *
 * @author huangxiangxiang
 * @version 2.0.0
 * @createTime 2019年09月10日 13:32:00
 */

@RestController
@RequestMapping("/aonsum")
public class ConsumController {

    @Autowired
    private ConsumService consumService;

    @RequestMapping("/getNmae")
    public String getNmae(@RequestParam("name") String name) {
        String nmaes = consumService.getNmae(name);
        System.out.println(".......消费者fegin调用.....配置中心................." + nmaes);
        return nmaes;
    }
}

这里加入了远程调用(Fegin客户端 测试)
package com.hxx.alibaba.consum;

import com.hxx.alibaba.exceptionhandler.SentinelExceptionHandler;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * 使用说明:远程调用fegin --- 加入fallback 熔断器  解决连锁反应 被调用服务挂的的时候 和服务崩溃的情况
 *
 * @author huangxiangxiang
 * @version 2.0.0
 * @createTime 2019年09月10日 13:30:00
 */

@FeignClient(value = "alibaba-cloud-prod-provder",fallback = SentinelExceptionHandler.class)
public interface ConsumService {

    @RequestMapping("/alibaba/getNmae")
    public String getNmae(@RequestParam("name")  String name);

}
package com.hxx.alibaba.exceptionhandler;

import com.hxx.alibaba.consum.ConsumService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

/**
 * 使用说明:实现限流的异常处理
 *
 * @author huangxiangxiang
 * @version 2.0.0
 * @createTime 2019年08月22日 18:07:00
 */

@Component
public class SentinelExceptionHandler implements ConsumService {
    final static Logger logger = LoggerFactory.getLogger(SentinelExceptionHandler.class);
    
    @Override
    public String getNmae(String name) {
        logger.info("sentinel 熔断处理 {}", "SentinelExceptionHandler");
        return "Sentinel {由于你的访问次数太多,已为你限流、您已进入保护模式,请稍后再试!}>>>熔断处理函数";
    }
}
bootstrap.properties 配置文件

#端口已经配置到 -NACOS 注册中心
spring.application.name=alibaba-cloud-member

#配置文件的地址
spring.cloud.nacos.config.server-addr=192.168.220.129:8848
#注册中心的地址
#spring.cloud.nacos.discovery.server-addr=192.168.220.128:8848

# 限流监控中心
#spring.cloud.sentinel.transport.dashboard=192.168.220.128:8080
#spring.cloud.sentinel.eager=true
spring.cloud.nacos.config.file-extension= yaml

配置中心
在这里插入图片描述

启动看效果即可

接着使用路由网管

Alibaba-Gateway-Api 工程

package alibaba.fielt;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.collect.Maps;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.http.HttpStatus;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;

import java.util.Map;

/**
 * 使用说明: 鉴权过滤器
 *
 * @author huangxiangxiang
 * @version 2.0.0
 * @createTime 2019年09月10日 15:55:00
 */

@Component
public class AuthFilter implements GlobalFilter, Ordered {


    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        String token = exchange.getRequest().getQueryParams().getFirst("token");
        if (token == null || token.isEmpty()) {
            ServerHttpResponse response = exchange.getResponse();
            Map<Object, Object> map = Maps.newHashMap();
            map.put("code", 401);
            map.put("message", "非法请求!");
            map.put("cause", "Token not is null");

            ObjectMapper mapper = new ObjectMapper();
            try {
                byte[] bytes = mapper.writeValueAsBytes(map);
                // 输出错误信息到页面
                DataBuffer buffer = response.bufferFactory().wrap(bytes);
                response.setStatusCode(HttpStatus.UNAUTHORIZED);
                response.getHeaders().add("Content-Type", "application/json;charset=UTF-8");
                return response.writeWith(Mono.just(buffer));
            } catch (JsonProcessingException e) {
                e.printStackTrace();
            }


        }

        return chain.filter(exchange);
    }


    //设置过滤器的执行顺序
    @Override
    public int getOrder() {
        return Ordered.LOWEST_PRECEDENCE;
    }
}





package alibaba;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * 使用说明: 路由网管启动类
 *
 * @author huangxiangxiang
 * @version 2.0.0
 * @createTime 2019年09月10日 14:27:00
 */

@SpringBootApplication
@EnableDiscoveryClient
public class GatewayApp {
    public static void main(String[] args) {
        SpringApplication.run(GatewayApp.class, args);
    }
}
#1、端口已经配置到 -NACOS 注册中心
#--这个要和 Nacos 的 Data ID 前缀一致
spring.application.name=alibaba-cloud-gateway
#2、配置文件的地址
spring.cloud.nacos.config.server-addr=192.168.220.129:8848

#3、注册中心的地址
spring.cloud.nacos.discovery.server-addr=192.168.220.129:8848

#4、限流监控中心
spring.cloud.sentinel.transport.dashboard=192.168.220.129:8080
spring.cloud.sentinel.eager=true

#5、配置以yaml的形式----不配置就拉取不到
spring.cloud.nacos.config.file-extension=yaml

#路由的网关  -id -uri 去掉-  在yml中不要在 路由中加 -

配置中心 太长导致无法截图了 所以复制了一下

server:
    port: 9000 spring:
    cloud:
        gateway:
            discovery:
                locator:
                    enabled: true
            routes:
                id: ALIBABA-CLOUD-MEMBER
                uri: lb://alibaba-cloud-member
                predicates:
                  Method=GET,POST
                id: alibaba-cloud-provder
                uri: lb://alibaba-cloud-provder
                predicates:
                  Method=GET,POST logging:   level:
    org.springframework.cloud.gateway: debug

启动访问就可以了
localhost/路由/路径

搭建一个
要安装es
安装成功 访问 ip + 9200出现json 即便成功

apache-skywalking-apm-bin 这个比较复杂 先下载这个

修改application.yml 配置文件
在这里插入图片描述

上面配置好 –兄弟你完成了百分之八十了
开始链路跟踪配置、请仔细看

创建一个文件夹 把
在这里插入图片描述

把刚才下载的探针 agent 单独考出来一份放到创建的文件夹下
在这里插入图片描述

然后修改 这个工程启动的 vm参数

在这里插入图片描述

注意:这边比较坑 坑了我半天、
第一行 是刚才创建的 agent的文件夹位置要对应
第二行 要和你配置生产和消费的服务名称spring.applition.name = 一样 不然出不来效果
第三行 是Linux里面的ip +post(端口号)

-javaagent:D:\hxxcloud02\Alibaba-Cloud\Alibaba-cloud-external-skywalking\agent\skywalking-agent.jar
-Dskywalking.agent.service_name=alibaba-cloud-prod-provder
-Dskywalking.collector.backend_service=192.168.220.129:8080

配置完成 启动 出现日志就是成功了、可以看调用接口的效果了
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

还有一个MQ还没写 有空就更新下

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/153610.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Model2的基本结构「建议收藏」

    Model2的基本结构「建议收藏」DBConnection.javaUser.javaUserDAO.javaUserDAOImpl.javaPasswordError.javaUserLoginServlet.javau

  • 大数据认知作业[通俗易懂]

    大数据认知作业[通俗易懂]大数据认知实习作业目录关于作者关于大数据我对大数据的认识目前大数据应用利用大数据的实例大数据分析交通目录关于作者各位博友大家好,我是新晋小白JW,作为一名刚步入学习的小白,我会发表一些我的主观看法,望大家多多指导关于大数据大数据(bigdata),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。具有海量的数据规模、快速的数据流转、多样的数据类型和价值密度低的四大特征。大数据的5V

  • Java日志管理最佳实践「建议收藏」

    原文出处:http://www.ibm.com/developerworks/cn/java/j-lo-practicelog/。感谢原作者,感谢ibm网站,里面有好多的精华帖。日志记录是应用程序运行中必不可少的一部分。具有良好格式和完备信息的日志记录可以在程序出现问题时帮助开发人员迅速地定位错误的根源。对于开发人员来说,在程序中使用日志API记录日志并不复杂,不过遵循

  • 我的程序人生

    我的程序人生写了这么久的博客还从来没写过类似的文章,今天借此机会就写一篇吧。关于《新程序员》这本杂志我还没有看过全套的,以后有机会一定仔细拜读一下。今天借即将毕业之际来写一下我的程序人生的初始阶段,和大家聊一聊是怎样的契机让我称为一名程序员,聊一聊自己大学四年的时光以及自己技术之路的起起伏伏,分享一下自己的一些学习经验。第一次写类似的文章,不喜勿喷哈。同时谨以此文纪念自己的大学时光。

  • 风中有朵雨做的云解析_MySQL comment

    风中有朵雨做的云解析_MySQL comment其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了。默认情况下,delimiter是分号;。在命令行客户端中,如果有一行命令以分号结束,那么回车后,mysql将会执行该命令。DELIMITER$$DROPTRIGGERIFEXISTS`updateegopriceondelete`$$CREATETRIGGER`updateego

    2022年10月23日
  • navicat 15.017激活码(最新序列号破解)

    navicat 15.017激活码(最新序列号破解),https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号