tools-db-query:数据查询辅助工具 1、背景在spring生态下,当前已经有很好的db查询工具了,即mybatisplus。对于单表查询,我们可以在不用写一行sql的情况下完成数据的各种条件查询,简单、方便且更符合程序员的习惯。但在分布式情况下,我们每个功能模块都会以接口的方式给其他模块或外部服务提供接口,而不同的接口或业务,查询的表及字段等都不同,我们需要进行大量的模式化的定义及同质化的代码开发。这就导致,如果我们在接口设计的...
kafka源码愫读(6)、GroupCoordinator模块源码分析 1、GroupCoordinator及相关组件简介GroupCoordinator模块为Consumer管理器,每个GroupCoordinator管理一个或多个Consumer Group,同时管理了每个Consumer对应的Partition及其消费偏移信息;每个ConsumerGroup确定对应GroupCoordinator的计算公式为:Math.abs(groupId.hashCo...
kafka源码愫读(5)、ReplicaManager模块源码分析 1、ReplicaManager模块简介replicaManager主要用来管理topic在本broker上的副本信息。并且读写日志的请求都是通过replicaManager进行处理的。每个replicaManager实例都会持有一个Pool[TopicPartition, Partition]类型的allPartitions变量。Pool其实就是一个Map的封装。通过key(TopicPar...
kafka源码愫读(4)、KafkaController模块源码分析 1、模块组成KafkaController是kafka集群的控制管理模块,且一个集群只能有一个leader。其主要通过向ZK注册各种监听事件来管理整个集群节点、分区的leader的选举、再平衡等问题。KafkaController主要组成:KafkaController.png说明:ControllerEventManager:Controller事件管理器。KafkaCo...
kafka源码愫读(2)、broker初始化流程分析 Kafka 集群由多个 broker 节点构成,每个节点上都运行着一个 Kafka 实例,这些实例之间基于 ZK 来发现彼此,并由集群控制器 KafkaController 统筹协调运行,彼此之间基于 socket 连接进行通信。1、KafkaServer 类主要字段:KafkaServer 为kafka的启动类,其中包含了kafka的所有组件,如KafkaController、groupCo...
kafka源码愫读(3)、SocketServer模块源码分析 1、SocketServer模块说明SocketServer为kafka的网络通信管理模块,基于Reactor的模式,其中包含了1个Acceptor负责接受客户端请求,N个Processor负责读写数据,M个Handler来处理业务逻辑。在Acceptor和Processor,Processor和Handler之间都有队列来缓冲请求。SocketServer网络通信流程图如下:Soc...
kafka源码愫读(1)、总体架构 1、拓扑结构kafka拓扑结构.png2、基本组成Broker:一台Kafka服务器就是一个Broker,一个集群由多个Broker组成,一个Broker可以容纳多个Topic,Broker和Broker之间没有Master和Standby的概念,他们之间地位是平等的;Topic:每条发送到Kafka集群的消息都属于某个主题,这个主题就称为Topic。物理上不同Topic的...
搜索引擎ElasticSearch之(8)、性能优化 1、写入速度优化在 ES 的默认设置下,是综合考虑数据可靠性、搜索实时性、写入速度等因素的。当离开默认设置、追求极致的写入速度时,很多是以牺牲可靠性和搜索实时性为代价的。1.1、TranslogFulsh间隔调整默认情况下,translog持久化策略为每个请求都flush,其保证了写入操作的可靠性。对应配置为:index.translog.durability: request若系统...
搜索引擎ElasticSearch之(7)、聚合查询 1、度量聚合度量聚合从文档中提取值并进行计算,这些值通常从文档中的字段中提取出来,也可以使用脚本进行计算。数字型度量聚合是一种特殊类型的度量聚合,输出数字类型的值,聚合输出一个数字指标的为单值数字型度量聚合;输出多指标的为多值数字型度量聚合。1.1、平均值聚合平均值聚合是一个单值度量聚合,计算从聚合的文档中提取数字型值的平均值。示例1:GET /city/_doc/_search{ ...
搜索引擎ElasticSearch之(6)、搜索详解 1、查询参数1.1、分页查询分页查询需指定两个参数。from:指定起始偏移量,默认为0;size:指定查询结果包含的文档数。示例:GET /city/_doc/_search{ "from":0, "size":2}1.2、返回版本号当查询结果需要返回文档版本号时,需在查询顶层添加version字段,并设其值为true;示例:GET /city/_doc/_sea...
搜索引擎ElasticSearch之(5)、映射配置 映射是定义存储和索引的文档类型以及字段的过程。索引中的每一个文档都有一个类 型,每种类型都有它自己的映射。一个映射定义了文档结构内每个字段的数据类型。映射通 过配置来定义字段类型与该类型相关联的元数据的关系。1、字段数据类型1.1、核心数据类型核心数据类型包括:字符串数据类型: string数字型数据类型: long 、 integer 、 short 、 byte 、 double ...
搜索引擎ElasticSearch之(4)、集群管理 1、集群状态及监控状态ES提供了检查和监控节点或集群的信息,包括统计信息、服务器信息、节点参数等。1.1、集群监控可以利用集群健康api来查看集群或索引的健康状态信息。集群健康查询示例:GET /_cluster/health{ "cluster_name" : "test-cluster", "status" : "yellow", "timed_out" : fals...
搜索引擎ElasticSearch之(3)、配置详解 1、elasticsearch服务配置1.1、Cluster集群配置参数名称默认值说明cluster.nameelasticsearch集群名称,只有具有相同集群名的节点才能组成一个逻辑集群1.2、Node节点配置参数名称默认值说明node.name系统生成节点名称,同一集群的各节点名称必须不同,不配置则系统默认生成node.at...
搜索引擎ElasticSearch之(2)、索引管理 1、索引管理1.1、索引创建创建索引主要设置主分片及副分片数量。索引创建后,主分片数不能更改,可以修改副本分片数。请求格式:PUT /{索引名}{ "settings":{ "number_of_shards":{主分片数}, "number_of_replicas":{副本分片数} }}示例:PUT /city{ "settings":{ ...
搜索引擎ElasticSearch之(1)、架构简介及基本服务搭建 1、ElasticSearch基本术语及概念1.1、索引词(term)ElasticSearch中的索引词是为一个能被索引的精确值,索引词可以为文档的某个字段或某个字段经过分词器分词后的token单元。索引词可以通过term查询进行精确搜索。1.2、文本(text)文本为普通的非结构化文字,可被分词器分解为索引词,并通过索引词构建倒排索引。而搜索时,搜索词也会被分解为索引词,并通过倒排索引...
mongodb之(9)mongodb分片集群 1、分片组件mongo中分片由以下三个组件组成:Shard Server,Config Server,Router Server。分片组件.png1.1、Shard ServerShard Server为存储实际数据的分片,每个Shard 可以是一个mongod 实例,也可以是一组mongod 实例构成的Replica Set。为了实现每个Shard 内部的au...
mongodb之(8)mongodb部署及维护 1、副本集部署教程1.1、要求三个成员副本集提供足够的冗余以承受大多数网络分区和其他系统故障。这些副本集也具有足够的容量用于许多分布式读取操作。副本集应始终具有奇数个成员。这可确保选举顺利进行。对于生产部署,应该通过在不同的计算机上托管mongod实例来尽可能多地保持成员之间的分离。当使用虚拟机进行生产部署时,应将每个mongod实例放在由冗余电源电路和冗余网络路径服务的单独h...
mongodb之(7)mongodb副本集 MongoDB 中的副本集是一组mongod进程,它们维护相同的数据集。副本集提供冗余和高可用性,并且是所有生产部署的基础。通过在不同数据库服务器上提供多个数据副本,复制集可以保证对一定数量的数据库服务断开级别容错。在某些场景下,clients可以通过将读操作发送到复制集的不同服务器来提高读取并发量。同时,在不同数据中心维护数据副本可以增加分布式应用程序中数据的本地性和可用性。...
mongodb之(6)mongodb集合与索引 1、集合1.1、创建集合MongoDB 中使用 createCollection() 方法来创建集合。语法格式:db.createCollection(name, options)参数说明:name: 要创建的集合名称options: 可选参数, 指定有关内存大小及索引的选项options参数:字段类型描述cappedBool(可选)...