06 2023 档案

摘要:限流算法常见的有三种实现:滑动时间窗口、令牌桶算法、漏桶算法。Gateway则采用了基于Redis实现的令牌桶算法。 而Sentinel内部却比较复杂: - 默认限流模式是基于滑动时间窗口算法 - 排队等待的限流模式则基于漏桶算法 - 而热点参数限流则是基于令牌桶算法 ![](https://img 阅读全文
posted @ 2023-06-30 22:44 xycccode 阅读(149) 评论(0) 推荐(0) 编辑
摘要:Hystix默认是基于线程池实现的线程隔离,每一个被隔离的业务都要创建一个独立的线程池,线程过多会带来额外的CPU开销,性能一般,但是隔离性更强。 Sentinel是基于信号量(计数器)实现的线程隔离,不用创建线程池,性能较好,但是隔离性一般。 阅读全文
posted @ 2023-06-30 22:39 xycccode 阅读(52) 评论(0) 推荐(0) 编辑
摘要:SpringCloud包含的组件很多,有很多功能是重复的。其中最常用组件包括: •注册中心组件:Eureka、Nacos等 •负载均衡组件:Ribbon •远程调用组件:OpenFeign •网关组件:Zuul、Gateway •服务保护组件:Hystrix、Sentinel •服务配置管理组件:S 阅读全文
posted @ 2023-06-30 21:30 xycccode 阅读(468) 评论(0) 推荐(0) 编辑
摘要:Nacos与Eureka有相同点,也有不同之处,可以从以下几点来描述: - **接口方式**:Nacos与Eureka都对外暴露了Rest风格的API接口,用来实现服务注册、发现等功能 - **实例类型**:Nacos的实例有永久和临时实例之分;而Eureka只支持临时实例 - **健康检测**:N 阅读全文
posted @ 2023-06-30 21:28 xycccode 阅读(336) 评论(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 阅读(321) 评论(0) 推荐(0) 编辑
摘要:Nacos内部接受到注册的请求时,不会立即写数据,而是将服务注册的任务放入一个阻塞队列里面立即响应给客户端。然后利用线程池 读取阻塞队列中的任务,异步来完成本地实例和集群中其他实例的更新,从而提高并发能力。这个阻塞队列大小为1024。 参考我的文档:https://www.cnblogs.com/w 阅读全文
posted @ 2023-06-30 20:56 xycccode 阅读(105) 评论(0) 推荐(0) 编辑
摘要:## InstanceController 进入InstanceController类,可以看到一个register方法,就是服务注册的方法了: ![](https://img2023.cnblogs.com/blog/3120037/202306/3120037-20230630182907837 阅读全文
posted @ 2023-06-30 19:53 xycccode 阅读(131) 评论(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 阅读(11) 评论(0) 推荐(0) 编辑
摘要:## 回答 Nacos采用了数据分级存储模型,最外层是 Namespace,用来隔离环境。然后是Group,用来对服务分组。接下来就是服务(Service)了,一个服务包含多个实例,但是可能处于不同的机房,因此Service下有多个集群(Cluster),Cluster下是不同的实例(Instanc 阅读全文
posted @ 2023-06-30 17:37 xycccode 阅读(539) 评论(0) 推荐(0) 编辑
摘要:导入一个微服务项目发现: Plugin 'org.springframework.boot:spring-boot-maven-plugin:' not found ![](https://img2023.cnblogs.com/blog/3120037/202306/3120037-2023062 阅读全文
posted @ 2023-06-29 19:59 xycccode 阅读(30) 评论(0) 推荐(0) 编辑
摘要:访问www.bing.com,但是问问题的时候报错: Sorry,looks like your network settings are preventing access to this feature ![](https://img2023.cnblogs.com/blog/3120037/2 阅读全文
posted @ 2023-06-29 19:39 xycccode 阅读(156) 评论(0) 推荐(0) 编辑
摘要:## 下载Nacos源码 访问GitHub官网地址:https://github.com/alibaba/nacos 找到其release页面:https://github.com/alibaba/nacos/tags 找到其中的1.4.2.版本: ![](https://img2023.cnblo 阅读全文
posted @ 2023-06-29 19:28 xycccode 阅读(137) 评论(0) 推荐(0) 编辑
摘要:# 集群扩容 ## 加入集群 1)启动一个新的MQ容器: 点击查看代码 ``` docker run -d --net mq-net \ -v ${PWD}/.erlang.cookie:/var/lib/rabbitmq/.erlang.cookie \ -e RABBITMQ_DEFAULT_U 阅读全文
posted @ 2023-06-29 16:47 xycccode 阅读(92) 评论(0) 推荐(0) 编辑
摘要:Java代码创建仲裁队列 ![](https://img2023.cnblogs.com/blog/3120037/202306/3120037-20230629154950671-1666791666.png) 点击查看代码 ``` @Bean public Queue quorumQueue() 阅读全文
posted @ 2023-06-29 16:20 xycccode 阅读(43) 评论(0) 推荐(0) 编辑
摘要:仲裁队列:仲裁队列是3.8版本以后才有的新功能,用来替代镜像队列,具备下列特征: - 与镜像队列一样,都是主从模式,支持主从数据同步 - 使用非常简单,没有复杂的配置 - 主从同步基于Raft协议,强一致 从RabbitMQ 3.8版本开始,引入了新的仲裁队列,他具备与镜像队里类似的功能,但使用更加 阅读全文
posted @ 2023-06-29 15:45 xycccode 阅读(197) 评论(0) 推荐(0) 编辑
摘要:RabbitMQ是基于Erlang语言编写,而Erlang又是一个面向并发的语言,天然支持集群模式。RabbitMQ的集群有两种模式: •**普通集群**:是一种分布式集群,将队列分散到集群的各个节点,从而提高整个集群的并发能力。 •**镜像集群**:是一种主从集群,普通集群的基础上,添加了主从备份 阅读全文
posted @ 2023-06-29 01:58 xycccode 阅读(173) 评论(0) 推荐(0) 编辑
摘要:消息堆积问题 当生产者发送消息的速度超过了消费者处理消息的速度,就会导致队列中的消息堆积,直到队列存储消息达到上限。之后发送的消息就会成为死信,可能会被丢弃,这就是消息堆积问题。 ![](https://img2023.cnblogs.com/blog/3120037/202306/3120037- 阅读全文
posted @ 2023-06-28 23:18 xycccode 阅读(23) 评论(0) 推荐(0) 编辑
摘要:当一个队列中的消息满足下列情况之一时,可以成为死信(dead letter): 消费者使用basic.reject或 basic.nack声明消费失败,并且消息的requeue参数设置为false 消息是一个过期消息,超时无人消费 要投递的队列消息满了,无法投递 如果这个包含死信的队列配置了`dea 阅读全文
posted @ 2023-06-28 20:54 xycccode 阅读(19) 评论(0) 推荐(0) 编辑
摘要:我们都知道消息在消费者端消费的时候,如果消费端出现异常,那么它会依据spring的重试机制进行重试,达到最大重试次数后,消息会被丢弃,这是由Spring内部机制决定的。 在开启重试模式后,重试次数耗尽,如果消息依然失败,则需要有MessageRecovery接口来处理,它包含三种不同的实现: Rej 阅读全文
posted @ 2023-06-28 18:13 xycccode 阅读(427) 评论(0) 推荐(0) 编辑
摘要:默认的失败重试机制是有问题的。 当消费者出现异常后,消息会不断requeue(重入队)到队列,再重新发送给消费者,然后再次异常,再次requeue,无限循环,导致mq的消息处理飙升,带来不必要的压力: 怎么办呢? 我们可以利用Spring的retry机制,在消费者出现异常时利用本地重试,而不是无限制 阅读全文
posted @ 2023-06-28 17:44 xycccode 阅读(50) 评论(0) 推荐(0) 编辑
摘要:RabbitMQ是**阅后即焚**机制,RabbitMQ确认消息被消费者消费后会立刻删除。 而RabbitMQ是通过消费者回执来确认消费者是否成功处理消息的:消费者获取消息后,应该向RabbitMQ发送ACK回执,表明自己已经处理消息。 设想这样的场景: - 1)RabbitMQ投递消息给消费者- 阅读全文
posted @ 2023-06-28 17:28 xycccode 阅读(73) 评论(0) 推荐(0) 编辑
摘要:我们看下之前启动idea测试消息发送的时候在后台生成的一条消息,现在已经在消息队列里面还没有被消费。 现在我们重启下RabbitMQ,执行linux命令:docker restart mq 看上图实时显示的错误信息,失去连接了,接下来刷新这个页面,可以发现这个对象没有了。 说明rabbit消息并不会 阅读全文
posted @ 2023-06-28 17:06 xycccode 阅读(202) 评论(0) 推荐(1) 编辑
摘要:消息队列在使用过程中,面临着很多实际问题需要思考: 消息从发送,到消费者接收,会经理多个过程: 其中的每一步都可能导致消息丢失,常见的丢失原因包括: 发送时丢失: 生产者发送的消息未送达exchange 消息到达exchange后未到达queue MQ宕机,queue将消息丢失 consumer接收 阅读全文
posted @ 2023-06-27 18:28 xycccode 阅读(18) 评论(0) 推荐(0) 编辑
摘要:Canal [kə'næl],译意为水道/管道/沟渠,canal是阿里巴巴旗下的一款开源项目,基于Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。GitHub的地址:https://github.com/alibaba/canal Canal是基于mysql的主从同步来实现的,MySQ 阅读全文
posted @ 2023-06-27 18:23 xycccode 阅读(72) 评论(0) 推荐(0) 编辑
摘要:大多数情况下,浏览器查询到的都是缓存数据,如果缓存数据与数据库数据存在较大差异,可能会产生比较严重的后果。 所以我们必须保证数据库数据、缓存数据的一致性,这就是缓存与数据库的同步。 数据同步策略 缓存数据同步的常见方式有三种: 设置有效期:给缓存设置有效期,到期后自动删除。再次查询时更新 优势:简单 阅读全文
posted @ 2023-06-27 17:01 xycccode 阅读(52) 评论(0) 推荐(0) 编辑
摘要:nginx本地缓存需要在nginx.conf文件里面开启本地缓存 lua_shared_dict,用它来设置缓存变量和大小 比如: lua_shared_dict item_cache 150m; 这段代码表示lua_shared_dict允许开启本地缓存,item_cache 为缓存变量名,150 阅读全文
posted @ 2023-06-27 16:42 xycccode 阅读(135) 评论(0) 推荐(0) 编辑
摘要:凡是实现这个InitializingBean都需要实现afterPropertiesSet方法,这个方法会在bean创建完,autowired注入后执行。这样就可以在项目启动好后再执行了,实现缓存预热的效果。 ObjectMapper是Spring默认的json处理工具,它作序列化用到的是write 阅读全文
posted @ 2023-06-27 15:26 xycccode 阅读(28) 评论(0) 推荐(0) 编辑
摘要:为了演示故障转移,我们可以先通过watch命令查看某台节点信息监控整个集群状态: watch redis-cli -p 9001 cluster nodes 接着我们让某台节点宕机,执行命令:redis-cli -p 9002 shutdown,回车。 可以发现控制台监控到9002已失去连接。等待一 阅读全文
posted @ 2023-06-26 16:06 xycccode 阅读(325) 评论(0) 推荐(0) 编辑
摘要:redis-cli --cluster提供了很多操作集群的命令,可以通过下面方式查看: redis-cli --cluster help执行如下: 比如,添加节点的命令: new_host代表需要添加的节点ip, exitsting_host代表已经存在的主机IP,也即集群中已经有的,为什么需要知道 阅读全文
posted @ 2023-06-26 15:30 xycccode 阅读(36) 评论(0) 推荐(0) 编辑
摘要:今天在配置redis主从配置时,从实例报错:Error condition on socket for SYNC: Connection refused 我是在单体机上配置三个实例,实现redis的一主二从。 1.首先,创建三个文件夹,名字分别叫7001、7002、7003(我喜欢将应用安装在tmp 阅读全文
posted @ 2023-06-25 18:33 xycccode 阅读(941) 评论(0) 推荐(0) 编辑
摘要:最近在安装 Python 的时候发生了很奇怪的现象(安装前):从命令行执行 python 并不会输出python版本信息,似乎也没有其他反应,也无报错(不提示“不是内部或外部命令,也不是可运行的程序”),再次输入命令 where python显示C:\Users\quxw\AppData\Local 阅读全文
posted @ 2023-06-25 09:25 xycccode 阅读(501) 评论(0) 推荐(1) 编辑
摘要:问题:ping百度不通: ping: www.baidu.com: Temporary failure in name resolution cat /etc/sysconfig/network-scripts/ifcfg-ens33 vi /etc/sysconfig/network-script 阅读全文
posted @ 2023-06-21 21:10 xycccode 阅读(81) 评论(0) 推荐(0) 编辑
摘要:不接受的url异常:Driver com.mysql.jdbc.Driver claims to not accept jdbcUrl,说明是yml文件的数据库url问题 仔细检查url是否有编写错误即可。 D:\softTool\Java\jdk1.8.0_281\bin\java.exe -XX 阅读全文
posted @ 2023-06-20 20:07 xycccode 阅读(230) 评论(0) 推荐(0) 编辑
摘要:问题:springcloud在启动springboot微服务时出现循环依赖加载的问题,主要是因为类的创建顺序问题导致,允许的情况是子包类引用父包类时,不允许的情况是类与类同包下调用。 D:\softTool\Java\jdk1.8.0_281\bin\java.exe -XX:TieredStopA 阅读全文
posted @ 2023-06-19 17:33 xycccode 阅读(571) 评论(0) 推荐(0) 编辑
摘要:查看虚拟机的/etc/nsswitch.conf文件中的‘hosts’行包含了‘dns’没有,没有的情况下就要将其加进来 hosts: files dns 很多都是 hosts: files 在Linux系统中,/etc/nsswitch.conf文件是用于配置名称解析顺序的,其中hosts行指定了 阅读全文
posted @ 2023-06-07 01:13 xycccode 阅读(262) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示