SpringCloud Alibaba 相关

1 .Ribbon 负载均衡:轮询,权重,随机...

Nacos底层有依赖到Ribbon,用来做负载均衡 。

使用方法:加@LoadBalance 注解,可以用注册到Nacos的serviceName来替代ip:port。

例:http://serviceName/url

Ribbon有一个关键的接口,LoadBalanceInterceptor:作用是定时轮询访问Nacos接口,拉取Nacos注册中心拉取最新注册信息(服务列表)到本地,接收name+url,拆分取出name,获取name相关的ip:port,再通过指定的负载均衡方式,将请求分发到各个机器。

2. Feign 实现类似dubbo的像访问本地方法一样,访问远端服务。

1)@EnableFeignClient

2) @FeignClient(value="stock-service") -- service name 

public interface StockService{

//接口1

@PostMapping(value = "/XXX/XXX")

String deductStock (@RequestBody Order order);

//接口2

···

}

Feign 会生成代理,组装url,拼接serviceName+url,依赖Ribbon,解析域名,...

3. Sentinel 降级,熔断,分布式系统的流量防卫兵:保证高可用,一个服务报错不能影响主链路。

feign:

sentinel:

enabled:true

3-1 降级:

@FeignClient(value ="credit-service",fallback = CreditServiceFallback.class)

配一个fallback的实现类,CreditServiceFallback implements CreditService(这个类写feign接口)

3-2 限流:

管理界面可以修改QPS,线程数等

3-3 熔断

管理界面点击熔断,配置异常比例,RT,异常数等。

超过几秒内的异常比例,不调用方法,直接调用fallback方法

原理:

通过滑动时间窗:Metric实时统计线上运行统计。通过filter分时间段统计指标,例每秒一个格子,将时间窗格的数据次数求和

4 Seata:分布式事务: 一般不用,在蚂蚁金服用的比较多。因为和钱相关,需要强一致,及时效性。但是加锁太多,效率太慢。

加依赖,回滚日志表配置

全局 @GlobalTransactional

本地 @Transactional

TCC模式:

AT模式:(默认)反向补偿 uodo Log

Nacos 服务注册:

引入nacos-discory依赖

开启心跳任务,每隔几秒访问http接口,向Nacos发起心跳。

Nacos 高并发架构

 

zookeeper 的集群架构:cp 一致性

Eureka:ap 可用性

Nacos:CP模式Raft协议实现,AP模式

如何实现高并发:每秒有大量数据注册,需要写入注册表。如果加锁,性能会较低。

架构设计:

CopyOnWrite:

Eureka:

客户端每隔30s 从注册中心拉取服务列表,动态发现注册信息。

如何实现注册表信息?ConcurrentHashMap<String,Map<String,List>>

 为什么用map,不存数据库?

用内存结构,效率更高,ConcurrentHashMap支持并发,查找快

多级缓存设计思想:

在拉取注册表的时候:

首先从ReadOnlyCacheMap里查缓存的注册表

若没有,找ReadWriteCacheMap里查缓存的注册表

如果还没有,从内存中获取实际注册表数据

在注册表发生变更的时候:

在内存中更新变更的注册表数据,同时过期掉ReadWriteCacheMap,

此过程不会影响ReadOnlyCacheMap提供人家查询注册表

默认每30s Eureka Server会将ReadWriteCacheMap更新到ReadOnlyCacheMap

默认每180sEureka Server会将ReadWriteCacheMap里的数据失效

下次有服务拉取注册表,又会从内存中获取最新的数据了,同时填充各级缓存。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值