这篇文章给大家分享的是有关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>
第一步: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
需求: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")); } }
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
了解几个概念 1.命名空间:配置隔离;默认是public 2.配置集:所有配置的集合 3.配置集id:类似于文件名 4.配置分组
刚刚,我们创建的gulimall-coupon.properties是在public的命名空间,里面的内容是name=zhangsan,age=24
现在,我们在prop下也创建一个gulimall-coupon.properties
以上,演示完了命名空间,里面命名空间做环境的隔离;其实是通过dev、prop、public(开发、生成、默认)等角度来命名
现在,我们要给每一个微服务创建自己的命名空间。
最终版使用:每一个微服务创建自己的服务命名空间;使用配置分组来确定是dev、prop、test。
随着我们服务越来越多,一个yml文件里面需要配置mysql、redis、server.port等等的配置。现在,我们要将他们抽取出来。
拆分后
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
感谢各位的阅读!关于“SpringCloudAlibaba分布式组件的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。