自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

YanQiuXiang

唯有热爱,可抵岁月漫长

  • 博客(158)
  • 资源 (4)
  • 收藏
  • 关注

原创 微服务调用组件Feign

原生的 Feign 是不支持 Spring MVC 注解的,如果你想在 Spring Cloud 中使用原生的 注解方式来定义客户端也是可以的,通过配置契约来改变这个配置,Spring Cloud 中默认的 是 SpringMvcContract。HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富 的支持 Http 协议的客户端编程工具包,并且它支持 HTTP 协议最新版本和建议。Feign 提供了很多的扩展机制,让用户可以更加灵活的使用。

2023-12-04 16:51:44 876

原创 微服务负载均衡器Ribbon

(先过滤掉故障实例,再选择并发较小的实例) 过滤掉一直连接失败的被标记为circuit tripped的后端Server,并过滤掉那些高并发的后端Server或者使用一个AvailabilityPredicate来 包含过滤server的逻辑,其实就是检查status里记录的各个Server的运行状态。最小链接数,即使请求均衡了,压力不一定会均衡,最小连接数法就是根据服务器的情况,比如请求积压数等参数,将请求分配到当前压力最小的服务器上。

2023-11-23 14:32:54 871

原创 Alibaba微服务组件Nacos注册中心

5. 在注册中心有一个定时任务timerTask3, 如果注册中心在规定的时间内, 没有收到微服务的心跳, 那么就认为服务挂了, 将其状态设置为down, 下次拉取的时候, 这台服务器不会被拉取过去. 其实,这是一个状态修改的过程。4. 商品服务有一个定时任务timerTask2, 定期去任务中心拉取服务列表, 并将其保存在客户端缓存中, 当请求过来的时候, 通过ribbon拉取客户端缓存的ip, 按照负载均衡策略, 选择指定的订单服务发送远程调用,这个时候, 我们怎么做的呢?

2023-11-16 10:51:15 229

原创 微服务和Spring Cloud Alibaba介绍

微服务架构比 SOA架构粒度会更加精细,让专业的人去做专业的事情(专注),目的提高效率,每个服务于服务之间互不影响,微服务架 构中,每个服务必须独立部署,微服务架构更加轻巧,轻量级。这时候,我们就思考可不可以将重复的代码抽取出来,做成统一 的业务层作为独立的服务,然后由前端控制层调用不同的业务层服务呢?在分布式架构下,当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加 一个调度中心对集群进行实时管理。随着互联网的发展,网站应用的规模也在不断的扩大,进而导致系统架构也在不断的进行变化。

2023-11-16 10:08:40 639

原创 ElasticSearch 高级查询语法Query DSL实战

当数据写入 ES 时,数据将会通过 分词 被切分为不同的 term,ES 将 term 与其对应的文 档列表建立一种映射关系,这种结构就是 倒排索引。这样当我们去搜索某个关键词时,ES 首先根据它的前缀或者后缀迅速缩小关键词的在 term dictionary 中的范围,大大减少了磁盘IO的次数。2、dynamic设为false,Mapping 不会被更新,新增字段的数据 无法被索引,但是信息会出现在 _source中。Elasticsearch 的JSON文档中的每个字段,都有自己的倒排索引。

2023-11-08 11:36:23 114

原创 ElasticSearch快速入门实战

在Elastic Stack之前我们听说过ELK,ELK分别是Elasticsearch,Logstash,Kibana这 三款软件在一起的简称,在发展的过程中又有新的成员Beats的加入,就形成了Elastic Stack。假如,我们有一个站内搜索的功能,通过某个关键词来搜索相关的文章,那么这个关键词可 能出现在标题中,也可能出现在文章内容中,那我们将会在创建或修改文章的时候,建立一 个关键词与文章的对应关系表,这种,我们可以称之为倒排索引。当单纯的对已有数据进行搜索时,Solr更快。

2023-10-31 13:37:26 417

原创 Kafka生产问题总结及性能优化实践

实现思路:发送延时消息时先把消息按照不同的延迟时间段发送到指定的队列中(topic_1s,topic_5s,topic_10s,...topic_2h,这个一般不能支持任意时间段的延时),然后通过定时器进行轮训消费这些topic,查看消息是否到期,如果到期就把这个消息发送到具体业务处理的topic中,队列中消息越靠前的到期时间越早,具体来说就是定时器在一次消费过程中,对消息的发送时间做判断,看下是否延迟到对应时间了,如果到了就转发,如果还没到这一次定时任务就可以提前结束了。性能最高,但是最容易丢消息。

2023-10-30 17:00:18 305

原创 Kafka设计原理详解

每个consumer会定期将自己消费分区的offset提交给kafka内部topic:__consumer_offsets,提交过去的时候,key是consumerGroupId+topic+分区号,value就是当前offset的值,kafka会定期清理topic里的消息,最后就保留最新的那条数据。rebalance过程中,消费者无法从kafka消费消息,这对kafka的TPS会有影响,如果kafka集群内节点较多,比如数百个,那重平衡可能会耗时极多,所以应尽量避免在系统高峰期的重平衡发生。

2023-10-30 16:44:33 76

原创 kafka基本原理详解

一个topic,代表逻辑上的一个业务数据集,比如按数据库里不同表的数据操作消息区分放入不同topic,订单相关操作消 息放入订单topic,用户相关操作消息放入用户topic,对于大型网站来说,后端数据都是海量的,订单消息很可能是非常 巨量的,比如有几百个G甚至达到TB级别,如果把这么多数据都放在一台机器上可定会有容量限制问题,那么就可以在 topic内部划分多个partition来分片存储数据,不同的partition可以位于不同的机器上,每台机器上都运行一个Kafka的 进程Broker。

2023-10-30 16:32:12 107

原创 RabbitMQ常见问题

RabbitMQ常见问题

2023-09-14 17:35:23 679

原创 RabbitMQ编程模型

RabbitMQ编程模型

2023-09-14 15:33:21 550

原创 RabbitMQ基础概念-02

RabbitMQ基础概念

2023-09-12 21:31:22 926

原创 Rabbitmq基本概念-01

MQ介绍

2023-09-12 21:21:57 78

原创 Zookeeper集成SpringBoot

4. 创建多级节点 /app1/p1 :create().creatingParentsIfNeeded().forPath("",data)Zookeeper现有常见的Java API如:原生JavaAPI、Curator、ZkClient等。3. 设置节点的类型:create().withMode().forPath("",data)2. 创建节点 带有数据:create().forPath("",data)1. 基本创建 :create().forPath("")

2023-08-27 16:30:57 459

原创 Zookeeper特性与节点数据类型详解

和持久节点的区别是 ZK 服务 端启动后,会有一个单独的线程去扫描,所有的容器节点,当发现容器节点的子节点数量为 0 时,会自动删除该节点。可有效避免了数据更新时出现的先后顺序问题。,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发 生变化,Zookeeper 就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反 应。1.弱一致性的特殊形式,不保证在任意时刻任意节点上的同一份数据都是相同的,但是随着时间的迁 移,不同节点上的同一份数据总是在向趋同的方向变化。

2023-08-09 21:56:26 2126

原创 Netty 粘包半包

换句话说,如果一个Handler没有使用@ChannelHandler.Sharable注解修饰,并试图将同一个Handler实例添加到多个ChannelPipeline通道流水线,或在同一个ChannelPipeline通道流水线中添加同一个Handler实例时, Netty将会抛出异常;组的,这个问题只能通过上层的应用协议栈设计来解决,根据业界的主流协议的解决方案,:本身作为无连接的不可靠的传输协议(适合频繁发送较小的数据包),他不会对。)服务端分两次读取到了两个数据包,第一次读取到了完整的。

2023-08-05 22:04:16 287

原创 epoll、poll、select的原理和区别

select有最大文件描述符数量限制;poll,epoll则没有最大文件描述符数量限制。select,poll每次调用都要把fd集合从用户态往内核态拷贝一次,并且要把current往设备等待队列中挂一次,而epoll只在调用epoll_ctl时拷贝一次,而且把current往等待队列上挂也只挂一次(在epoll_wait的开始,注意这里的等待队列并不是设备等待队列,只是一个epoll内部定义的等待队列)。这也能节省不少的开销。

2023-08-05 20:21:52 210

原创 Netty使用和常用组件辨析

比如下图,我们在网络上传递的数据,要求加密,但是加密后 密文比较大,需要压缩后再传输,而且按照业务要求,需要检查报文中携带的用户信息是否 合法,于是我们实现了 5。操作都是异步的,我们知道“异步的意思就是不需要主动等待结果 的返回,而是通过其他手段比如,状态通知,回调函数等”,那就是说至少我们需要一种获 得异步执行结果的手段。比如入站处理,对于收到的数据,只有先解压才能得到密文,才 能解密,只有解密后才能拿到明文中的用户信息进行授权检查,所以解压->的工作,它们是在应用程序的初始化 或者引导阶段被安装的。

2023-08-05 20:05:15 218

原创 BIO实战、NIO编程与直接内存、零拷贝深入辨析-02

以写为例,应用程序都是将数据写入 缓冲,再通过通道把缓冲的数据发送出去,读也是一样,数据总是先从通道读到缓冲,应用 程序再读缓冲的数据。登记的服务有可能在我们的系统中就是一个名字,怎么变成实际执行的对象实例,当然 是使用反射机制。我们最开始开发的时候,一个应用一台机器,将所有功能都写在一起,比如说比较常见 的电商场景,服务之间的调用就是我们最熟悉的普通本地方法调用。要解决的是被调用的服务本质上是远程的服务,但是调 用者不知道也不关心,调用者只要结果,具体的事情由代理的那个对象来负责这件事。

2023-07-15 22:16:31 288

原创 深入理解网络通信和TCP、IP协议-01

首部的结构由协议的具体规范详细定义。在数据发送的过程中,如果用一个固定的值一直作为超时计时器的 时长是非常不经济也非常不准确的方法,这样的话,超时的时长就需要根据网络情况动态调 整,就需要采样统计一个数据包从发送端发送出去到接收到这个包的回复这段时长来动态设 置重传超时值,这个时长就是为 RTT。的主要目的是支持高速广域网上的海量数据传 输,最典型的例子就是建立在光纤广域网上的网格计算,一些研究所在这样的网 络上运行他们的分布式的数据密集程式,例如,远程访问仪器、分布式数据挖掘 和高分辨率的多媒体流。

2023-07-15 21:23:21 1602 1

原创 多数据源切换、读写分离-02

2、配置数据源。

2023-07-15 20:46:30 237

原创 ShardingJDBC分库分表实战与核心原理-01

ShardingSphere是一款起源于当当网内部的应用框架。2015年在当当网内部诞生,最初就叫ShardingJDBC。2016年的时候,由其中一个主要的开发人员张亮,带入到京东数科,组件团队继续开发。在国内历经了当当网、电信翼支付、京东数 科等多家大型互联网企业的考验,在2017年开始开源。并逐渐由原本只关注于关系 型数据库增强工具的ShardingJDBC升级成为一整套以数据分片为基础的数据生态 圈,更名为ShardingSphere。

2023-07-03 21:19:17 658

原创 MySQL生产环境高可用架构详解

随着现在互联网的应用越来越大,数据库会频繁的成为整个应用的性能瓶颈。而 我们经常使用的MySQL数据库,也会不断面临数据量太大、数据访问太频繁、数据 读写速度太快等一系列的问题。所以,我们需要设计复杂的应用架构来保护孱弱的 数据库,例如添加Redis缓存,增加MQ进行流量削峰等等。但是,数据库本身如果 不能得到提升,这就相当于是水桶理论中的最短板。而要提升数据库的性能,一种思路,当然是对数据库本身进行优化,例如对 MySQL进行优化配置,或者干脆换成ClickHouse这一类的针对大数据的产品。

2023-06-24 16:47:15 1474

原创 MongoDB复制(副本)集实战及其原理分析-04

Mongodb复制集(Replication Set)由一组Mongod实例(进程)组成,包含一个Primary节点和多个Secondary节点,Mongodb Driver(客户端)的所有数据都写入Primary,Secondary从Primary同步写入的数据,以保持复制集内所有成员存储相同的数

2023-06-18 13:28:00 1692

原创 MongoDB索引详解-03

索引是一种用来快速查询数据的数据结构。B+Tree就是一种常用的数据库索引数据结构,MongoDB采用B+Tree 做索引,索引创建在colletions上。MongoDB不使用索引的查询,先扫描所有的文档,再匹配符合条件的文档。使用索引的查询,通过索引找到文档,使用索引能够极大的提升查询效率。按照索引包含的字段数量,可以分为单键索引和组合索引(或复合索引)。按照索引字段的类型,可以分为主键索引和非主键索引。按照索引节点与物理记录的对应方式来分,可以分为聚簇索引和非聚簇索引,其。

2023-06-17 15:03:27 3922

原创 MongoDB聚合操作-02

聚合操作处理数据记录并返回计算结果。聚合操作组值来自多个文档,可以对分组数据执行 各种操作以返回单个结果。聚合操作包含三类:单一作用聚合、聚合管道、MapReduce。

2023-06-17 13:18:04 1458

原创 MongoDB快速实战与基本原理-01

MongoDB是一个文档数据库(以 JSON 为数据模型),由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。文档来自于“JSON Document”,并非我们一般理解的 PDF,WORD 文档。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,数据格式是BSON,一种类似JSON的二进制形式的存储格式,简称Binary JSON ,和JSON一样支持内嵌的文档对象和。

2023-06-16 22:14:43 1738

原创 Redis常见问题、各个分布式锁优缺点-05

Redis集群为什么至少需要三个master节点,并且推荐节点数为奇数?因为新master的选举需要大于半数的集群master节点同意才能选举成功,如果只有两个master节点,当其中一个挂了,是达不到选举新master的条件的。

2023-06-11 11:52:37 1447 1

原创 Redis 哨兵架构、集群选举原理分析-04

哨兵架构下client端第一次从哨兵找出redis的主节点,后续就直接访问redis的主节点,不会每次都通过 sentinel代理访问redis的主节点,当redis的主节点发生变化,哨兵会第一时间感知到,并且将新的redis 主节点通知给client端(这里面redis的client端一般都实现了订阅功能,订阅sentinel发布的节点变动消息)redis集群没有过半机制会有脑裂问题,网络分区导致脑裂后多个主节点对外提供写服务,一旦网络分区恢复,会将其中一个主节点变为从节点,这时会有大量数据丢失。

2023-06-11 09:47:45 2838 1

原创 Redis Cluster集群运维-03

当客户端向一个错误的节点发出了指令,该节点会发现指令的 key 所在的槽位并不归自己管理,这时它会向客。令后除了跳转到正确的节点上去操作,还会同步更新纠正本地的槽位映射表缓存,后续所有 key 将使用新的槽。gossip协议的优点在于元数据的更新比较分散,不是集中在一个地方,更新请求会陆陆续续,打到所有节点上。: 某个节点判断另一个节点fail之后,就发送fail给其他节点,通知其他节点,指定的节点宕机了。优点在于元数据的更新和读取,时效性非常好,一旦元数据出现变更立即就会更新到集中式的存储中,其他节。

2023-06-10 16:26:34 781

原创 Redis持久化、主从与哨兵架构-02

slave都维护了复制的数据下标offset和master的进程id,因此,当网络连接断开后,slave会请求master。sentinel代理访问redis的主节点,当redis的主节点发生变化,哨兵会第一时间感知到,并且将新的redis。毕以后,master会把这份rdb文件数据集发送给slave,slave会把接收到的数据进行持久化生成rdb,然后。的集群元数据信息,比如6379的redis如果挂了,假设选举出的新主节点是6380,则sentinel文件里的集。

2023-06-03 19:04:35 421

原创 Redis核心数据结构-01

String 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字。:get、set、incr、decr、mget等。String是最常用的一种数据类型,普通的key/ value 存储都可以归为此类,即可以完全实现目前 Memcached 的功能,并且效率更高。还可以享受Redis的定时持久化,操作日志及 Replication等功能。常规key-value缓存应用。常规计数: 微博数, 粉丝数。

2023-06-03 11:45:59 214

原创 安装gitlab 及linux 开放端口

链接:https://pan.baidu.com/s/1BhkmGd5V8LSfmSbXRqp_5g。gitlab 地址。

2023-05-10 11:16:57 357 1

原创 maven build An unknown compilation problem occurred

maven build An unknown compilation problem occurred

2022-11-25 10:56:17 1242

原创 获取远程文件下载

获取远程文件下载

2022-11-03 11:32:38 274

原创 linux下安装ffmpeg的详细教程

一、centos linux下安装ffmpeg1、下载解压wget http://www.ffmpeg.org/releases/ffmpeg-4.1.tar.gztar -zxvf ffmpeg-4.1.tar.gz2、 进入解压后目录,输入如下命令/usr/local/ffmpeg为自己指定的安装目录cd ffmpeg-4.1./configure --prefix=/usr/local/ffmpegmakemake install3、 如果安装ffmpeg过程中

2022-04-20 10:50:12 2155

转载 史上最简单Git入门教程

一:Git是什么?Git是目前世界上最先进的分布式版本控制系统。工作原理 / 流程:Workspace:工作区Index / Stage:暂存区Repository:仓库区(或本地仓库)Remote:远程仓库二:SVN与Git的最主要的区别?SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在..

2022-02-17 11:29:08 10737 5

原创 搭建GitLab服务器

下载1.点击下载GitLab的rpm文件2.或者命令下载(比较慢,建议使用第一种方法直接下载)wget https://link.zhihu.com/?target=https%3A//mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm没有wget命令的,需要先安装wget命令yum -y install wget3.安装1、进入到gitlab-ce-...

2022-02-17 11:08:04 3433

原创 使用java 实现 word 转换成图片

1.下载aspose-words-15.8.0-jdk16.jar包链接:https://pan.baidu.com/s/1vJlZcIf_dzjFsyCVqGcw1Q提取码:iss02.代码package test;import java.awt.Color;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.ByteArrayInputStream;impo..

2021-07-19 11:38:44 8138 2

原创 配置Samba(CIFS)

试验环境:一台CentOS 7.0的虚拟机,一台Windows 的普通台式机。注意:网络一定能够ping通关闭SeLinux# setenforce 0# getenforce关闭防火墙#service firewalld stop# service firewalld status安装和配置Samba服务。# yum install samba -y配置Samba的配置文件。# vi /etc/samba/smb.conf在最后加入一段代码。[

2021-05-06 11:30:04 316

本地post请求工具

本地post请求工具

2017-06-07

webService 测试功具

webService 测试功具

2017-06-07

Mondrain导出PDF乱码

Mondrain导出PDF乱码 替换/WEB-INF/jpivot/print

2015-01-22

iBATIS_JPetStore-4.0.5

iBATIS_JPetStore-4.0.5

2014-08-18

空空如也

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

TA关注的人

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