SpringCloudAlibaba分布式组件详解

网友投稿 285 2022-10-02


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,即分布式事务

gulimallhttp://-common的pom.xml

com.alibaba.cloud

spring-cloud-alibaba-dependencies

2.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.yml

spring:

application:

name: gulimall-coupon

cloud:

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

@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 pohttp://m.xml文件加入

com.alibaba.cloud

spring-cloud-starter-alibaba-nacos-config

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等等的配置。现在,我们要将他们抽取出来。

拆分后

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://baidu.com

# predicates:

# - Query=uri,baidu

#

# - id: qq_route

# uri: https://qq.com

# predicates:

# - Query=uri,qq

总结

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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:渗透之——操作系统支持的管道符(在命令执行漏洞中常用)
下一篇:渗透之——SQL注入绕过技术总结(sql注入 绕过)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~