SpringCloudAlibaba分布式组件详解

这篇文章主要介绍了简单了解SpringCloudAlibaba分布式组件相关知识,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

SpringCloudAlibaba分布式组件详解,久久派带你了解更多相关信息。

目录
  • 分布式组件-SpringCloud Alibaba
  • 简介
  • Nacos注册中心
  • OpenFeign远程调用
  • 配置中心-简单实例
  • 配置中心-命名空间
  • 配置分组的概念
  • 配置中心-加载多配置集
  • Gateway网关核心
  • Gateway创建测试网关
  • 总结

分布式组件-SpringCloud Alibaba

SpringCloudAlibaba分布式组件详解

简介

SpringCloudAlibaba分布式组件详解

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.ymlspring:  application:    name: gulimall-coupon  cloud:    nacos:      discovery:        server-addr: localhost:8848        

第四步:在启动类上标注注解@EnableDiscoveryClient

第五步:访问nacos路径:127.0.0.1:8848/nacos/#/login

SpringCloudAlibaba分布式组件详解

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@SpringBootApplicationpublic 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\"));    }}

SpringCloudAlibaba分布式组件详解

配置中心-简单实例

1.在gulimall-common pom.xml文件加入<!--        配置中心来做配置管理--><dependency>  <groupId>com.alibaba.cloud</groupId>  <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency>

2.在gulimall-coupon创建bootstrap.ymlspring:  application:    name: gulimall-coupon  cloud:    nacos:      config:        server-addr: localhost:8848

3.在application.properties

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

SpringCloudAlibaba分布式组件详解

SpringCloudAlibaba分布式组件详解

SpringCloudAlibaba分布式组件详解

SpringCloudAlibaba分布式组件详解

配置中心-命名空间

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

SpringCloudAlibaba分布式组件详解

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

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

SpringCloudAlibaba分布式组件详解

SpringCloudAlibaba分布式组件详解

SpringCloudAlibaba分布式组件详解

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

SpringCloudAlibaba分布式组件详解

配置分组的概念

SpringCloudAlibaba分布式组件详解

SpringCloudAlibaba分布式组件详解

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

SpringCloudAlibaba分布式组件详解

SpringCloudAlibaba分布式组件详解

配置中心-加载多配置集

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

SpringCloudAlibaba分布式组件详解

拆分后

SpringCloudAlibaba分布式组件详解

SpringCloudAlibaba分布式组件详解

Gateway网关核心

Gateway创建测试网关

1.创建网关服务gulimall-gateway

2.application.propertiesspring.cloud.nacos.discovery.server-addr=127.0.0.1:8848spring.application.name=gulimall-gatewayserver.port=88

3.bootstrap.ymlspring:  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.ymlspring:  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

总结

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

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

(0)
nan
上一篇 2021-08-26
下一篇 2021-08-26

相关推荐

发表回复

登录后才能评论