自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

你今天真好看呀

心若有所向往,何惧道阻且长

  • 博客(1420)
  • 收藏
  • 关注

原创 报错:There is no supertype for types Int32, String because some of them are String/FixedString and som

这里之所以会报错是因为:type字段的类型在ioa_log表中为字符串类型,在icmp_log表中为int64类型。用于创建一些空的列,这些空的列在UNION ALL操作中被用于匹配两个SELECT语句的列,以便在结果集中创建一个完整的表格。UNION ALL与UNION的区别在于,UNION会去重,而UNION ALL不会去重。因此,如果需要合并两个结果集并保留重复的行,可以使用UNION ALL。注意,两个SELECT语句的列数必须相同,且对应的列的数据类型也必须相同。

2023-09-14 16:55:41 654

原创 实战 - Restful APi 格式规范

HTTP头里面的方法决定了动作后,后端实现也应该严格根据动作来,比如,GET请求不应该对数据造成任何更改,如此,我们对权限控制便非常方便,例如,如果是访客,我们可以只开放GET方法,而对于ADMIN,我们可以开放GET,POST,DELETE等方法。类似于面向对象以对象为中心,RESTful推崇以资源为中心,说不上绝对好,但的确会引导大家考虑资源本身,关注内聚性,关注权限,关注资源间关联。HTTP协议里面规定的东西很多,例如,缓存,压缩,代理,加密,穿透,等等,都已经让HTTP帮忙完成了,给很多实现减负。

2023-09-06 16:26:10 422

原创 Kubernetes 工作中常见命令总结

③ pod 文件的操作命令:命名空间为platform,pod的名称 incident-7c97d958cf-25ddr。② deployment 文件的操作命令:命名空间为platform,deployment的名称为incident。① configmap 文件的操作命令:命名空间为platform,configmap的名称为openapi。

2023-09-06 11:16:57 862

原创 分布式 - 服务器Nginx:基础系列之Nginx静态资源配置优化sendfile | tcp_nopush | tcp_nodelay

三个指令都开启的好处是,sendfile可以开启高效的文件传输模式,tcp_nopush开启可以确保在发送到客户端之前数据包已经充分“填满”, 这大大减少了网络开销,并加快了文件发送的速度。当tcp_nodelay设置为off时,表示禁用TCP_NODELAY选项,Nginx会等待一定时间或者缓冲区填满后再发送数据包,以减少网络传输的次数,提高效率。当tcp_nopush设置为on时,表示启用TCP_CORK选项,Nginx会等待缓冲区填满后再发送数据包,以减少网络传输的次数,提高效率。

2023-09-04 22:25:51 1686 1

原创 分布式 - 服务器Nginx:基础系列之Nginx静态资源配置指令server_name | listen | location | root | alias | index| error_page

hosts是一个没有扩展名的系统文件,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析。port 表示要监听的端口号。可以看到访问的是 /usr/local/nginx/html/b.jpg,即 alias 指定的路径,使用 alias 指定的路径替代了 location 指定的路径。

2023-09-03 18:17:53 1170

原创 分布式 - 服务器Nginx:基础系列之Nginx配置文件结构

我们知道浏览器中可以显示的内容有HTML、XML、GIF等种类繁多的文件、媒体等资源,浏览器为了区分这些资源,就需要使用MIME Type。MIME类型是一种标准,用于指示在Web上传输的文件的类型。Nginx作为web服务器,也需要能够识别前端请求的资源类型。http {在上面的示例中,include 指令用于包含默认的 MIME Type 定义文件 mime.types,default_type 指令用于设置默认的 MIME Type。

2023-08-31 23:46:17 678

原创 分布式 - 服务器Nginx:基础系列之Nginx简介 | 下载安装 | 启动和停止服务

Nginx是一个高性能的Web服务器,同时也是一个反向代理服务器。它最初是为了解决C10K问题而开发的,即如何让一个服务器同时处理成千上万个并发连接。Nginx采用了事件驱动的异步非阻塞处理方式,能够高效地处理大量并发连接,因此被广泛应用于高并发的Web应用场景中。此外,Nginx还可以作为POP3/SMTP/IMAP代理服务器,用于代理邮件服务器的请求和响应。这使得Nginx可以在一台服务器上同时运行多个服务,提高了服务器的利用率。

2023-08-29 23:03:17 851

原创 MongoDB - 构造复杂查询条件执行查询

【代码】MongoDB - 构造复杂查询条件执行查询。

2023-08-29 15:14:14 911

原创 分布式 - 服务器Nginx:一小时入门系列之 rewrite 指令

当请求的URL为 /old/1.txt 时,第一条 rewrite 规则将以 /old/ 开头的请求重写为以 /new/ 开头的请求,第二条 rewrite 规则将以 /new/ 开头的请求重写为以 /pages/ 开头的请求,最后接着匹配以 /pages/1.txt 结尾的请求,使用 return 指令返回状态码 200 和消息体 “this is rewrite test!rewrite 指令会导致请求的重新处理,因此可能会影响性能,因此,应该尽量避免在高并发场景下使用rewrite指令。

2023-08-26 22:05:38 653

原创 分布式 - 服务器Nginx:一小时入门系列之 return 指令

重定向是指在服务器端将用户的请求重定向到另一个URL地址,重定向的过程是通过向客户端发送一个HTTP响应,让客户端重新发送一个新的请求到重定向的URL地址。转发是指在服务器端将用户的请求转发到另一个资源进行处理,转发的过程是服务器内部完成的,对于客户端而言,它并不知道服务器进行了转发操作,因此客户端的URL地址不会发生变化。转发和重定向都是HTTP协议中常用的跳转方式,它们的作用都是将用户请求从一个URL地址转移到另一个URL地址,但它们的实现方式和效果略有不同。① 配置Nginx服务器监听8007端口。

2023-08-26 22:03:00 1044

原创 解决 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

这是 mysql 初始化时,使用临时密码,修改自定义密码时,由于自定义密码比较简单,就出现了不符合密码策略的问题。

2023-08-26 15:48:31 4641

原创 分布式 - 服务器Nginx:一小时入门系列之TCP反向代理和负载均衡

http块用于配置 HTTP 服务器,包括监听端口、虚拟主机、反向代理、负载均衡、缓存等功能。TCP反向代理是指Nginx作为TCP服务器的代理服务器,接收客户端的TCP连接请求,然后将请求转发给后端的TCP服务器,最后将TCP服务器的响应返回给客户端。/etc/nginx/conf.d 目录是包含在 http 块中的,所以TCP负载均衡不能再配置在 /etc/nginx/conf.d 目录下的配置文件中了,需要和在 nginx.conf 中配置,并且和 http 块同级。

2023-08-26 14:11:22 1987

原创 解决无法远程连接MySQL服务的问题

③ 修改配置文件/etc/my.cnf,绑定IP设置为0.0.0.0,即接收任意地址的主机的连接,端口绑定3306。第一个root用户只能从本地主机连接,而第二个root用户可以从任何主机连接。② 检查防火墙有没有屏蔽掉3306端口。

2023-08-26 13:51:57 636

原创 分布式 - 服务器Nginx:一小时入门系列之HTTPS协议配置

HTTPS的主要目的是确保在客户端和服务器之间传输的数据是加密的,以防止第三方窃听、篡改或伪装。它通过使用公钥加密和私钥解密的方式来实现数据的加密和解密过程。这段配置文件的作用是将通过HTTPS协议访问"ruoyi.https"域名的请求转发到本地的8088端口。② 使用 OpenSSL 工具生成证书签名请求(CSR)的命令,在执行此命令之前,您需要确保已经生成了一个私钥文件 server.key。① 这个命令会生成一个2048位的 RSA 密钥对,并将私钥保存到名为 server.key 的文件中。

2023-08-25 21:13:10 908

原创 分布式 - 消息队列Kafka:Kafka 消费者消费位移的提交方式

到目前为止,我们知道消息的拉取是根据poll()方法中的逻辑来处理的,这个poll()方法中的逻辑对于普通的开发人员而言是一个黑盒,无法精确地掌控其消费的起始位置。与消费者中的其他处理过程一样,自动提交也是在轮询循环中进行的。假设刚刚提交完一次消费位移,然后拉取一批消息进行消费,在下一次自动提交消费位移之前,消费者崩溃了,那么又得从上一次位移提交的地方重新开始消费,这样便发生了重复消费的现象(对于再均衡的情况同样适用,再均衡完成之后,接管分区的消费者将从最后一次提交的偏移量的位置开始读取消息)。

2023-08-18 11:42:11 2056

原创 分布式 - 消息队列Kafka:Kafka 消费者的消费位移

再考虑一种情况,当有新的消费者加入时,那么必然会有再均衡的动作,对于同一分区而言,它可能在再均衡动作之后分配给新的消费者,如果不持久化保存消费位移,那么这个新的消费者也无法知晓之前的消费位移。如下图,x 表示某一次拉取操作中此分区消息的最大偏移量,假设当前消费者已经消费了 x 位置的消息,那么我们就可以说消费者的消费位移为 x,不过当前消费者需要提交的消费位移并不是 x,而是 x+1,它表示下一条需要拉取的消息的位置。消费位移(偏移量)是指消费者在消费分区中的消息时,记录的已经消费的消息的位移。

2023-08-16 22:06:32 1413

原创 分布式 - 服务器Nginx:一小时入门系列之负载均衡

当访问 nginx 的 8003 端口时 ,请求会进入 8088 端口的 ruoyi-admin 服务,当填写完密码以后点击登录,这次请求会进入 8080 端口的 tomcat 服务,因此总是登录不成功。例如,当请求 nginx 的 8003 端口时,会将请求轮询转发给 tomcat 和 ruoyi-admin 两个后端服务器,即第1次请求会访问8080端口,第2次请求会访问8088端口,循环往复。请注意,使用轮循机制或最少连接的负载平衡,每个客户端的请求都可能分发到不同的服务器。

2023-08-15 23:16:22 670

原创 分布式 - 服务器Nginx:一小时入门系列之代理缓冲与缓存

当一个请求被代理到后端服务器时,如果该请求的响应已经被缓存,Nginx 会将缓存的响应返回给客户端,而不是将请求转发到后端服务器。通常情况下,来自后端服务器响应的第一部分存储在单独的缓冲区中,这个缓冲区存储的是相对较小的响应头部信息,大小通过 proxy_buffer_size 指令进行设置 ,建议将 proxy_buffer_size 设置为小于默认值。启用缓存后,nginx将响应保存在磁盘中,返回给客户端的数据首先从缓存中获取,这样子相同的请求不用每次都发送给后端服务器,减少到后端请求的数量。

2023-08-15 21:48:40 2677 3

原创 分布式 - 消息队列Kafka:Kafka 消费者消息消费与参数配置

01. 创建消费者在读取消息之前,需要先创建一个KafkaConsumer对象。创建KafkaConsumer对象与创建KafkaProducer对象非常相似——把想要传给消费者的属性放在Properties对象里。为简单起见,这里只提供4个必要的属性:bootstrap.servers、key.deserializer 和 value.deserializer。① bootstrap.servers 指定了连接Kafka集群的字符串。② key.deserializer 和 value.deser

2023-08-14 15:24:04 3334

原创 分布式 - 消息队列Kafka:Kafka消费者分区再均衡(Rebalance)

我们试想以下场景:提交位移之后的 3 秒发生了 Rebalance ,在 Rebalance 之后,所有 Consumer 从上一次提交的位移处继续消费,但该位移已经是 3 秒前的位移数据了,故在 Rebalance 发生前 3 秒消费的所有数据都要重新再消费一次。在协作再均衡中,消费者群组首领会通知所有消费者,它们将失去部分分区的所有权,然后消费者会停止读取这些分区,并放弃对它们的所有权。当一个消费者被关闭或发生崩溃时,它将离开群组,原本由它读取的分区将由群组里的其他消费者读取。

2023-08-12 22:52:20 2254

原创 分布式 - 消息队列Kafka:Kafka消费者的分区分配策略

RangeAssignor 分配策略的原理是按照消费者总数和分区总数进行整除运算来获得一个跨度,然后将分区按照跨度进行平均分配,以保证分区尽可能均匀地分配给消费者组内所有的消费者。针对每一个主题而言,RangeAssignor策略会将订阅这个主题的消费组内的所有消费者按照名称的字典序排序,然后为每个消费者划分固定的分区范围,如果不够平均分配,那么字典序靠前的消费者会被多分配一个分区。① 消费者组1订阅了主题A,则对主题A内的分区按照序号进行排序,对消费者组1内的消费者按照名称的字典序进行排序。

2023-08-12 16:29:01 938

原创 分布式 - 消息队列Kafka:Kafka消费者和消费者组

在Kafka中,一个消费者组中的每个消费者会消费主题下不同分区的消息,而不同消费者组中的消费者则可以同时消费相同分区的数据。在这些情况下,单个消费者无法跟上数据生成的速度,因此可以增加更多的消费者来分担负载,让每个消费者只处理部分分区的消息,这是横向扩展消费者的主要方式。消费者组是一个逻辑上的概念,它将旗下的消费者归为一类,每一个消费者只属于一个消费者组。消费者组的作用是实现负载均衡和容错性,因为每个消费者只能读取主题中的一部分消息,而消费者组中的所有消费者共同读取整个主题中的所有消息。

2023-08-12 13:50:49 1753

原创 分布式 - 消息队列Kafka:Kafka生产者发送消息的分区策略

只要你自己的实现类定义好了 partition 方法,同时设置partitioner.class 参数为你自己实现类的 Full Qualified Name,那么生产者程序就会按照你的代码逻辑对消息进行分区。@Override// 获取该 topic 可用的所有分区信息// 如果 keyBytes 为 null,表示该消息没有 key,此时采用 round-robin 的方式将消息均匀地分配到不同的分区中。

2023-08-11 11:26:27 1430

原创 分布式 - 消息队列Kafka:Kafka生产者架构和配置参数

如果生产者发送消息的速度超过发送到服务器的速度,则会导致生产者空间不足,这个时候KafkaProducer的send()方法调用要么被阻塞,要么抛出异常,这个取决于参数max.block.ms的配置,此参数的默认值为60000,即60秒。在默认情况下,生产者发送的消息是未经压缩的。如果应用程序调用send()方法的速度超过生产者将消息发送给服务器的速度,那么生产者的缓冲空间可能会被耗尽,后续的send()方法调用会等待内存空间被释放,如果在max.block.ms之后还没有可用空间,就抛出异常。

2023-08-10 22:44:27 1885

原创 分布式 - 服务器Nginx:一小时入门系列之动静分离

Apache Tocmat 严格来说是一款java EE服务器,主要是用来处理 servlet请求。处理css、js、图片这些静态文件的IO性能不够好,因此,将静态文件交给nginx处理,可以提高系统的访问速度,减少tomcat的请求次数,有效的给后端服务器降压。静态文件 /some/path/ 目录说明:除了js、css、图片文件之外,还有字体文件和一个ie提示页面。访问 http://192.168.1.9:8002 即可访问若依后台管理系统。部署 ruoyi-admin.war。

2023-08-09 22:42:49 736

原创 分布式 - 消息队列Kafka:Kafka生产者发送消息的方式

具体来说,当生产者成功发送消息时,回调函数会被传递一个RecordMetadata对象,该对象包含了发送消息的相关信息,如消息所在的分区、消息在分区中的偏移量等。回调函数会在 producer 收到 ack 时调用,该方法有两个参数,分别是元数据信息(RecordMetadata)和异常信息(Exception),如果 Exception 为 null,说明消息发送成功,如果 Exception 不为 null,说明消息发送失败。发送即忘记,生产者发送消息后不会等待服务器的响应,直接发送下一条消息。

2023-08-09 15:29:59 2174

原创 分布式 - 服务器Nginx:一小时入门系列之HTTP反向代理

访问 http://192.168.1.9:8001/some/path/page.html 将被代理到 http://localhost:8088/a/page.html。Nginx 服务器会将请求中的 /some/path 部分替换为 /a,然后将请求转发到 http://localhost:8088/a。访问 http://192.168.1.9:8001/some/path/page.html 将被代理到 http://localhost:8088/some/path/page.html。

2023-08-07 23:13:30 935

原创 分布式 - 服务器Nginx:一小时入门系列之静态网页配置

① 下面将其配置成一个web服务:nginx 配置文件位于 /etc/nginx/nginx.conf 中,其中 include 命令会引用 /etc/nginx/conf.d 目录下所有的 .conf 文件,因次可以在conf.d文件下新建一个配置文件 8000.conf。请求总是指向 root 目录,/admin 目录则指向的是root目录下的admin目录,即为 /home/AdminLTE-3.2.0/admin。在浏览器访问 http://192.168.1.9:8000/a。

2023-08-06 23:25:15 712

原创 分布式 - 服务器Nginx:一小时入门系列之Nginx环境准备

该服务器的根目录为 /usr/share/nginx/html,当访问该服务器时,如果请求的路径为 /,则返回 index.html 或 index.htm 文件。include 命令会引用 /etc/nginx/conf.d 目录下所有的.conf文件,这样可以保持主配置文件的简洁,同时配个多个.conf文件方便区分,增加可读性。② index 指定了默认的首页文件,当客户端请求一个目录时,Nginx 会尝试返回该目录下的默认文档,则会返回目录列表或者 403 Forbidden 错误。

2023-08-06 18:45:24 479

原创 分布式 - 服务器Nginx:常见问题总结(二)

在Nginx中,可以通过配置错误页面来定义错误提示页面。具体步骤如下:① 打开Nginx配置文件,一般为/etc/nginx/nginx.conf。internal;上述代码中,error_page指定了错误码为404时的错误页面路径为/404.html,location指定了该路径对应的本地文件路径为/usr/share/nginx/html/404.html。③ 保存配置文件并重启Nginx服务。这样,当访问的页面不存在时,Nginx就会自动跳转到定义的404错误页面。

2023-08-06 16:07:20 1224

原创 实战 - 利用 ThreadLocal 线程局部变量实现数据缓存

BranchContext 类定义了一个静态的变量,用于存储当前线程的/*** 设置 assetBranchCache} /*** 获取 assetBranchCache} /*** 清除 assetBranchCache 信息} }为了在项目的各个地方获取ThreadLocal中缓存的资产组数据,可以定义一个线程上下文资产组数据持有者类 SaasThreadContextDataHolderBranch。

2023-08-03 22:34:25 787

原创 Java 多线程 - 利用线程池并发执行一组 Callable 任务

线程池是一种用于管理和复用线程的机制,它可以在需要时创建线程,并在完成任务后将线程放回池中以供重用。这种机制可以减少线程创建和销毁的开销,提高程序的性能和可伸缩性。在并发编程中,线程池可以用来管理并发任务的执行。通过将任务提交到线程池中,可以让线程池自动分配线程来执行任务,从而实现并发执行。线程池还可以控制并发任务的数量,避免系统资源被过度占用,从而提高系统的稳定性和可靠性。定义了一个名为核心线程数为 5,最大线程数为 20。空闲线程的存活时间为 4 秒。使用作为任务队列,可以存储无限多的任务。

2023-08-03 11:30:38 577

原创 分布式 - 消息队列Kafka:Kafka分区常见问题总结

如果某个 Broker 上的领导者分区数量超过了平均值的 10%,则该 Broker 将不再接受新的领导者分区,直到其他 Broker 上的领导者分区数量增加,使得整个集群的领导者分区数量平衡。比如很多公司使用 Kafka 收集应用服务器的日志数据,这种数据都是很多的,特别是对于那种大批量机器组成的集群环境,每分钟产生的日志量都能以 GB 数,因此如何将这么大的数据量均匀地分配到 Kafka 的各个 Broker 上,就成为一个非常重要的问题。并且,我们还可以通过添加新的节点机器来增加整体系统的吞吐量。

2023-07-21 16:51:13 1417

原创 分布式 - 服务器Nginx:常见问题总结(一)

Nginx是一款高性能的开源Web服务器软件,也可以用作反向代理服务器、负载均衡器和HTTP缓存。Nginx的设计目标是提供高性能、高并发、低内存消耗和稳定性,因此在处理静态文件、动态内容、SSL加密等方面表现出色,被广泛应用于互联网、移动应用、视频流媒体等领域。正向代理和反向代理都是代理服务器的应用场景,它们的区别在于代理的方向不同。正向代理是客户端通过代理服务器访问互联网资源的过程,代理服务器代表客户端向互联网服务器请求资源,然后将响应结果返回给客户端。

2023-07-21 10:33:08 421

原创 实战 - 利用ThreadLocal上下文解决查询性能问题

}利用ThreadLocal上下文存储需要缓存的数据 List} }} }} }} }进行grpc接口调用获取 List 信息/*** 获取授权信息* @return 授权信息/*** 获取授权信息* @return 授权信息。

2023-07-20 17:38:13 191

原创 ClickHouse - 配置和测试 ClickHouse 多数据源账号

【代码】ClickHouse - 配置和测试 ClickHouse 多数据源账号。

2023-07-07 16:27:56 552

原创 MongoDB - 更新数组中的元素的值

④ 需要注意的是,上个操作只会更新第一个匹配到的元素。如果需要更新所有匹配到的元素,可以使用{multi:true}选项。③ 将"indicators"数组中匹配到的元素的"indicatorName"键的值更新为"xyz修改后的值"② 在"indicators"数组中查找包含"indicatorKey"键为"xyz"的元素。

2023-07-01 11:23:37 1407

原创 分布式 - 消息队列Kafka:Kafka 副本|AR|ISR|OSR|Leader|Follower|HW|LEO

Kafka 为分区引入了多副本(Replica)机制,通过增加副本数量可以提升容灾能力。同一分区的不同副本中保存的是相同的消息,每个分区都有一个 leader 副本和多个 follower 副本,其中leader副本负责处理读写请求,follower副本只负责与leader副本的消息同步。副本处于不同的broker中,当leader副本出现故障时,Kafka 会自动从 follower 副本中选举一个新的 leader 副本对外提供服务。这个过程称为副本重分配。在副本重分配期间,Kafka 仍然可以正常工作

2023-06-26 20:22:52 1358

原创 分布式 - 消息队列Kafka:Kafka broker常见问题总结

Kafka Broker 是 Kafka 集群中的一个节点,负责接收来自生产者的消息并将其存储在 Kafka 集群中的一个或多个主题中。它还负责从 Kafka 集群中的一个或多个主题中检索消息并将其发送给消费者。

2023-06-26 17:46:29 1594

原创 分布式 - 消息队列Kafka:Kafka中Zookeeper的作用是什么?

② Topic和Partition的管理:Kafka的topic和partition信息存储在Zookeeper的节点上,Kafka通过与Zookeeper进行交互来创建、删除、修改topic和partition的信息。总之,Kafka和Zookeeper之间的配合工作是非常紧密的,Zookeeper在Kafka集群中扮演着非常重要的角色,它负责存储和管理集群的元数据信息,以及协调Kafka集群中各个节点之间的通信。需要注意的是,Kafka的元数据存储在Zookeeper中是为了支持集群的动态扩容和缩容。

2023-05-31 17:45:48 1330 1

空空如也

空空如也

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

TA关注的人

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