![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
中间件系列
文章平均质量分 56
技术砖家--Felix
I'm felix li
展开
-
分布式理论之CAP
引言CAP 理论,相信很多人都听过,它是指:一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。为什么要理解 CAP 理论?我能说出很多理由来。如果是在职场上,也许最合适的理由是,当领导给出的任务不靠谱时,我们可以依据 CAP 去否决它。比如,有这么一个任务,给你定了三大目标:既要提升系统的可用性又要保证数据的实时可见还有提升系统的容错能力看到“既要、又要、还要”,是不是想到了阿转载 2023-02-24 15:05:53 · 227 阅读 · 0 评论 -
Windows下使用Kafka的常用命令
安装路径:D:\kafka\kafka_2.13-3.2.0\启动zookeeper启动kafka查看topic列表创建topic删除topic生产消息消费消息查看kafka指定TOPIC的详情查看消费组列表查看消费组详情查看指定消费组消费情况查看查看所有消费组消费情况...原创 2022-06-28 14:15:07 · 886 阅读 · 2 评论 -
RocketMQ基本概念
1 消息模型(Message Model)RocketMQ主要由** Producer、Broker、Consumer** 三部分组成,其中Producer 负责生产消息,Consumer 负责消费消息,Broker 负责存储消息。Broker 在实际部署过程中对应一台服务器,每个 Broker 可以存储多个Topic的消息,每个Topic的消息也可以分片存储于不同的 Broker。Message Queue 用于存储消息的物理地址,每个Topic中的消息地址存储于多个 Message Queue 中。C原创 2022-05-20 15:51:29 · 86 阅读 · 0 评论 -
从头开始学《RabbitMQ》第一篇
RabbitMQ2007 年发布,是一个在AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,是当前最主流的消息中间件之一。优点:由于 erlang 语言的高并发特性,性能较好;吞吐量到万级,MQ 功能比较完备,健壮、稳定、易 用、跨平台、支持多种语言 如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP 等,支持 AJAX 文档齐全;开源提供的管理界面非常棒,用起来很好用,社区活跃度高;更新频率相当高官网更新:https://原创 2022-05-10 19:54:25 · 86 阅读 · 0 评论 -
Nacos负载均衡规则NacosRule源码分析
nacos负载均衡NacosRule是AlibabaNacos自己实现的一个负载均衡策略,可以在nacos平台中根据自定义权重进行访问。源码 NacosRuleNacosRule 继承 AbstractLoadBalancerRule,其他负载均衡规则如RoundRobinRule,也是继承此抽象类。重点是choose方法,可以通过debug进行查看。public class NacosRule extends AbstractLoadBalancerRule { priva原创 2021-12-01 20:05:27 · 2690 阅读 · 0 评论 -
设计一个秒杀系统之分布式事务
什么是分布式事务?如果概念都了解,请移步分布式事务的几种模式实现分布式事务时指会涉及多个数据库(服务)的事务,其实就是对同一数据库事务的概念扩大到对多个数据库(服务)的事务。目的是为了保证分布式系统中的数据一致性。分布式事务处理的关键是必须有一种方法可以知道事务在任何地方所做的所有动作,提交或回滚事务的决定产生统一的结果(全部提交或全部回滚)。分布式事务背景数据库事务需要满足 ACID(原子性、一致性、隔离性、持久性)四个特性。原子性(Atomicity)指事务作为整体来执行,要么全部执行原创 2021-11-04 10:12:00 · 519 阅读 · 0 评论 -
分布式事务的几种实现(阿里seata)
seata的部署和配置Seata中文官网TCC模式的实现通过阿里的Seata去运用TCC模式一个分布式的全局事务,整体是 两阶段提交 的模型。全局事务是由若干分支事务组成的,分支事务要满足 两阶段提交 的模型要求,即需要每个分支事务都具备自己的:一阶段 prepare 行为二阶段 commit 或 rollback 行为定义TCC接口由于我们使用的是SpringCloud+Feign,Feign的调用基于http,因此此处我们使用LocalTCC便可。值得注意的是,@LocalTCC一定原创 2021-11-04 10:08:43 · 471 阅读 · 0 评论 -
设计一个秒杀系统之熔断降级
为什么需要降级在开发高并发系统时,有很多方法来保护系统,如:缓存、降级、限流等。下面将介绍一下降级的策略。当系统访问量增多,服务响应时间长或者非核心服务影响了核心服务的性能时。这是如果需要保证核心服务的可用性,就需要对非核心业务执行一些降级处理。系统可以根据关键数据进行自动降级,也可以配置开关进行人工降级。降级策略分类降级按照是否可以自动化分为:自动开关降级和人工开关降级。按照读写功能可以分为:读服务降级和写服务降级。当从用户访问的整条链路来看,将会有以下多级降级策略:页面降级:当在大促时,某原创 2021-10-29 09:42:06 · 398 阅读 · 1 评论 -
设计一个秒杀系统之限流得几种方式
为什么需要限流?在了解限流之前,先了解几个相关概念。吞吐量(TPS)、QPS、并发数、响应时间(RT)几个概念做下了解,记录如下:响应时间(RT)响应时间是指系统对请求作出响应的时间。直观上看,这个指标与人对软件性能的主观感受是非常一致的,因为它完整地记录了整个计算机系统处理请求的时间。由于一个系统通常会提供许多功能,而不同功能的处理逻辑也千差万别,因而不同功能的响应时间也不尽相同,甚至同一功能在不同输入数据的情况下响应时间也不相同。所以,在讨论一个系统的响应时间时,人们通常是指该系统所有功能的原创 2021-10-21 11:51:00 · 1614 阅读 · 0 评论 -
高可用流量控制组件限流之sentinel
什么是Sentinel?随着分布式系统变得越来越流行,服务之间的可靠性变得比以往任何时候都更加重要。Sentinel是一个强大的流控组件,以“流”为切入点,涵盖流控、并发限制、熔断、自适应系统保护等多个领域,保障微服务的可靠性。Sentinel是阿里开源的项目,提供了流量控制、熔断降级、系统负载保护等多个维度来保障服务之间的稳定性。官网:https://github.com/alibaba/Sentinel/wiki2012年,Sentinel诞生于阿里巴巴,其主要目标是流量控制。2013-2017原创 2021-10-21 11:49:13 · 338 阅读 · 0 评论 -
redis缓存淘汰策略原理分析
相关配置为了适配用作缓存的场景,redis 支持缓存淘汰(eviction)并提供相应的了配置项:maxmemory设置内存使用上限,该值不能设置为小于 1M 的容量。选项的默认值为 0,此时系统会自行计算一个内存上限。maxmemory-policy熟悉 redis 的朋友都知道,每个数据库维护了两个字典:db.dict:数据库中所有键值对,也被称作数据库的 keyspacedb.expires:带有生命周期的 key 及其对应的 TTL(存留时间),因此也被称作 expire s翻译 2021-10-09 16:20:23 · 1336 阅读 · 1 评论 -
Mysql分页以及优化的几种方式。
1,分页语句m:页的长度,n:分页起始位置大小第一种写法 select * from [table_name] limit m offset n;第二种写法select * from [table_name] limit n , m;获取从第n个开始的m个记录。select * from `order` limit 10获取从第1个开始的m个记录2,分页优化直接使用limit函数进行分页,在数据小的情况下没什么问题,但数据量过大,则会显得很吃力。下面以一张简单的订单表为原创 2021-09-07 10:42:38 · 4474 阅读 · 3 评论 -
docker安装redis哨兵模式
哨兵模式**一个主机,3个端口的哨兵6379端口为master16379为slave26379为sentinel**master配置文件redis_master.confdaemonize nopidfile "/var/run/redis.pid"port 6379 timeout 300 loglevel warning logfile "redis.原创 2021-09-02 11:48:07 · 333 阅读 · 0 评论 -
redis缓存三大问题及解决方案
缓存穿透缓存穿透指的是业务系统访问不存在的数据,导致大量请求打到数据库,造成的数据库压力,甚至奔溃,此称为缓存穿透。解决方案:(一)缓存空数据如果从数据库中没查到值,可以在缓存中记录一个空值,来避免“缓存穿透”。并且要给这个空值设置一个较短的过期时间。(如果时间过长,会导致数据库更新后的数据不能及时更新到redis)缓存空对象会有两个问题:第一,空值做了缓存,意味着缓存层中存了更多的键,需要更多的内存空间 ( 如果是攻击,问题更严重 ),比较有效的方法是针对这类数据设置一个较短的过期时原创 2021-08-05 16:48:30 · 244 阅读 · 0 评论 -
分布式锁用 Redis 好,还是 ZooKeeper 好?
Redisson采用了基于NIO的Netty框架,不仅能作为Redis底层驱动客户端,具备提供对Redis各种组态形式的连接功能,对Redis命令能以同步发送、异步形式发送、异步流形式发送或管道形式发送的功能,LUA脚本执行处理,以及处理返回结果的功能,还在此基础上融入了更高级的应用方案,不但将原生的Redis Hash,List,Set,String,Geo,HyperLogLog等数据结构封装为Java里大家最熟悉的映射(Map),列表(List),集(Set),通用对象桶(Object Bucket)原创 2021-04-23 14:06:38 · 144 阅读 · 1 评论 -
Elasticsearch的bool query和and or查询(should,must,must not)
Compound queries 之 Bool queryfilter和must的区别(相关性评分)and or查询的匹配问题原创 2021-04-22 10:01:27 · 1467 阅读 · 1 评论 -
Elasticsearch查询wildcard,prefix,fuzzy,exists,terms_set等详解
Term-level queries 之 3种模糊查询和terms_set query原创 2021-04-15 19:03:10 · 400 阅读 · 1 评论 -
Elasticsearch查询Range query(范围和日期查询)
Term-level queries 之 Range query原创 2021-04-14 16:58:09 · 2840 阅读 · 2 评论 -
Elasticsearch中的多字段搜索(Full text queries query_string系列)
Full text queries(3) query_string系列原创 2021-04-14 16:38:41 · 368 阅读 · 1 评论 -
ElasticSearch查看某个字段分词结果
GET /你的index名称/你的type名称/你的id/_termvectors?fields=你的属性名转载 2021-04-13 19:42:49 · 1237 阅读 · 1 评论 -
Elasticsearch·倒排序索引与分词Analysis
倒排序索引与分词Analysis原创 2021-04-13 19:10:40 · 89 阅读 · 1 评论 -
Elasticsearch·搜索 之 Term/Terms query
基于词项的搜索 之 Term/Terms query原创 2021-04-13 18:57:33 · 405 阅读 · 1 评论 -
Elasticsearch字段类型全解
字段类型keyword用于精确term查询的字符串或数字,都按keyword类型建立long用于lt、gt等范围查询, 及avg、sum等数字类型聚合的整数,按long建立double基本同long,但是是小数date也支持lt等范围查询,且范围查询时能识别"now-1d"这样的字符串, 支持 date_histogram 日期聚合。建议写入时使用毫秒级时间戳(13位)默认支持13位的时间戳 或 strict_date_optional_time , 需要yyyy-MM-原创 2021-04-13 18:55:43 · 1168 阅读 · 1 评论 -
详解elasticsearch的搜索match、match_phrase与match_phrase_prefix
一文搞懂match、match_phrase与match_phrase_prefix的检索过程原创 2021-04-13 18:51:32 · 925 阅读 · 1 评论 -
redis实现序列号自增
1,利用redis的原子类一般都是 每天从1开始增长,生成的序列号带上日志就是唯一的了。 @Autowired private RedisTemplate redisTemplate; public String generateCodeString(String type) { String date = DatePattern.PURE_DATE_FORMAT.format(new Date()); if (redisTemplate.getCon原创 2021-01-18 16:47:40 · 4617 阅读 · 3 评论 -
kafka 线上真实环境实战及调优,参数配置详解
kafka 商业环境实战-kafka生产环境规划kafka 商业环境实战-kafka生产者和消费者吞吐量测试kafka 商业环境实战-kafka生产者Producer参数设置及参数调优建议转载 2020-10-21 16:01:45 · 220 阅读 · 0 评论 -
tomcat请求超时错误问题
1,如图在tomcat的server.xml中,connectionTimeout=20000,20000单位ms,也就是20s,超过20s的请求都会报超时。在web项目中遇到网络问题,下载文件超过20s会报这个错:2,解决办法网络问题无法更改的情况下,可以设置connectionTimeout的值,-1表示没有超时上限。...原创 2020-10-19 15:42:21 · 4116 阅读 · 0 评论 -
Springboot集成ElasticSearch详解(付代码详解)
一、ElasticSearch 简介. 1、简介. 2、特性. 3、使用场景. 二、ElasticSearch 基础概念. 1、ElaticSearch 和 DB 的关系. 2、索引. 3、文档. 4、映射. 三、SpringBoot 项目引入 ElasticSearch 依赖. 1、Maven 引入相关依赖. 2、ElasticSearch 连接配置. 四、索引操作示例. 1、Restful 操作示例. 2、Java 代码示例. 五、文档操作示例. 1、Restful 操作原创 2020-09-13 20:39:35 · 1059 阅读 · 0 评论 -
ElasticSearch常用Api详解
1 ,检查所有的节点是否已经加入集群http://localhost:9200/_cat/healthhttp://localhost:9200/_cat/nodes2,集群的恢复情况http://localhost:9200/_cat/recovery3,时间参数的URL ,URL编码问题将/转换为%2F//shop_202004 http://localhost:920...原创 2020-04-26 09:40:00 · 418 阅读 · 0 评论 -
Redis事务使用详解
Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证:事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。一个事务从开始到执行会经历以下三个阶段:开始事务。命令入队。执行事务。实例以下是一个事务的例子, 它先以 MULTI 开...原创 2019-12-09 15:32:38 · 84 阅读 · 0 评论 -
Redis容灾备份
数据备份的原因:磁盘故障, 节点失效, 诸如此类的问题都可能让你的数据消失不见, 不进行备份是非常危险的。备份数据的方式:Redis 对于数据备份是非常友好的, 因为你可以在服务器运行的时候对 RDB 文件进行复制: RDB 文件一旦被创建, 就不会进行任何修改。 当服务器要创建一个新的 RDB 文件时, 它先将文件的内容保存在一个临时文件里面, 当临时文件写入完毕时, 程序才使用 rena...原创 2019-11-18 15:55:46 · 391 阅读 · 0 评论 -
Redis的持久化方式以及优缺点
1,什么是持久化?持久化就是将数据写到磁盘中去,防止服务宕机,造成数据丢失。2,持久化方式?redis是把数据放到内存中的,因为到内存中所以快,但是容易丢失。但是redis提供了持久化的方式。RBD和AOF。(1)RDBrdb是Redis DataBase的缩写。RDB是在指定时间将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之...原创 2019-11-18 15:32:43 · 439 阅读 · 0 评论 -
Redis为什么那么快——I/O多路复用
linux IO多路复用有epoll, poll, select,epoll性能比其他几者要好。名词比较绕口,理解涵义就好。一个epoll场景:一个酒吧服务员(一个线程),前面趴了一群醉汉,突然一个吼一声“倒酒”(事件),你小跑过去给他倒一杯,然后随他去吧,突然又一个要倒酒,你又过去倒上,就这样一个服务员服务好多人,有时没人喝酒,服务员处于空闲状态,可以干点别的玩玩手机。至于epoll与sele...翻译 2019-10-21 17:00:56 · 655 阅读 · 1 评论 -
elasticsearch常用api
1,查看集群状态:windows: http://127.0.0.1:9200/_cat/health?vlinux: curl -XGET 'localhost:9200/_cat/health?v'2.创建索引,并解决创建索引后集群健康问题:windows:http://localhost:9200/index_namelinux: curl -XPUT 'localhost:92...原创 2019-01-30 10:54:09 · 1030 阅读 · 0 评论 -
elasticsearch.yml文件详解
---------------------------------- 集群设置 -----------------------------------集群名称:cluster.name: es-prod 节点类型master和data同时配置会产生一些奇异的效果:1) 当master为false,而data为true时,会对该节点产生严重负荷;2) 当master为true,而dat.........原创 2019-01-30 09:09:37 · 1280 阅读 · 0 评论 -
elasticsearch备份与迁移
集群节点均需以下操作挂载cephmount -t ceph 10.255.228.232:6789:/ /mnt/cephfs -o name=admin,secretfile=/etc/ceph/admin.secret创建备份目录(集群需要一个共享目录,采用ceph)[root@test ~]# mkdir /mnt/cephfs/esbak在master节点调整/mnt/ce...原创 2019-01-28 09:46:12 · 632 阅读 · 0 评论 -
Java实现es增删改查操作
es增删改查操作package com.kedacom.video.service.impl;import cn.hutool.core.date.DateTime;import cn.hutool.json.JSONUtil;import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObje...原创 2019-01-21 10:15:22 · 2219 阅读 · 0 评论 -
Windows下安装ElasticSearch及Head插件
环境:windows10,JDK1.8(安装es前将jdk安装好,并配置好JAVA_HOME)下载elasticsearch安装包下载地址:http://www.elasticsearch.org下载步骤:安装步骤将下载的压缩文件解压缩到目录,如:F:\elasticsearch下(这里的版本是6.5.4):(2)开启elasticsearch服务进入F:\elas...原创 2019-01-01 18:02:58 · 791 阅读 · 3 评论