SpringCloudAlibaba分布式组件详解
目录
- 分布式组件-SpringCloud Alibaba
- 简介
- Nacos注册中心
- OpenFeign远程调用
- 配置中心-简单实例
- 配置中心-命名空间
- 配置分组的概念
- 配置中心-加载多配置集
- Gateway网关核心
- Gateway创建测试网关
- 总结
分布式组件-SpringCloud Alibaba
文章图片
简介
文章图片
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
com.alibaba.cloud spring-cloud-alibaba-dependencies2.1.0.RELEASE pom import
Nacos注册中心
第一步:gulimall-common的pom.xml加入依赖com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery
第二步:下载nacos地址:github.com/alibaba/nacos/releases版本:1.1.3
第三步:修改你要将那个服务注册上去的application.ymlspring:application:name: gulimall-couponcloud:nacos:discovery:server-addr: localhost:8848
第四步:在启动类上标注注解@EnableDiscoveryClient
第五步:访问nacos路径:127.0.0.1:8848/nacos/#/login
文章图片
OpenFeign远程调用
需求:gulimall-member会员服务调用gulimall-coupon优惠券服务
1.在gulimall-common pom.xml文件加入org.springframework.cloud spring-cloud-starter-openfeign
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 {@Autowiredprivate MemberService memberService; @AutowiredCouponFeignService couponFeignService; @RequestMapping("/coupons")public R test(){MemberEntity memberEntity = new MemberEntity(); memberEntity.setNickname("张三"); Rmembercoupons = couponFeignService.membercoupons(); return R.ok().put("member",memberEntity).put("coupons",membercoupons.get("coupons")); }}
文章图片
配置中心-简单实例
1.在gulimall-common pom.xml文件加入com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config
2.在gulimall-coupon创建bootstrap.ymlspring:application:name: gulimall-couponcloud:nacos:config:server-addr: localhost:8848
3.在application.properties
//此方法有了注册中心后,不再使用application.propertiescoupon.user.name=zhangsancoupon.user.age=18
文章图片
文章图片
文章图片
文章图片
配置中心-命名空间
了解几个概念1.命名空间:配置隔离;默认是public2.配置集:所有配置的集合3.配置集id:类似于文件名4.配置分组
【SpringCloudAlibaba分布式组件详解】
文章图片
刚刚,我们创建的gulimall-coupon.properties是在public的命名空间,里面的内容是name=zhangsan,age=24
现在,我们在prop下也创建一个gulimall-coupon.properties
文章图片
文章图片
文章图片
以上,演示完了命名空间,里面命名空间做环境的隔离;其实是通过dev、prop、public(开发、生成、默认)等角度来命名
现在,我们要给每一个微服务创建自己的命名空间。
文章图片
配置分组的概念
文章图片
文章图片
最终版使用:每一个微服务创建自己的服务命名空间;使用配置分组来确定是dev、prop、test。
文章图片
文章图片
配置中心-加载多配置集
随着我们服务越来越多,一个yml文件里面需要配置mysql、redis、server.port等等的配置。现在,我们要将他们抽取出来。
文章图片
拆分后
文章图片
文章图片
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-couponcloud:nacos:discovery:server-addr: localhost:8848config:server-addr: localhost:8848#file-extension: ymlnamespace: ea65d118-135f-4928-bbc6-c8ec85b3fd78
4.application.ymlspring:cloud:sentinel:transport:#配置sentinel dashboard地址dashboard: localhost:8080gateway: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
总结 本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注脚本之家的更多内容!
推荐阅读
- 深入浅出谈一下有关分布式消息技术(Kafka)
- 动态组件与v-once指令
- vue组件中为何data必须是一个函数()
- (六)Component初识组件
- Spring|Spring Boot 自动配置的原理、核心注解以及利用自动配置实现了自定义 Starter 组件
- vuex|vuex 基础结构
- SwiftUI|SwiftUI iOS 瀑布流组件之仿CollectionView不规则图文混合(教程含源码)
- KubeDL HostNetwork(加速分布式训练通信效率)
- Vue组件之事件总线和消息发布订阅详解
- 实操Redission|实操Redission 分布式服务