自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 RocketMQ源码解析之负载均衡

RocketMQ源码解析之负载均衡RocketMQ中的负载均衡都在Client端完成,具体来说的话,主要可以分为Producer端发送消息时候的负载均衡和Consumer端订阅消息的负载均衡。Producer 的负载均衡Producer端在发送消息的时候,会先根据Topic找到指定的TopicPublishInfo,在获取了TopicPublishInfo路由信息后,RocketMQ的客户端在默认方式下selectOneMessageQueue()方法会从TopicPublishInfo中的mess

2020-07-29 17:58:37 326

原创 RocketMQ源码解析之消息存储

RocketMQ源码解析之消息存储消息存储是 RocketMQ 中最为复杂和最为重要的一部分,包含 RocketMQ 的消息存储整体架构、PageCache 与 Mmap 内存映射以及 RocketMQ 中两种不同的刷盘方式三方面来分别展开叙述。下边是一张RocketMQ官方的一张消息架构图:消息存储架构图中主要有下面三个跟消息存储相关的文件构成。(1) CommitLog:消息主体以及元数据的存储主体,存储Producer端写入的消息主体内容,消息内容不是定长的。单个文件大小默认1G ,文件名长

2020-07-27 18:40:36 248

原创 Zookeeper源码解析之选举机制

Zookeeper源码解析之选举机制ZooKeeper 的使用一般来说都是集群的,ZooKeeper 的集群状态所示,集群部署时要选举出一台服务作为整个集群的领导者选举机制中的概念:服务id :sid(id),服务的标识服务器中存放的最大数据ID : zxid选举/投票纪元:epoch,即第几轮选举Server状态——选举状态:LOOKING:竞选状态。FOLLOWING:随从状态,同步leader状态,参与投票。OBSERVING:观察状态,同步leader状态,不参与投票。LEA

2020-07-24 19:27:53 424

原创 Zookeeper源码解析之监听机制

Zookeeper源码解析之监听机制ZooKeeper 允许客户端向服务端注册一个 Watcher 监听,当服务器的一些特定事件触发了这个 Watcher,那么就会向指定客户端发送一个事件通知来实现分布式的通知功能。ZooKeeper 的 Watcher 机制主要包括客户端线程、客户端 WatchManager 和 ZooKeeper 服务器三部分。ZooKeeper Watcher 存储ZooKeeper 的 Watcher 不管在客户端还是在 ZooKeeper 服务器中都有存储,首先我们看一下

2020-07-23 21:23:50 364

原创 Zookeeper源码解析之数据基础解析

Zookeeper源码解析之数据基础解析ZooKeeper是一项集中式服务,用于维护配置信息,命名,提供分布式同步和提供组服务,ZooKeeper的目的是将不同服务的本质提炼成一个非常简单的界面,以实现集中式协调服务。ZooKeeper数据模型ZooKeeper具有分层的名称空间,非常类似于分布式文件系统。唯一的区别是,名称空间中的每个节点都可以具有与其关联的数据以及子级。就像拥有一个文件系统一样,该文件系统也允许文件成为目录。任何的路径遵循以下约束:空字符(\ u0000)不能是路径名的一部分

2020-07-22 20:06:11 399

原创 Dubbo源码解析之负载均衡

Dubbo源码解析之负载均衡Dubbo LoadBalance组件 为负载均衡组件,它的职责是将网络请求,或者其他形式的负载“均摊”到不同的机器上。避免集群中部分服务器压力过大,而另一些服务器比较空闲的情况。通过负载均衡,可以让每台服务器获取到适合自己处理能力的负载。在为高负载服务器分流的同时,还可以避免资源浪费,一举两得。负载均衡可分为软件负载均衡和硬件负载均衡。在 Dubbo 中,所有负载均衡实现类均继承自 AbstractLoadBalance,该类实现了 LoadBalance 接口,并封装了一

2020-07-14 19:46:36 142

原创 Dubbo源码解析之TPS控制

Dubbo源码解析之TPS控制dubbo使用Filter,再调用服务前对对付进行tps的验证判断,在进行Dubbo服务调用TPS限制,主要委托TPSLimiter实现类进行TPS的限制。TPSLimiter,返回布尔值,以允许在最后一次调用和当前调用内允许对提供程序服务的方法或特定方法的调用。public interface TPSLimiter { /** * 根据规则判定当前invocation的url能否被调用 * * @param url

2020-07-14 10:39:00 261

原创 Dubbo源码解析之服务集群容错

Dubbo源码解析之服务集群容错集群容错包含四个部分,分别是服务目录 Directory、服务路由 Router、集群 Cluster 和负载均衡 LoadBalance。集群容错的所有组件服务目录 Directory服务目录中存储了一些和服务提供者有关的信息,通过服务目录,服务消费者可获取到服务提供者的信息,比如 ip、端口、服务协议等。通过这些信息,服务消费者就可通过 Netty 等客户端进行远程调用。在一个服务集群中,服务提供者数量并不是一成不变的,如果集群中新增了一台机器,相应地在服务目录

2020-07-13 18:08:24 195

原创 Dubbo源码解析之服务的引用

#Dubbo服务引用在Dubbo中提供者负责服务的导出和发布,而消费着负责订阅服务和服务的导入。在 Dubbo 中,我们可以通过两种方式引用远程服务。第一种是使用服务直连的方式引用服务,第二种方式是基于注册中心进行引用。Dubbo 服务引用的时机有两个,第一个是在 Spring 容器调用 ReferenceBean 的 afterPropertiesSet 方法时引用服务,第二个是在 ReferenceBean 对应的服务被注入到其他类中时引用。这两个引用服务的时机区别在于,第一个是饿汉式的,第二个是懒

2020-07-11 17:13:30 195

原创 Dubbo源码解析之服务的导出

Dubbo服务的导出Dubbo 服务导出过程始于 Spring 容器发布刷新事件,Dubbo 在接收到事件后,会立即执行服务导出逻辑。整个逻辑大致可分为三个部分,第一部分是前置工作,主要用于检查参数,组装 URL。第二部分是导出服务,包含导出服务到本地 (JVM),和导出服务到远程两个过程。第三部分是向注册中心注册服务,用于服务发现。下边是Dubbo提供的一张服务导出的时序图,从图中我们可以大概的了解到Dubbo导出过程:下边我们大概了解一下源码的导出过程:当DubboBootstrap启动后进行服

2020-07-10 18:38:30 287

原创 Dubbo源码解析之自适应扩展机制

#Dubbo自适应扩展机制Dubbo设计时采用Microkernel + Plugin模式,Microkernel只负责组装Plugin,Dubbo自身的功能也是通过扩展点实现的,也就是Dubbo的所有功能点都可被用户自定义扩展所替换。 Dubbo 就是通过 SPI 机制加载所有的组件,不过,Dubbo 并未使用 Java 原生的 SPI 机制,而是对其进行了增强,使其能够更好的满足需求SPI 全称为 Service Provider Interface,是一种服务发现机制。SPI 的本质是将接口实现类

2020-07-09 19:12:00 489

原创 Redis分布式集群知识

#Redis分布式集群知识随着应用数据越来越大和,对性能的要求越来越高,单机模式很难满足日渐多样化的需求,所以Redis也提供了分布式集群的部署方案,满足当下高并发,高可靠的需求。Redis是单线程的,集群不仅能更好的利用CPU的资源,还能提高对应用层的高可用,分布式集群还能避免单个Redis发生故障导致整个缓存的崩溃,引起应用的故障。##Redis集群的基础Redis本身的一些设计,为Redis的集群打下了坚实的基础。Redis的持久化Redis支持RDB和AOF两种持久化机制,持久化功能有效

2020-07-08 21:22:39 298

原创 Redis基础知识随堂笔记

Redis基础知识Redis最为基于键值对的NoSQL数据库,具有高性能、丰富的数据结构、持久化、高可用和分布式等特性,同时Redis本身足够稳定,所以成为我们保证项目高并发、低迟延的一个重要的技术选择。Redis与很多的键值对数据库不同,Redis的值可以是string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、BitMaps(位图)、HyperLog、GEO(地理信息定位)等多种数据结构和算法组成,因此Redis可以满足很多的应用场景。Redis选择将数据放

2020-07-07 19:21:36 103

原创 springcloud 服务优化

Zuul 优化时涉及到四个地方,使用的服务器[tomcat]、zuul、hystrix和ribbon。其他springcloud服务优化服务器[tomcat]和ribbon。统一优化日志异步打印。service:Tomcat的最大并发数是可以配置的,实际运用中,最大并发数与硬件性能和CPU数量都有很大关系的。更好的硬件,更多的处理器都会使Tomcat支持更多的并发。Tomcat 默认的HTTP实现是采用阻塞式的Socket通信,每个请求都需要创建一个线程处理,当一个进程有500个线程..

2020-07-06 10:47:05 581

原创 mysql 设计优化浅谈

数据设计 schema表设计 范式和反范式一般来说我们在开发过程根据业务需求画出适合业务的E-R图,初级的满足业务的功能,但在满足于功能的同时,我们也要考虑设计的合理性和使用的性能,关系型数据库的设计一般来说遵循范式,目前关系性数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。第一范式(1NF): 满足最基本的条件,每一个分量都是不可分的数据项。 每个实例或记录...

2020-07-03 17:02:46 185

原创 java SPI 机制简介

java SPI 机制SPI java机制1.java实现原理2.代码示例服务服务提供商A服务提供商B服务提供调用服务加载配置3.java源码解析4.其他注意事项SPI java机制SPI英文为Service Provider Interface 是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件。java中实现spi的主要类为 ServiceLoader...

2019-09-18 21:05:54 404

空空如也

空空如也

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

TA关注的人

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