摘要: 限流算法常见的有三种实现:滑动时间窗口、令牌桶算法、漏桶算法。Gateway则采用了基于Redis实现的令牌桶算法。 而Sentinel内部却比较复杂: - 默认限流模式是基于滑动时间窗口算法 - 排队等待的限流模式则基于漏桶算法 - 而热点参数限流则是基于令牌桶算法 ![](https://img 阅读全文
posted @ 2023-06-30 22:44 xycccode 阅读(120) 评论(0) 推荐(0) 编辑
摘要: Hystix默认是基于线程池实现的线程隔离,每一个被隔离的业务都要创建一个独立的线程池,线程过多会带来额外的CPU开销,性能一般,但是隔离性更强。 Sentinel是基于信号量(计数器)实现的线程隔离,不用创建线程池,性能较好,但是隔离性一般。 阅读全文
posted @ 2023-06-30 22:39 xycccode 阅读(45) 评论(0) 推荐(0) 编辑
摘要: SpringCloud包含的组件很多,有很多功能是重复的。其中最常用组件包括: •注册中心组件:Eureka、Nacos等 •负载均衡组件:Ribbon •远程调用组件:OpenFeign •网关组件:Zuul、Gateway •服务保护组件:Hystrix、Sentinel •服务配置管理组件:S 阅读全文
posted @ 2023-06-30 21:30 xycccode 阅读(449) 评论(0) 推荐(0) 编辑
摘要: Nacos与Eureka有相同点,也有不同之处,可以从以下几点来描述: - **接口方式**:Nacos与Eureka都对外暴露了Rest风格的API接口,用来实现服务注册、发现等功能 - **实例类型**:Nacos的实例有永久和临时实例之分;而Eureka只支持临时实例 - **健康检测**:N 阅读全文
posted @ 2023-06-30 21:28 xycccode 阅读(306) 评论(0) 推荐(0) 编辑
摘要: ![](https://img2023.cnblogs.com/blog/3120037/202306/3120037-20230630211531269-1613728409.png) 刚开始: private final Map> serviceMap = new ConcurrentHashM 阅读全文
posted @ 2023-06-30 21:26 xycccode 阅读(296) 评论(0) 推荐(0) 编辑
摘要: Nacos内部接受到注册的请求时,不会立即写数据,而是将服务注册的任务放入一个阻塞队列里面立即响应给客户端。然后利用线程池 读取阻塞队列中的任务,异步来完成本地实例和集群中其他实例的更新,从而提高并发能力。这个阻塞队列大小为1024。 参考我的文档:https://www.cnblogs.com/w 阅读全文
posted @ 2023-06-30 20:56 xycccode 阅读(102) 评论(0) 推荐(0) 编辑
摘要: ## InstanceController 进入InstanceController类,可以看到一个register方法,就是服务注册的方法了: ![](https://img2023.cnblogs.com/blog/3120037/202306/3120037-20230630182907837 阅读全文
posted @ 2023-06-30 19:53 xycccode 阅读(112) 评论(0) 推荐(0) 编辑
摘要: Ctrl+Alt+h 表示查看当前方法的实现类或者说当前类的继承关系 ![](https://img2023.cnblogs.com/blog/3120037/202306/3120037-20230630194015434-1383842110.png) Ctrl+Alt+b 表示当前方法有哪些实 阅读全文
posted @ 2023-06-30 19:42 xycccode 阅读(9) 评论(0) 推荐(0) 编辑
摘要: ## 回答 Nacos采用了数据分级存储模型,最外层是 Namespace,用来隔离环境。然后是Group,用来对服务分组。接下来就是服务(Service)了,一个服务包含多个实例,但是可能处于不同的机房,因此Service下有多个集群(Cluster),Cluster下是不同的实例(Instanc 阅读全文
posted @ 2023-06-30 17:37 xycccode 阅读(429) 评论(0) 推荐(0) 编辑