SpringCloudAlibaba分布式组件详解

 更新时间:2021年08月26日 11:21:59   作者:东北卖参哪些年  
这篇文章主要介绍了简单了解Spring Cloud Alibaba分布式组件相关知识,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

分布式组件-SpringCloud Alibaba

image-20210824212747220

简介

image-20210824212950389

SpringCloudAlibaba的优势:
阿里使用过的组件经历了考验,性能强悍,设计合理,现在开源出来大家用成套的产品搭配完善的可视化界面给开发运维带来了极大的便利,搭建简单,学习曲线低。
SpringCloud Alibaba-Nacos:注册中心(服务发现/注册)
SpringCloud Alibaba-Nacos:配置中心(动态配置管理)
SpringCloud-Ribbon:负载均衡
SpringCloud-Feign:声明式HTTP客户端(调用远程服务)
SpringCloud Alibaba-Sentinel:服务容错(限流、降级、熔断)
SpringCloud-Gateway:API网关
SpringCloud-Sleuth:调用链监控
SpringCloud Alibaba-Seata:原 Fescar,即分布式事务

gulimall-common的pom.xml

<dependencyManagement>
    <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-alibaba-dependencies</artifactId>
      <version>2.1.0.RELEASE</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

Nacos注册中心

第一步:gulimall-common的pom.xml加入依赖
<!--        服务注册/发现-->
<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
第二步:下载nacos
地址:github.com/alibaba/nacos/releases
版本:1.1.3
第三步:修改你要将那个服务注册上去的application.yml
spring:
  application:
    name: gulimall-coupon
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848        
第四步:在启动类上标注注解
@EnableDiscoveryClient
第五步:访问nacos
路径:127.0.0.1:8848/nacos/#/login

image-20210824220607484

OpenFeign远程调用

需求:gulimall-member会员服务调用gulimall-coupon优惠券服务

1.在gulimall-common pom.xml文件加入
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2.//gulimall-coupon
@RestController
@RequestMapping("coupon/coupon")
public class CouponController {
    @RequestMapping("/member/list")
    public R membercoupons(){
        CouponEntity couponEntity = new CouponEntity();
        couponEntity.setCouponName("满100减10");
        return R.ok().put("coupon",Arrays.asList(couponEntity));
    }
}
3.//gulimall-member
@FeignClient("gulimall-coupon")
public interface CouponFeignService {
    @RequestMapping("/coupon/coupon/member/list")
    public R membercoupons();
}
4.//开启远程调用功能:EnableFeignClients
@EnableRedisHttpSession
@EnableFeignClients(basePackages = "com.xunqi.gulimall.member.feign")
@EnableDiscoveryClient
@SpringBootApplication
public class GulimallMemberApplication {
    public static void main(String[] args) {
        SpringApplication.run(GulimallMemberApplication.class, args);
    }
}
5.调用
@RestController
@RequestMapping("member/member")
public class MemberController {
    @Autowired
    private MemberService memberService;
    @Autowired
    CouponFeignService couponFeignService;
    @RequestMapping("/coupons")
    public R test(){
        MemberEntity memberEntity = new MemberEntity();
        memberEntity.setNickname("张三");
        R  membercoupons = couponFeignService.membercoupons();
        return R.ok().put("member",memberEntity).put("coupons",membercoupons.get("coupons"));
    }
}

image-20210824222759686

配置中心-简单实例

1.在gulimall-common pom.xml文件加入
<!--        配置中心来做配置管理-->
<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.在gulimall-coupon创建bootstrap.yml
spring:
  application:
    name: gulimall-coupon
  cloud:
    nacos:
      config:
        server-addr: localhost:8848

3.在application.properties

//此方法有了注册中心后,不再使用
application.properties
coupon.user.name=zhangsan
coupon.user.age=18

image-20210824224404904

image-20210824224655230

image-20210824224805121

image-20210824224934241

配置中心-命名空间

了解几个概念
1.命名空间:配置隔离;默认是public
2.配置集:所有配置的集合
3.配置集id:类似于文件名
4.配置分组

image-20210824225506462

刚刚,我们创建的gulimall-coupon.properties是在public的命名空间,里面的内容是name=zhangsan,age=24

现在,我们在prop下也创建一个gulimall-coupon.properties

image-20210824225706715

image-20210824230011812

image-20210824230053911

以上,演示完了命名空间,里面命名空间做环境的隔离;其实是通过dev、prop、public(开发、生成、默认)等角度来命名
现在,我们要给每一个微服务创建自己的命名空间。

image-20210824230555714

配置分组的概念

image-20210824230907837

image-20210824230950909

最终版使用:每一个微服务创建自己的服务命名空间;使用配置分组来确定是dev、prop、test。

image-20210824231237000

image-20210824231342569

配置中心-加载多配置集

随着我们服务越来越多,一个yml文件里面需要配置mysql、redis、server.port等等的配置。现在,我们要将他们抽取出来。

image-20210824231604343

拆分后

image-20210824231721588

image-20210824233206200

Gateway网关核心

Gateway创建测试网关

1.创建网关服务gulimall-gateway

2.application.properties
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.application.name=gulimall-gateway
server.port=88
3.bootstrap.yml
spring:
  application:
    name: gulimall-coupon
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
      config:
        server-addr: localhost:8848
#        file-extension: yml
        namespace: ea65d118-135f-4928-bbc6-c8ec85b3fd78
4.application.yml
spring:
  cloud:
    sentinel:
      transport:
        #配置sentinel dashboard地址
        dashboard: localhost:8080
    gateway:
      routes:
#        - id: test_route
#          uri: https://www.baidu.com
#          predicates:
#            - Query=uri,baidu
#
#        - id: qq_route
#          uri: https://www.qq.com
#          predicates:
#            - Query=uri,qq

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • 简述mybatis大于小于的转义

    简述mybatis大于小于的转义

    这篇文章主要介绍了mybatis大于小于的转义以及xml中常用转义字符,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • 用java实现斗地主发牌过程

    用java实现斗地主发牌过程

    这篇文章主要为大家详细介绍了用java实现斗地主发牌过程,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • Java中synchronized的四种用法详解

    Java中synchronized的四种用法详解

    这篇文章主要介绍了Java中synchronized的四种用法详解,当我们处理多线程处理同步问题的时候就会用到synchronized这个关键字,下面介绍下synchronized的四种用法,需要的朋友可以参考下
    2024-01-01
  • Java中的@Conditional条件注解详细解析

    Java中的@Conditional条件注解详细解析

    这篇文章主要介绍了Java中的@Conditional条件注解详细解析,@Conditional是Spring4新提供的注解,它的作用是按照一定的条件进行判断,满足条件给容器注册bean,需要的朋友可以参考下
    2023-11-11
  • 浅谈Mybatis #和$区别以及原理

    浅谈Mybatis #和$区别以及原理

    这篇文章主要介绍了浅谈Mybatis #和$区别以及原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • MyBatis中执行相关SQL语句的方法

    MyBatis中执行相关SQL语句的方法

    本文主要介绍了MyBatis中执行相关SQL语句的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • Java的分支结构与循环你知道多少

    Java的分支结构与循环你知道多少

    这篇文章主要为大家详细介绍了Java的分支结构与循环,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • Spring容器-BeanFactory和ApplicationContext使用详解

    Spring容器-BeanFactory和ApplicationContext使用详解

    这篇文章主要为大家介绍了Spring容器-BeanFactory和ApplicationContext的使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Java反转字符串和相关字符编码的问题解决

    Java反转字符串和相关字符编码的问题解决

    反转字符串一直被当作是简单问题,大家的思想主要就是利用遍历,首尾交换字符实现字符串的反转。例如下面的代码,就可以简单实现反转。
    2013-05-05
  • Java精品项目瑞吉外卖之员工新增篇

    Java精品项目瑞吉外卖之员工新增篇

    这篇文章主要为大家详细介绍了java精品项目-瑞吉外卖订餐系统,此项目过大,分为多章独立讲解,本篇内容为新增员工功能的实现,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05

最新评论