Spring Cloud Alibaba简单归纳

一、创建微服务

将RestTemplate交给Spring管理

@Configuration
public class ConfigBean(){

	@Bean 
	public RestTemplate restTemplate() { 
		return new RestTemplate(); 
	} 
}

通过restTemplate调用其他微服务。

二、Nacos

Nacos的作用就是一个注册中心,用来管理注册上来的各个微服务。

如何将微服务注册到Nacos中
  1. 在pom.xml中添加nacos的依赖
  2. 在主类上添加@EnableDiscoveryClient注解
	@SpringBootApplication 
	@EnableDiscoveryClient 
	public class XXXApplication {}
  1. 在application.yml中添加nacos服务的地址
如何实现微服务调用
	ServiceInstance serviceInstance = discoveryClient.getInstances("微服务名").get(0);
	
	//获取微服务地址及端口
	String url = serviceInstance.getHost() + ":" + serviceInstance.getPort(); 
	
	//使用restTemplate调用微服务(此处以Product为例)
	Product product = restTemplate.getForObject( 
	"http://" + url + "/product/" + pid, Product.class); 

三、实现服务调用的负载均衡

在这里插入图片描述

自定义规则的负载均衡

当启动了两个相同的微服务(端口不同)时

	List<ServiceInstance> instances = discoveryClient.getInstances("微服务名");
	int index = new Random().nextInt(instances.size()); 
	
	//实现随机去请求一个微服务
	ServiceInstance serviceInstance = instances.get(index); 

基于Ribbon实现负载均衡

第1步:在RestTemplate 的生成方法上添加@LoadBalanced注解

	@Bean 
	@LoadBalanced 
	public RestTemplate restTemplate() { 
		return new RestTemplate(); 
	} 

第2步:直接使用微服务名字, 从nacos中获取服务地址

	//直接使用微服务名字, 从nacos中获取服务地址 
	String url = "service-product"; 
	
	//使用restTemplate调用微服务(此处以Product为例)
	Product product = restTemplate.getForObject( 
	"http://" + url + "/product/" + pid, Product.class); 

第三步:可以通过修改配置来调整Ribbon的负载均衡策略(不太懂,放着再说)

service-product: # 调用的提供者的名称 
	ribbon: 
		NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

基于Feign实现服务调用

Feign是Spring Cloud提供的一个声明式的伪Http客户端, 它使得调用远程服务就像调用本地服务一样简单, 只需要创建一个接口并添加一个注解即可。

Nacos很好的兼容了Feign, Feign默认集成了 Ribbon, 所以在Nacos下使用Fegin默认就实现了负载均衡的效果。

1. 加入Fegin的依赖
2. 在主类上添加Fegin的注解

	@SpringBootApplication 
	@EnableDiscoveryClient 
	@EnableFeignClients//开启Fegin 
	public class XXXApplication {}

3. 创建一个service, 并使用Fegin实现微服务调用

四、Sentinel实现服务容错(先跳过)


五、Gateway

在这里插入图片描述

路由(Route) 是 gateway 中最基本的组件之一,表示一个具体的路由信息载体。主要定义了下面的几个信息:

id:路由标识符,区别于其他 Route。
uri:路由指向的目的地 uri,即客户端请求最终被转发到的微服务。
order:用于多个 Route 之间的排序,数值越小排序越靠前,匹配优先级越高。
predicate:断言的作用是进行条件判断,只有断言都返回真,才会真正的执行路由。
fifilter:过滤器用于修改请求和响应信息。

配置文件写法(结合nacos):

server: 
	port: 8000
	
spring: 
	application: 
		name: api-gateway 
	cloud: 
		nacos: 
			discovery: 
				server-addr: 127.0.0.1:8848 
		gateway: 
			discovery: 
				locator: 
					enabled: true # 让gateway可以发现nacos中的微服务
					lower-case-service-id: true # 表示将请求路径的服务名配置改成小写  因为服务注册的时候,向注册中心注册时将服务名转成大写的了
			routes: 
			- id: route1
			uri: lb://admin # lb指的是从nacos中按照名称获取微服务,并遵循负载均衡策略
			predicates: 
				- Path=/admin/** 

六、Sluth链路追踪(跳过)


七、MQ消息队列

应用场景:异步解耦、流量削峰
在这里插入图片描述
流量削峰是消息队列 MQ 的常用场景,一般在秒杀或团队抢购(高并发)活动中使用广泛。在秒杀或团队抢购活动中,由于用户请求量较大,导致流量暴增,秒杀的应用在处理如此大量的访问流量后,下游的通知系统无法承载海量的调用量,甚至会导致系统崩溃等问题而发生漏通知的情况。为解决这些问题,可在应用和下游通知系统之间加入消息队列 MQ。

学习Rabbit MQ

八、SMS短信服务

在这里插入图片描述
SMS短信服务详细教程

详细学习资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值