文章分类 - Spring Cloud Alibaba
1
摘要:官网:http://seata.io/en-us/docs/overview/what-is-seata.html 分布式事务的产生 当系统的体量很小时,单体架构完全可以满足现有业务需求,所有的业务共用一个数据库,整个下单流程或许只用在一个方法里同一个事务下操作数据库即可。此时做到所有操作要么全部提
阅读全文
摘要:限流原理分析 在Sentinel中,所有的资源都对应一个资源名称以及一个Entry。每一个entry可以表示一个请求。而Sentinel中,会针对当前请求基于规则的判断来实现流控的控制,原理如下图所示。 当一个外部请求过来之后,会创建一个Entry,而创建Entry的同时,也会创建一系列的slot
阅读全文
摘要:Sentinel中的流量控制 上篇的几个案例中,了解了如何使用sentinel去实现限流,在Sentinel中,其实提供了两种的流量控制方式。 并发线程数 QPS 不管是什么方式,流控的核心原理是,监控应用流量的QPS或者并发线程数这些指标,去判断指标的阈值来实现对流量的控制,防止瞬时流高峰流量导致
阅读全文
摘要:什么是Sentinel Sentinel 是阿里中间件团队开源的,面向分布式服务架构的轻量级高可用流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助用户保护服务的稳定性。 官网:https://github.com/alibaba/Sentinel/wiki Sen
阅读全文
摘要:在spring cloud netflflix的文章中,分析了Environment,这个是非常重要的类,他负责管理spring的运行相关的配置信息,其中就包含application.properties。而在Spring Cloud中,如果集成Nacos作为配置中心的话,那么意味着这部分配置是属于
阅读全文
摘要:基于dataid为yaml的文件扩展配置 spring-cloud-starter-alibaba-nacos-confifig默认支持的文件格式是properties, 如果我们想用其他格式的文件,可以只需要完成以下两步: 1、在应用的 bootstrap.properties 配置文件中显示的声
阅读全文
摘要:Nacos集群采用raft算法来实现,它是相对zookeeper的选举算法较为简单的一种。选举算法的核心在 RaftCore 中,包括数据的处理和数据同步 raft算法演示地址:http://thesecretlivesofdata.com/raft/ 在Raft中,节点有三种角色: Leader:
阅读全文
摘要:接着上一篇幅说,上次说到list这个请求nacos服务端时,在nacos的源码中InstanceController这个类中,有个list接口接收到这个请求;在nacos收到请求后其实按上篇幅的讲解应该知道,他应该根据serviceid,namespace,groupName,cluster这四个元
阅读全文
摘要:上面这张图我在写eureka时就画过,这里拿来用下,因为学习同类型东西就是要学会找相同点和不同点,其实Eureka和nacos的注册和消费流程都是一样的,不同点其实就两块,第一块Eureka在数据同步时没有选举的机制,第二点在数据同步时通知客户端的方式不同; Nacos服务注册需要具备的能力 服务提
阅读全文
摘要:Prometheus Prometheus是一个开源的监控系统,起源于SoundCloud。它由以下几个核心组件构成: 数据爬虫:根据配置的时间定期的通过HTTP抓去metrics数据。 time-series 数据库:存储所有的metrics数据。 简单的用户交互接口:可视化、查询和监控所有的me
阅读全文
摘要:在Dubbo中,有很多地方涉及到服务失败重试,比如之前说的服务注册失败时,会调用一个方法把失败的请求保存起来进行重试。那Dubbo中是怎么来实现失败重试的呢?这里有个很有意思的设计,就是采用时间轮机制 出现失败重试采用时间轮的代码 注册中心失败重试 private void addFailedReg
阅读全文
摘要:在上面,已经写过服务消费者在启动时被注入一个动态代理类的实现过程,再来回顾一下服务消费者启动过程中做了什么事情: 服务启动过程中,主要会构建一个动态代理类,并且在构建动态代理之前,会从注册中心上获取服务提供者的地址,并且会订阅服务提供者的状态。然后,采用DubboProtocol协议,和服务端建立一
阅读全文
摘要:一、服务消费应具备的逻辑 如果要实现服务的消费,大致分以下几个步骤 通过@DubboReference注解生成远程服务的代理 获得目标服务的url地址 实现远程网络通信 实现负载均衡 实现集群容错 二、服务消费端流程 上图中可以看到,服务消费的流程与服务暴露的流程有点类似逆向的。同样,Dubbo 服
阅读全文
摘要:了解了服务的发布之后,我们继续来看一下服务是如何发起注册的。服务注册实际上就是把dubbo的协议url地址保存到第三方注册中心上。 final Registry registry = getRegistry(originInvoker); getRegistry 1. 把url转化为对应配置的注册中
阅读全文
摘要:在说dubbo的发布源码中插入了五、六两章节的扩展点说明,下面接着第四篇幅的doExportUrlsFor1Protocol()方法说明; 1、doExportUrlsFor1Protocol根据不同协议暴露服务 private void doExportUrlsFor1Protocol(Proto
阅读全文
摘要:一、问题的引入 前文实现了一个简单的SPI机制,但是还有一些不完善的地方,比如在使用扩展点时,如何动态的确定使用的是哪个扩展点实现。 举个例子: 比如一个扩展点SimpleExt: @SPI("impl1") public interface SimpleExt { @Adaptive String
阅读全文
摘要:一. Dubbo服务的注册流程 服务发布步骤 我们前面做的项目,如果要发布一个项目要做两件事,第一件,配置了注解@DubboService(loadbalance = "random",cluster = "failover",retries = 2);第二件是配置了注解扫描@DubboCompon
阅读全文
摘要:Dubbo的常见功能 Dubbo序列化支持java、compactedjava、nativejava、fastjson、dubbo、fst、hessian2、kryo,其中默认hessian2。其中java、compactedjava、nativejava属于原生java的序列化。 dubbo序列化
阅读全文
摘要:多协议支持 这篇内容是接着上篇文章内容来的,前面讲过dubbo多注册中心的支持,这篇就讲下多协议支持 除了Dubbo服务暴露协议Dubbo协议外,Dubbo框架还支持另外8种服务暴露协议:RMI协议、Hessian协议、HTTP协议、WebService协议、Thrift协议、Memcached协议
阅读全文
1