自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小城我家

菜鸟成长记

  • 博客(506)
  • 资源 (20)
  • 问答 (1)
  • 收藏
  • 关注

原创 IDEA 试用

删除C:\Users\Administrator\AppData\Roaming\JetBrains\IntelliJIdea2020.2目录删除C:\Users\Administrator\AppData\Roaming\JetBrains\IntelliJIdea2020.2\eval目录下的所有文件删除C:\Users\Administrator\AppData\Roaming\JetBrains\IntelliJIdea2020.2\options 目录下的other.xml文件删除注

2020-10-10 13:40:21 2118

原创 mybatis中大于等于小于等于的写法

原符号 < <= > >= & ' "替换符号 &lt; &lt;= &gt; &gt;= &amp; &apos; &quot;

2021-04-14 17:04:02 461

原创 nacos 本地配置覆盖远程 本地配置优先

在nacos对应的配置文件中,一定要在 nacos上配置不然不生效spring: cloud: config: override-none: true allow-override: true override-system-properties: false

2021-04-01 17:24:52 11319 1

原创 Elasticsearch-并发冲突处理机制

详解并发冲突在电商场景下,工作流程为:读取商品信息,包括库存数量用户下单购买更新商品信息,将库存数减一如果是多线程操作,就可能有多个线程并发的去执行上述的3步骤流程,假如此时有两个人都来读取商品数据,两个线程并发的服务于两个人,同时在进行商品库存数据的修改。假设库存为100件 正确的情况:线程A将库存-1,设置为99件,线程B接着读取99件,再-1,变为98件。如果A,B线程都读取的为100件,A处理完之后修改为99件,B处理完之后再次修改为99件,此时结果就出错了解决方案悲观锁

2020-11-24 19:05:38 3880

原创 Elasticsearch-索引文档存储段合并机制(segment merge、policy、 optimize)

索引文档存储段合并机制(segment merge、policy、 optimize)段合并机制由于自动刷新流程每秒会创建一个新的段 ,这样会导致短时间内的段数量暴增。而段数目太多会带来较大的麻烦。 每一个段都会消耗文件句柄、内存和 CPU 运行周期。更重要的是,每个搜索请求都必须轮流检查每个段;所以段越多,搜索也就越慢。Elasticsearch 通过在后台进行段合并来解决这个问题。小的段被合并到大的段,然后这些大的段再被合并到更大的段。段合并的时候会将那些旧的已删除文档 从文件系统中清除。 被删除

2020-11-24 17:55:38 1542

原创 Elasticsearch-索引文档写入和近实时搜索原理

索引文档写入和近实时搜索原理基本概念Segments in Lucene众所周知,Elasticsearch 存储的基本单元是 shard , ES 中一个 Index 可能分为多个 shard, 事实上每个 shard 都是一个 Lucence 的 Index,并且每个 Lucence Index 由多个 Segment 组成, 每个Segment 事实上是一些倒排索引的集合, 每次创建一个新的 Document , 都会归属于一个新的Segment, 而不会去修改原来的 Segment 。且每

2020-11-24 17:52:07 638

原创 Elasticsearch-数据模型

什么是数据模型数据模型是抽象描述现实世界的一种工具和方法,是通过抽象实体及实体之间联系的形式,用图形化的形式去描述业务规则的过程,从而表示现实世界中事务以及相互关系的一种映射。核心概念:实体:现实世界中存在的可以相互区分的事物或概念称为实体。实体可以分为事物实体和概念实体。例如:一个学生、一个程序员等是事物实体。一门课、一个班级等称为概念实体。实体的属性:每个实体都有自己的特征,利用实体的属性可以描述不同的实体。例如。学生实体的属性为姓名、性别、年龄等数据建模的过程数据建模大致分为三个阶段

2020-11-24 15:01:44 1073

原创 Elasticsearch-分布式集群调优策略

1. Index(写)调优职位数据和简历数据,首先都是进入MySQL集群的,我们从MySQL的原始表里面抽取并存储到ES 的Index,而MySQL的原始数据也是经常在变化的,所以快速写入Elasticsearch、以保持Elasticsearch和MySQL的数据及时同步也是很重要的副本数置0如果是集群首次灌入数据,可以将副本数设置为0,写入完毕再调整回去,这样副本分片只需要拷贝,节省了索引过程PUT /my_temp_index/_settings{"number_of_replicas

2020-11-24 14:14:23 158

原创 Elasticsearch-集群规划

4.1 我们需要多大规模的集群需要从以下两个方面考虑:1)当前的数据量有多大?数据增长情况如何?2)你的机器配置如何?cpu、多大内存、多大硬盘容量?推算的依据:Elasticsearch JVM heap 最大可以设置32G 。30G heap 大概能处理的数据量 10 T。如果内存很大如128G,可在一台机器上运行多个ES节点实例。备注:集群规划满足当前数据规模+适量增长规模即可,后续可按需扩展两类应用场景:A. 用于构建业务搜索功能模块,且多是垂直领域的搜索。数据量级几千万到数十亿级

2020-11-24 14:06:28 292

原创 Elasticsearch-集群环境搭建

集群环境搭建我们搭建一个三个节点的集群环境,为了学习方便,我这边只在一台服务器上来演示主从环境。调整虚拟机内存到3g以上一、节点搭建elasticsearch.yml配置文件说明:配置说明:我们要只需要在之前的基础上,打开配置文件elasticsearch.yml,添加如下配置:cluster.name: my-es #集群名称 ---node.name: node-1 # 节点名称node.master: true #当前节点是否可以被选举为master节点,是:true、否:fal

2020-11-24 14:02:21 163

原创 Elasticsearch之企业级高可用分布式集群-概念

概念集群(Cluster)一个Elasticsearch集群由多个节点(Node)组成,每个集群都有一个共同的集群名称作为标识节点(Node)一个Elasticsearch实例即一个Node,一台机器可以有多个实例,正常使用下每个实例都应该会部署在不同的机器上。Elasticsearch的配置文件中可以通过node.master、node.data来设置节点类型。node.master:表示节点是否具有成为主节点的资格true代表的是有资格竞选主节点false代表的是没有资格竞选主

2020-11-24 13:47:59 225

原创 Elasticsearch Java Client

ES提供多种不同的客户端:1、TransportClient ES提供的传统客户端,官方计划8.0版本删除此客户端2、RestClient RestClient是官方推荐使用的,它包括两种:Java Low Level REST Client和 Java HighLevel REST Client。 ES在6.0之后提供 Java High Level REST Client, 两种客户端官方更推荐使用 JavaHigh Level REST Client, 使用时加入对应版本的依赖即可Sprin

2020-11-24 13:38:41 297

原创 Elasticsearch Suggester智能搜索建议

现代的搜索引擎,一般会具备"Suggest As You Type"功能,即在用户输入搜索的过程中,进行自动补全或者纠错。 通过协助用户输入更精准的关键词,提高后续全文搜索阶段文档匹配的程度。例如在京东上输入部分关键词,甚至输入拼写错误的关键词时,它依然能够提示出用户想要输入的内容如果自己亲手去试一下,可以看到京东在用户刚开始输入的时候是自动补全的,而当输入到一定长度,如果因为单词拼写错误无法补全,就开始尝试提示相似的词。那么类似的功能在Elasticsearch里如何实现呢? 答案就在Suggest

2020-11-24 09:03:15 978

原创 Elasticsearch零停机索引重建

Elasticsearch是一个实时的分布式搜索引擎,为用户提供搜索服务,当我们决定存储某种数据时,在创建索引的时候需要数据结构完整确定下来,与此同时索引的设定和很多固定配置将不能改变。当需要改变数据结构时就需要重建索引,为此,Elasticsearch团队提供了辅助工具帮助开发人员进行索引重建零停机完成索引重建的三种方案方案一:外部数据导入方案1)整体介绍系统架构设计中,有关系型数据库用来存储数据,Elasticsearch在系统架构里起到查询加速的作用,如果遇到索引重建的操作,待系统模块发布

2020-11-23 20:59:27 495

原创 Elasticsearch-Filter DSL

Filter DSLElasticsearch中的所有的查询都会触发相关度得分的计算。对于那些我们不需要相关度得分的场景下,Elasticsearch以过滤器的形式提供了另一种查询功能,过滤器在概念上类似于查询,但是它们有非常快的执行速度,执行速度快主要有以下两个原因:过滤器不会计算相关度的得分,所以它们在计算上更快一些。过滤器可以被缓存到内存中,这使得在重复的搜索查询上,其要比相应的查询快出许多。为了理解过滤器,可以将一个查询(像是match_all,match,bool等)和一个过滤器结合起来。

2020-11-23 20:44:30 447

原创 Elasticsearch-词条级搜索(term-level queries)

词条级搜索(term-level queries)可以使用term-level queries根据结构化数据中的精确值查找文档。结构化数据的值包括日期范围、IP地址、价格或产品ID。与全文查询不同,term-level queries不分析搜索词。相反,词条与存储在字段级别中的术语完全匹配。PUT /book{ "settings": {}, "mappings": { "properties": { "description": { "type": "t

2020-11-23 19:37:16 471

原创 Elasticsearch-Query DSL

https://www.elastic.co/guide/en/elasticsearch/reference/7.3/query-dsl.htmlElasticsearch提供了基于JSON的完整查询DSL(Domain Specific Language 特定域的语言)来定义查询。将查询DSL视为查询的AST(抽象语法树),它由两种子句组成叶子查询子句叶子查询子句 在特定域中寻找特定的值,如 match,term或 range查询。复合查询子句复合查询子句包装其他叶子查询或复合查询,并用于

2020-11-23 14:56:26 191

原创 Elasticsearch-地理坐标点数据类型

地理坐标点数据类型地理坐标点地理坐标点是指地球表面可以用经纬度描述的一个点。 地理坐标点可以用来计算两个坐标间的距离,还可以判断一个坐标是否在一个区域中。地理坐标点需要显式声明对应字段类型为 geo_point :PUT /company-locations{ "mappings": { "properties": { "name": { "type": "text" }, "location": { "type": "

2020-11-23 14:25:32 1833

原创 Elasticsearch-文档增删改查及局部更新

Elasticsearch文档,即索引库中的数据,会根据规则创建索引,将来用于搜索。可以类比做数据库中的一行数据新增文档新增文档时,涉及到id的创建方式,手动指定或者自动生成POST /索引名称/_doc/{id}POST /my-company-index/_doc/1{"name" : "百度","job" : "小度用户运营经理","payment" : "30000","logo" :"http://www.lgstatic.com/thubnail_120x120/i/i

2020-11-23 12:01:14 959

原创 Elasticsearch-映射操作

索引创建之后,等于有了关系型数据库中的database。Elasticsearch7.x取消了索引type类型的设置,不允许指定类型,默认为_doc,但字段仍然是有的,我们需要设置字段的约束信息,叫做字段映射(mapping)字段的约束包括但不限于:字段的数据类型是否要存储是否要索引分词器创建映射字段PUT /索引库名/_mapping{"properties": {"字段名": {"type": "类型","index": true,"store": true,"analyze

2020-11-23 11:35:13 176

原创 Elasticsearch-索引操作

创建索引库Elasticsearch采用Rest风格API,因此其API就是一次http请求,你可以用任何工具发起http请求PUT /索引名称{"settings": {"属性名": "属性值"}}settings:就是索引库设置,其中可以定义索引库的各种属性 比如分片数 副本数put /my-company-index{“acknowledged” : true,“shards_acknowledged” : true,“index” : “my-company-inde

2020-11-23 10:59:38 199

原创 Elasticsearch7.3-安装

JDKexport JAVA_HOME=/usr/local/jdk1.8.0_261export JRE_HOME=$JAVA_HOME/jreexport CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/libexport PATH=${JAVA_HOME}/bin:$PATHelasticsearch下载https://www.elastic.co/cn/downloads/past-releases#elasticsearch下载安装与配置t

2020-11-23 10:00:04 769

原创 Elasticsearch之入门

Elasticsearch之入门索引(index)类似的数据放在一个索引,非类似的数据放不同索引, 一个索引也可以理解成一个关系型数据库。类型(type)代表document属于index中的哪个类别(type)也有一种说法一种type就像是数据库的表,比如dept表,user表。注意ES每个大版本之间区别很大:ES 5.x中一个index可以有多种type。ES 6.x中一个index只能有一种type。ES 7.x以后 要逐渐移除type这个概念映射(mapping)mapping

2020-11-23 09:31:38 98

原创 RocketMq-Producer

Producer消息生产者的代码都在client模块中,相对于RocketMQ来讲,消息生产者就是客户端,也是消息的提供者方法和属性//创建主题void createTopic(final String key, final String newTopic, final intqueueNum) throws MQClientException;//根据时间戳从队列中查找消息偏移量long searchOffset(final MessageQueue mq, final long ti

2020-11-20 12:29:11 267

原创 RocketMq-NameServer

NameServer消息中间件的设计思路一般是基于主题订阅发布的机制。生产者(Producer)发送消息到消息服务器的某个主题,消息服务器负责将消息持久化存储消息消费者(Consumer)订阅该兴趣的主题,消息服务器根据订阅信息(路由信息)将消息推送到消费者(Push模式)或者消费者主动向消息服务器拉去(Pull模式),从而实现消息生产者与消息消费者解耦。为了避免消息服务器的单点故障,部署多台消息服务器共同承担消息的存储。生产者如何知道消息要发送到哪台消息服务器呢?如果某一台消息服务器宕机了,生

2020-11-20 11:19:32 457

原创 Rocketmq-导入源码

下载从官方仓库 https://github.com/apache/rocketmq clone 或者 download 源码broker: broker 模块(broke 启动进程)client :消息客户端,包含消息生产者、消息消费者相关类common :公共包dev :开发者信息(非源代码)distribution :部署实例文件夹(非源代码)example: RocketMQ 例代码filter :消息过滤相关基础类filtersrv:消息过滤服务器实现相关类(Filter启动进

2020-11-20 09:29:11 240

原创 Rocketmq-运维常见问题

运维常见问题RocketMQ的mqadmin命令报错问题问题描述:有时候在部署完RocketMQ集群后,尝试执行“mqadmin”一些运维命令,会出现下面的异常信息:org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to<null> failed解决方法:可以在部署RocketMQ集群的虚拟机上执行 export NAMESRV_ADDR=ip:9876 (ip指的是集群中部署Nam

2020-11-19 17:22:14 1346

原创 RocketMq-mqadmin管理工具

mqadmin管理工具执行命令方法: ./mqadmin {command} {args}几乎所有命令都需要配置-n表示NameServer地址,格式为ip:port几乎所有命令都可以通过-h获取帮助如果既有Broker地址(-b)配置项又有clusterName(-c)配置项,则优先以Broker地址执行命令,如果不配置Broker地址,则对集群中所有主机执行命令,只支持一个Broker地址。-b格式为ip:port,port默认是10911在tools下可以看到很多命令,但并不是所有命令都能

2020-11-19 17:16:56 2202 1

原创 RocketMq-集群-2m-slave-sync搭建

下载RocketMQ版本:4.5.1https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.5.1/rocketmq-all-4.5.1-bin-release.zipwget https://archive.apache.org/dist/rocketmq/4.5.1/rocketmq-all-4.5.1-bin-release.zipunzip rocketmq-all-4.5.1-bin-release.zip -d /opt/ cd

2020-11-19 16:33:18 112

原创 RocketMq-集群

集群特点NameServer是一个几乎无状态节点,可集群部署,节点之间无任何信息同步Broker部署相对复杂,Broker分为Master与Slave,一个Master可以对应多个Slave,但是一个Slave只能对应一个Master,Master与Slave的对应关系通过指定相同的BrokerName,不同的BrokerId来定义,rokerId为0表示Master,非0表示Slave。Master也可以部署多个。每个Broker与NameServer集群中的所有节点建立长连接,定时注册Top

2020-11-19 13:37:39 150

原创 RocketMQ-动态扩缩容

动态扩缩容动态增减Namesrv机器NameServer是RocketMQ集群的协调者,集群的各个组件是通过NameServer获取各种属性和地址信息的。主要功能包括两部分:一个各个Broker定期上报自己的状态信息到NameServer;另一个是各个客户端,包括Producer、Consumer,以及命令行工具,通过NameServer获取最新的状态信息。所以,在启动Broker、生产者和消费者之前,必须告诉它们NameServer的地址,为了提高可靠性,建议启动多个NameServer。

2020-11-19 10:17:52 2137

原创 RocketMq-客户端配置

客户端配置相对于RocketMQ的Broker集群,生产者和消费者都是客户端DefaultMQProducer、TransactionMQProducer、DefaultMQPushConsumer、DefaultMQPullConsumer都继承于ClientConfig类,ClientConfig为客户端的公共配置类。客户端的配置都是get、set形式,每个参数都可以用spring来配置,也可以在代码中配置。例如namesrvAddr这个参数可以这样配置,producer.setNamesrv

2020-11-19 10:10:21 991

原创 RocketMq-事务消息

事务消息RocketMQ的事务消息,是指发送消息事件和其他事件需要同时成功或同时失败。比如银行转账,A银行的某账户要转一万元到B银行的某账户。A银行发送“B银行账户增加一万元”这个消息,要和“从A银行账户扣除一万元”这个操作同时成功或者同时失败。RocketMQ采用两阶段提交的方式实现事务消息,TransactionMQProducer处理上面情况的流程是,先发一个“准备从B银行账户增加一万元”的消息,发送成功后做从A银行账户扣除一万元的操作,根据操作结果是否成功,确定之前的“准备从B银行账户增加一万元

2020-11-18 10:04:25 263

原创 RocketMq-顺序消息

顺序消息顺序消息是指消息的消费顺序和产生顺序相同,在有些业务逻辑下,必须保证顺序。比如订单的生成、付款、发货,这3个消息必须按顺序处理才行。顺序消息分为全局顺序消息和部分顺序消息:全局顺序消息指某个Topic下的所有消息都要保证顺序;部分顺序消息只要保证每一组消息被顺序消费即可,比如上面订单消息的例子,只要保证同一个订单ID的三个消息能按顺序消费即可。在多数的业务场景中实际上只需要局部有序就可以了RocketMQ在默认情况下不保证顺序,比如创建一个Topic,默认八个写队列,八个读队列。

2020-11-18 09:54:27 245

原创 RocketMq- 延迟消息

延迟消息时消息(延迟队列)是指消息发送到broker后,不会立即被消费,等待特定时间投递给真正的topic。 broker有配置项messageDelayLevel,默认值为“1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h”,18个level。可以配置自定义messageDelayLevel。注意,messageDelayLevel是broker的属性,不属于某个topic。发消息时,设置delayLevel等级即可:msg.se

2020-11-18 09:47:26 590

原创 RocketMq-死信队列

死信队列RocketMQ中消息重试超过一定次数后(默认16次)就会被放到死信队列中,在消息队列RocketMQ 中,这种正常情况下无法被消费的消息称为死信消息(Dead-Letter Message),存储死信消息的特殊队列称为死信队列(Dead-Letter Queue)。可以在控制台Topic列表中看到“DLQ”相关的Topic,默认命名是:%RETRY%消费组名称(重试Topic)%DLQ%消费组名称(死信Topic)死信队列也可以被订阅和消费,并且也会过期可视化工具:rocketmq

2020-11-18 09:44:16 8200

原创 RocketMq-消息重试

消息重试顺序消息的重试对于顺序消息,当消费者消费消息失败后,消息队列 RocketMQ 会自动不断进行消息重试(每次间隔时间为 1 秒),这时,应用会出现消息消费被阻塞的情况。因此,在使用顺序消息时,务必保证应用能够及时监控并处理消费失败的情况,避免阻塞现象的发生。DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("consumer_grp_04_01");consumer.setNamesrvAddr("node1:9876");

2020-11-18 09:35:37 604

原创 RocketMq-负载均衡

负载均衡RocketMQ中的负载均衡都在Client端完成,具体来说的话,主要可以分为Producer端发送消息时候的负载均衡和Consumer端订阅消息的负载均衡。Producer的负载均衡5 个队列可以部署在一台机器上,也可以分别部署在 5 台不同的机器上,发送消息通过轮询队列的方式 发送,每个队列接收平均的消息量。通过增加机器,可以水平扩展队列容量。 另外也可以自定义方式选择发往哪个队列mqadmin updateTopic -n localhost:9876 -t tp_demo_02

2020-11-18 09:16:50 1227

原创 RocketMq-刷盘机制

刷盘机制RocketMQ 的所有消息都是持久化的,先写入系统 PageCache,然后刷盘,可以保证内存与磁盘都有一份数据, 访问时,直接从内存读取。消息在通过Producer写入RocketMQ的时候,有两种写磁盘方式,分布式同步刷盘和异步刷盘。同步刷盘同步刷盘与异步刷盘的唯一区别是异步刷盘写完 PageCache直接返回,而同步刷盘需要等待刷盘完成才返回, 同步刷盘流程如下:(1). 写入 PageCache后,线程等待,通知刷盘线程刷盘。(2). 刷盘线程刷盘后,唤醒前端等待线程,可能是

2020-11-18 09:06:25 1299

原创 RocketMq-高可用机制

高可用机制RocketMQ分布式集群是通过Master和Slave的配合达到高可用性的。Master和Slave的区别:在Broker的配置文件中,参数brokerId的值为0表明这个Broker是Master,大于0表明这个Broker是Slave,brokerRole参数也说明这个Broker是Master还是Slave。(SYNC_MASTER/ASYNC_MASTER/SALVE)Master角色的Broker支持读和写,Slave角色的Broker仅支持读。Consumer可以连

2020-11-18 09:03:56 1817

redis-desktop-manager-0.8.8.384.rar

redis-desktop-manager

2021-12-08

expert+one-on-one+j2ee+development+without+ejb中文版.rar

expert+one-on-one+j2ee+development+without+ejb中文版 e

2020-04-27

design-pattern-java.rar

design-pattern-java

2020-04-24

数据结构与算法 Python语言描述_裘宗燕.rar

数据结构与算法 Python语言描述_裘宗燕

2019-06-03

七周七并发模型.rar

七周七并发模型

2019-06-03

图解Java多线程设计模式.rar

图解Java多线程设计模式

2019-06-03

淘宝十年产品事 带书签目录 完整版.rar

淘宝十年产品事 带书签目录 完整版

2019-05-09

需求:缔造伟大商业传奇的根本力量完整版带.rar

需求:缔造伟大商业传奇的根本力量完整版带

2019-05-09

TCP IP详解卷1:协议 原书第2版

TCP IP详解卷1:协议 原书第2版TCP

2019-05-07

TCP IP详解卷1:协议 原书第2版

TCP IP详解卷1:协议 原书第2版

2019-05-07

C Primer Plus 第6版 非扫描版 中文版

C Primer Plus 第6版 非扫描版 中文版

2019-05-07

Netty实战 电子版

Netty实战 电子版

2019-05-07

Unix编程艺术--完整书签版

Unix编程艺术--完整书签版

2019-04-29

Go语言学习笔记

Go语言学习笔记

2019-04-04

Go实战

Go实战

2019-04-04

Go并发编程实战 第2版

Go并发编程实战 第2版

2019-04-04

GoWeb编程GoWeb编程

GoWeb编程GoWeb编程

2019-04-04

【Go程序设计语言】(详细书签、清晰完整版)

【Go程序设计语言】(详细书签、清晰完整版)

2019-04-04

Mybatis技术内幕

Mybatis技术内幕

2019-04-04

疯狂python讲义下载

疯狂python讲义下载

2019-04-04

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除