自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 收藏
  • 关注

原创 Nacos 实现服务平滑上下线(Ribbon 和 LB)

不知道各位在使用的时候有没有遇到过服务刚上线偶尔会出现一段时间的,或者服务下线后,下线服务仍然被调用的问题。而以上问题都是由于Ribbon或者的默认处理策略有关,其中Ribbon默认是 30s 更新一次服务信息,则是默认 35s 更新一次缓存。接下来本文讲解则如何通过监听Nacos的服务变更事件来实时进行相关服务的更新,以实现服务的平滑上下线。

2024-03-28 11:12:38 868 2

原创 Sentinel 规则持久化

我们知道我们的Sentinel-dashboard配置的规则,在我们的微服 务以及控制台重启的时候就清空了,因为他是基于内存的。

2023-06-23 10:42:06 771

原创 Elasticsearch面试题

Elasticsearch面试题

2022-11-27 10:32:00 271 1

原创 Elasticsearch实用教程---从门->进阶->精通

Elasticsearch学习笔记 入门,进阶,精通

2022-11-27 09:53:57 846

原创 微服务分布式事务解决方案Seata

文章目录一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结一、什么是Seata?Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用 的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事 务模式,为用户打造一站式的分布式解决方案(AT模式是阿里首推的模式, 阿里云上有商用版本的GTS[Global Transaction service 全局事务服务] ) 。提示: 业务场景:角色划分:...

2022-03-25 11:47:58 3648

原创 Spring 为何需要三级缓存解决循环依赖,而不是二级缓存

注意:此文默认大家对三级缓存理解了直接上代码@Nullable protected Object getSingleton(String beanName, boolean allowEarlyReference) { Object singletonObject = this.singletonObjects.get(beanName); if (singletonObject == null && isSingletonCurrently

2022-03-04 18:06:18 642

原创 Docker下Redis集群部署及动态扩容缩容

新建6个docker容器redis实例docker run -d --name redis-node-1 --net host --privileged=true -v /data/redis/share/redis-node-1:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6381docker run -d --name redis-node-2 --net host --privileged=true -v

2022-03-02 19:02:39 1195 1

原创 docker下MySQL主从复制搭建

新建主服务器容器实例3307docker run -p 3307:3306 --name mysql-master \-v /mydata/mysql-master/log:/var/log/mysql \-v /mydata/mysql-master/data:/var/lib/mysql \-v /mydata/mysql-master/conf:/etc/mysql \-e MYSQL_ROOT_PASSWORD=root \-d mysql:5.7 .

2022-03-02 16:00:22 118

原创 docker启动容器时挂载需要注意事项

mysql启动命令:docker run -d -p 3306:3306 --privileged=true -v /lyq/mysql/log:/var/log/mysql -v /lyq/mysql/data:/var/lib/mysql -v /lyq/mysql/conf:/etc/mysql/-e MYSQL_ROOT_PASSWORD=123456 --name=mysql mysql:5.7redis启动命令:docker run -d -p 6379:6379 --privi.

2022-03-02 15:14:18 690

原创 java程序线上故障排查及解决方案

java程序线上故障排查及解决方案

2022-03-01 15:53:25 429

原创 排查线上问题掌握这几个Linux命令

Linux命令,运维常用命令

2022-02-27 09:34:01 637

原创 Dubbo面试题

dubbo常见面试题

2022-02-22 22:47:34 177

原创 Eureka面试题

Eureka面试题总结

2022-02-22 11:39:25 903 1

原创 Kafka面试题

kafka常见面试题

2022-02-21 16:25:51 1160

原创 Redis面试题

Redis常见面试题总结

2022-02-20 16:42:43 105

原创 MySQL面试题

MySQL面试题汇总

2022-02-19 17:47:03 412

原创 Elasticsearch面试题

Elasticsearch面试题

2022-02-19 15:09:47 224

原创 MongoDB集群架构

一、MongoDB 复制集特性复制集群的架构 复制集群搭建 复制集群的选举配置1.复制集群的架构2.复制集群搭建基础示例2.复制集群搭建基础示例主节点配置dbpath=/data/mongo/masterport=27017fork=truelogpath=master.logreplSet=MyCluster从节点配置dbpath=/data/mongo/slaveport=27018fork=truelogpath=slave.l

2022-02-18 16:39:56 1344

原创 MongoDB的聚合&MongoDB的索引

一、mongoDB的聚合操作知识点:pipeline 聚合 mapRedurce 聚合pipeline 与mapRedurce 比较pipeline 速度快,但只能运行在单机上,适合数据量小的实时聚合操作。mapRedurce 可以运行在分布式节点,适适大数量并且复杂的聚合分析操作pipeline 聚合pipeline 聚合其特性是运行速度快,只能运行在单机上,并且对资源的使用有一定限制如下:单个的聚合操作耗费的内存不能超过20%返回的结果集大小在16M以内语法说明

2022-02-17 21:39:55 1111

原创 MongoDb快速入门

一、MongoDb的体系结构概要:NoSql的概念 NoSql的应用场景 MongoDb的逻辑组成1、NoSql的概念NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是 SQL ”,互联网的早期我们的数据大多以关系型数据库来存储的。其特点是规范的数据结构(预定义模式)、强一至性、表与表之间通过外键进行关联,这些特征使我们对数据的管理更加清晰和严谨,但随着互联网的发展数据成爆炸式的增长我们对数据库需要更好的灵活性和更快的速度。这就是NoSql可以做到的。它不需要预先

2022-02-16 21:25:57 142

原创 mysql主从架构的实现

目录 环境准备: 准备步骤: 实现步骤: 配置master主服务器 创建复制帐号 查看主服务器状态 配置slave从服务器 启动从服务器复制线程 查看从服务器状态 测试 扩展——实现一主多从 需求分析 具体实现过程 扩展——实现半同步复制 三种复制方式 实现半同步复制 环境准备: 准备步骤: 实现步骤: 配...

2022-02-16 17:04:54 686

原创 ShardingSphere&Atlas&Mycat对比

sharding + proxysharding + proxy 分库分表的路由通常在应用层(APP)与DB层之间实现,中间层根据偏向DB还是偏向应用层可分为:DB proxy 和 JDBC proxy。无论是DB proxy还是Jdbc proxy都有很多开源实现,如下图简单做一个对比 实现方案 业界组件 原厂 功能特性 备注 DB proxy-based 多语言支持

2022-02-16 11:46:22 2251 1

原创 ShardingSphere之sharding-proxy实战场景

shardingsphere-proxy安装与启动下载shardingsphere-4.0.0-RC1版本(自己选择一个自己喜欢的版本即可)http://mirrors.tuna.tsinghua.edu.cn/apache/incubator/shardingsphere/4.0.0-RC2/apache-shardingsphere-incubating-4.0.0-RC2-sharding-proxy-bin.tar.gz解压 tar ‐zxvf apache‐shardings

2022-02-16 11:44:04 1656

原创 ShardingSphere核心源码剖析

下载源码(选择自己喜欢的版本即可)https://github.com/apache/incubator-shardingsphere/archive/4.0.0-RC2.zip2、导入工程到IDEA3、sharding-core-parse编译注意先编译此工程是因为:工程内的部分类需要依靠antlr4 SQL解析引擎生成,否则直 接编译sharding工程讲报部分类找不到的错误。编译本工程注意用的是:lifecycle下的install4、编译全工程注意是用..

2022-02-16 11:28:18 1769

原创 ShardingSphere快速开始与核心概念

定位 ShardingSphere定位为关系型数据库中间件功能列表:核心三套件Sharding-JDBC 客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的 JDBC驱动,完全兼容JDBC和各种ORM框架。适用于任何基于JDBC的ORM框架:JPA, Hibernate, Mybatis, Spring JDBC Template或直 接使用JDBC。 支持任何第三方的数据库连接池:DBCP, C3P0, BoneCP, Druid, H..

2022-02-12 19:15:00 1000

原创 Netty线程模型源码剖析

Netty线程模型图Netty线程模型源码剖析图Netty线程模型源码剖析图Netty高并发高性能架构设计精髓 主从Reactor线程模型 NIO多路复用非阻塞 无锁串行化设计思想 支持高性能序列化协议 零拷贝(直接内存的使用) ByteBuf内存池设计 灵活的TCP参数配置能力 并发优化无锁串行化设计思想在大多数场景下,并行多线程处理可以提升系统的并发性能。但是,如果对于共享资源的并发访问处理不当,会带来严重的锁竞争,这最终会导致性能的下降。为了尽可能的避.

2022-02-11 08:00:00 261

原创 Netty编解码,粘包拆包及零拷贝

Netty编解码 Netty涉及到编解码的组件有Channel、ChannelHandler、ChannelPipe等,先大概了解下这几个组件的作用。ChannelHandlerChannelHandler充当了处理入站和出站数据的应用程序逻辑容器。例如,实现ChannelInboundHandler接口(或 ChannelInboundHandlerAdapter),你就可以接收入站事件和数据,这些数据随后会被你的应用程序的业务逻辑处理。当你要给连接 的客户端发送响应时,也可以从Channel

2022-02-10 22:46:14 753

原创 Netty核心功能与线程模型

Netty初探 NIO 的类库和 API 繁杂, 使用麻烦: 需要熟练掌握Selector、 ServerSocketChannel、 SocketChannel、 ByteBuffer等。开发工作量和难度都非常大: 例如客户端面临断连重连、 网络闪断、心跳处理、半包读写、 网络拥塞 和异常流的处理等等。Netty 对 JDK 自带的 NIO 的 API 进行了良好的封装,解决了上述问题。且Netty拥有高性能、 吞吐 量更高,延迟更低,减少资源消耗,最小化不必要的内存复制等优点。Netty

2022-02-10 15:41:59 108

原创 网关服务GateWay

一:什么是SpringCloud gateWaySpring Cloud Gateway是Spring Cloud官方推出的第二代网关框架,取代Zuul 网关。网关作为流量的,在微服务系统中有着非常作用。据说性能是第一代网关 zuul的1.5倍。(基于Netty,WebFlux), 注意点:由于不是Sevlet容器,所以他不能打成war包, 只支持SpringBoot2.X不 支持1.x1.1)网关作用: 网关常见的功能有路由转发、权限校验、限流控制等作用。1.2)为什么要使用SpringClo

2022-02-09 22:36:59 3668 1

原创 Nacos服务发现与注册源码剖析

Nacos&Ribbon&Feign核心微服务架构图架构原理1、微服务系统在启动时将自己注册到服务注册中心,同时外发布 Http 接口供其它系统调用(一般都是基于Spring MVC)2、服务消费者基于 Feign 调用服务提供者对外发布的接口,先对调用的本地接口加上注解@FeignClient,Feign会针对 加了该注解的接口生成动态代理,服务消费者会针对 Feign 生成的动态代理去调用方法时,会在底层生成Http协议格式 的请求,类似 /stock/deduct?pr

2022-02-09 20:46:06 530 1

原创 Nacos配置中心

什么是配置管理??所有的环境的配置都是明文的 被太多开发人员都知道了。 业务场景:张三开发了一个新功能,业务需要,保留原来老逻辑的代码,所有他抽取了一个开关变量 isNewBusi来控制,突然新功能上了生产后,发现有bug,怎么做到修改isNewBusi的值不需要重启。根据上图我们知道配置管理的作用可以主要总结如下 1)不同环境不管配置2) 配置属性动态刷新引入配置中心根据这幅图,我们微服务需要解决的问题1)我微服务怎么知道配置中心的地址2) 我微服务到底需要连接哪个

2022-02-09 16:09:52 1015

原创 微服务之OpenFeigin

一:什么是Feign1.1)Feign是Netflix开发的声明式、模板化的HTTP客户端,其灵感来自Retrofit、JAXRS­2.0以及WebSocket。Feign 可帮助我们更加便捷、优雅地调用HTTP API。在Spring Cloud中,使用Feign非常简单——只需创建接口,并在接口上添加注解即可。 Feign支持多种注解,例如Feign自带的注解或者JAX­RS注解等。Spring Cloud对Feign进行了增强,使其支持Spring MVC注解,另外还整合了Ribbon和Eur

2022-02-09 15:38:30 1042

原创 微服务之负载均衡组件Ribbon

一:负载均衡的二种实现1.1)服务端的负载均衡(Nginx)①:我们用户服务发送请求首先打到Ng上,然后Ng根据负载均衡算法进行选择一个服务调 用,而我们的Ng部署在服务器上的,所以Ng又称为服务端的负载均衡(具体调用哪个服务, 由Ng所了算)1.2)客户端负载均衡(ribbonspring cloud ribbon是 基于NetFilix ribbon 实现的一套客户端的负载 均衡工具,Ribbon客户端组件提供一系列的完善的配置,如超时,重试 等。通过Load Balancer(

2022-02-09 10:22:33 1449

原创 Rocketmq核心源码剖析

Rocketmq源码调试环境构建1、下载https://github.com/apache/rocketmq/ 对应工程版本文件2、使用Idea 打开Rocketmq工程。打开工程后我们会看到多个模块,我们需要启动两个服 务Namesrv与Broker服务打开Namesrv服务入口类运行org.apache.rocketmq.namesrv.NamesrvStartup#main打开Broker服务入口类运行org.apache.rocketmq.broker.BrokerStartu

2022-02-08 17:29:41 4770

原创 Rocketmq特性详解&场景介绍

基本概念1、消息模型RocketMQ主要由 Producer、Broker、Consumer 三部分组成,其中Producer 负责 生产消息,Consumer 负责消费消息,Broker 负责存储消息。2、消息生产者(producer) 负责生产消息,一般由业务系统负责生产消息。一个消息生产者会把业务应用系统里产 生的消息发送到broker服务器。RocketMQ提供多种发送方式,同步发送、异步发送、顺 序发送、单向发送。同步和异步方式均需要Broker返回确认信息,单向发送不需要。3、消

2022-02-08 11:52:16 868

原创 rocketmq整体部署与快速实战

rocketmq架构图Apache RocketMQ是一个分布式消息传递和流媒体平台,具有低延迟,高性能和可靠性, 万亿级容量和灵活的可伸缩性。 它由四个部分组成:nameserver,broker,生产者和消费者。 它们中的每一个都可以水平扩展,而没有单个故障点。 如上面的屏幕截图所示。 nameserver:提供轻量级的服务发现和路由。 每个名称服务器记录完整的路由信息,提供相应的读写服务,并支持快速的存储扩展。Broker:通过提供轻量级的TOPIC和QUEUE机制来存储消息。rock

2022-02-08 10:30:42 2009

原创 Kafka性能优化之项目实践

Kafka可视化管理工具kafka-manager安装及基本使用可参考:https://www.cnblogs.com/dadonggg/p/8205302.html线上环境规划JVM参数设置kafka是scala语言开发,运行在JVM上,需要对JVM参数合理设置,参看JVM调优专题修改bin/kafka-start-server.sh中的jvm设置export KAFKA_HEAP_OPTS="‐Xmx16G ‐Xms16G ‐Xmn12G ‐XX:MetaspaceSi..

2022-02-07 21:00:20 531

原创 kafka设计原理详解

kafka设计原理详解Kafka核心总控制器Controller在Kafka集群中会有一个或者多个broker,其中有一个broker会被选举为控制器(Kafka Controller),它负责管理整个 集群中所有分区和副本的状态。当某个分区的leader副本出现故障时,由控制器负责为该分区选举新的leader副本。 当检测到某个分区的ISR集合发生变化时,由控制器负责通知所有broker更新其元数据信息。 当使用kafka-topics.sh脚本为某个topic增加分区数量时,同样还.

2022-02-07 19:54:44 190

原创 高性能消息中间件Kafka实战

Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协 调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系 统、低延迟的实时系统、Storm/Spark流式处理引擎,web/nginx日志、访问日志,消息服务等等,用scala语言编写, Linkedin于2010年贡献给了Apache基金会并成为顶级开源 项目。Kafka的使用场景日志收集:一个公..

2022-02-07 15:34:04 1160

原创 Redis缓存设计与性能优化

多级缓存架构缓存设计缓存穿透缓存穿透是指查询一个根本不存在的数据, 缓存层和存储层都不会命中, 通常出于容错的考虑, 如果从存储 层查不到数据则不写入缓存层。缓存穿透将导致不存在的数据每次请求都要到存储层去查询, 失去了缓存保护后端存储的意义。 造成缓存穿透的基本原因有两个:第一, 自身业务代码或者数据出现问题。第二, 一些恶意攻击、 爬虫等造成大量空命中。缓存穿透问题解决方案:1、缓存空对象String get(String key) {// 从缓存中获取数据.

2022-02-06 13:03:53 240

空空如也

空空如也

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

TA关注的人

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