自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 IO多路复用及理解

一、什么是 I/O 多路复用 我们可以把标准输入、套接字等都看做 I/O 的一路,多路复用的意思,就是在任何一路 I/O 有“事件”发生的情况下,通知应用程序去处理相应的 I/O 事件,这样我们的程序,在同一时刻仿佛可以处理多个 I/O 事件。使用 I/O 复用以后,如果标准输入有数据,立即从标准输入读入数据,通过套接字发送出去;如果套接字有数据可以读,立即可以读出数据。这些 I/O 事件的类型非常多,比如: 标准输入文件描述符准备好可以读。 监听套接字准备好,新的连...

2021-03-06 16:37:24 804

原创 https传输过程原理

1.基础知识 SSL:一般情况下,网站使用的都是明文方式传输数据,但是在涉及到一些隐私信息时(如银行交易),这个时候网站就会跳转到 SSL,SSL的功能就是提供加密数据。这样的话,TCP/IP协议只要做好的自己的事情,数据加密就全权委托给SSL协议完成 TLS:TLS是对SSL的扩展和优化,他可以提供数据安全的同时,确保数据的完整性 HTTPS:超文本传输安全协议。就是http+ssl/tls,可以理解为安全版http 对称加密:对称加密又叫做私钥加密,即信息的发送方和接

2021-03-06 16:16:48 174

原创 CAP理论

一、CAP简介说到分布式系统就一定离不开CAP定理,CAP定理叫作布鲁尔定理。对于设计分布式系统来说(不仅仅是分布式事务)的架构师来说,CAP是一个很重要的理论。 C (一致性):对某个指定的客户端来说,读操作能返回最新的写操作。但如果因为消息丢失、延迟过高发生了网络分区,那么这个时候,当集群节点接收到来自客户端的读请求时,为了不破坏一致性,可能会因为无法响应最新数据,而返回出错信息 A (可用性):指非故障的节点,在合理的时间内返回自己当前的相对新的信息 P (分区容错...

2021-01-07 22:26:24 287 1

原创 RocketMQ消费重试概览

一、RocketMQ的消息消费过程中,有可能失败或报错,且支持消费重试:重试情况(未返回消费成功状态) 1. 消费者抛异常,或返回reconsume_later 2. 网络超时集群消费模式:消费失败后重试广播消费模式:只打印日志不重试并发消费重试 1. 根据消费失败消息的内容,创建新消息(重试主题为%RETRY%+consumerGroup),设置延迟时间重新投递2. 当消息达到延迟时间后,再创建重试主题的消息,保存commitLog,重新消费3. 并发消费...

2021-01-06 16:32:28 784

原创 RocketMQ消息消费

一、RocketMQ介绍RocketMQ是阿里巴巴开源Apache项目,功能强大的分布式消息中间件,经过阿里巴巴双十一考验。Rocketmq在高可用、高性能、负载均衡的系统设计上比较出众。主要特性有:•多主多从架构,高版本支持主从切换•消息负载均衡和水平扩展•Netty高性能网络通信•轻量级NameServer进行消息路由•高性能的消息存储机制•支持消息发送和消费重试•支持顺序消息和事务消息•支持消息轨迹查询和消息回溯 ….....二、消息...

2021-01-06 12:00:43 234

原创 Netty之channel

我们知道,netty中的ByteBuf组件主要是为了替代NIO中的ByteBuffer类而重新设计的,与此类似的还有一个组件:Channel。 Channel组件是为了替代Socket而重新设计的,Channel的接口所提供给我们的API,大大地降低了直接使用Socket时的复杂性。本篇文章,就让我们来了解下netty中的Channel组件。一.Channel定义Netty中对Channel是这样定义的:A nexus to a network socket or a...

2020-12-29 16:45:20 531

原创 分布式协议-Raft

一、分布式系统协议 分布式系统除了提升整个体统的性能外还有一个重要特征就是提高系统的可靠性。提供可靠性可以理解为系统中一台或多台的机器故障不会使系统不可用(或者丢失数据)。 保证系统可靠性的关键就是多副本(即数据需要有备份),一旦有多副本,那么久面临多副本之间的一致性问题。一致性算法正是用于解决分布式环境下多副本之间数据一致性的问题的。业界最著名的一致性算法就是大名鼎鼎的Paxos(Chubby的作者曾说过:世上只有一种一致性算法,就是Paxos)。但Paxos比较难...

2020-12-29 16:32:18 198

原创 JAVA线程池

作为开发人员,我们知道创建线程时会产生系统开销,并且每个线程还会占用一定的内存等资源,更重要的是我们创建如此多的线程也会给稳定性带来危害,因为每个系统中,可创建线程的数量是有一个上限的,不可能无限的创建。线程执行完需要被回收,大量的线程又会给垃圾回收带来压力。但我们的任务确实非常多,如果都在主线程串行执行,那效率也太低了,那应该怎么办呢?于是便诞生了线程池来平衡线程与系统资源之间的关系。针对上面的两点问题,线程池提供了两个解决思路:1.针对反复创建线程开销大的问题,线程池用一些固定的线...

2020-12-29 15:46:27 94

原创 MySQL三大日志Log

mysql三大日志-binlog、redo log和undo log 日志是mysql数据库的重要组成部分,记录着数据库运行期间各种状态信息。mysql日志主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。作为开发,我们重点需要关注的是二进制日志(binlog)和事务日志(包括redo log和undo log),本文接下来会详细介绍这三种日志。一、binlog binlog用于记录数据库执行的写入性操作(不包括查询)信息,以二进制的形式保存在磁盘中。bi...

2020-12-29 15:10:47 659

原创 Dubbo常用调优参数

Dubbo是阿里开源的一款流行的分布式服务框架,有必要了解其常用调优参数:参数名 作用范围 默认值 说明 备注 threads provider 200 业务处理线程池大小 iothreads provider CPU+1 io线程池大小 queues provider 0 线程池队列大小,当线程池满时,排队等待执行的队列大小, 建议不要设置,当线程程池时应立即失败, 重..

2020-12-29 13:50:46 533

原创 Dubbo常用设计模式

1、责任链和装饰器模式Dubbo 在启动和调用阶段都大量使用了装饰器模式。以 Provider 提供的调用链为例,具体的调用链代码是在 ProtocolFilterWrapper 的 buildInvokerChain 完成的,具体是将注解中含有 group=provider 的 Filter 实现,按照 order 排序,查看调用:确切地说是装饰器和责任链模式的混合使用。例如, EchoFilter 的作用是判断是否是回声测试请求,是的话直接返回内容,这是一种责任链的体现。而像 ClassLoad

2020-05-10 21:31:25 282

原创 rocketmq消息发送容错策略和优雅关机

1.近期研究rocketmq的源码,发现producer在发送消息时,先根据路由选择broker的MessageQueue,在选择发送队列时,会根据sendLatencyFaultEnable值进行容错处理。DefaultMQProducer设置参数入口:2.发送消息源码(1)获取topic路由信息:TopicPublishInfo topicPublishInfo = thi...

2020-05-01 21:43:08 1613

原创 rocketmq的消息msgId和offsetMsgId

1.rocketmq的消息发送时,producer客户端生成msgId(通过ip+进程+自增值+当前与系统启动时间差值),有另外的一个叫法uniqId方法入口:MessageClientIDSetter.createUniqID()通过mqadmin查询时需要通过msgid+对应topic2.OffsetMsgId:由broker服务端生成(服务端ip地址+服务端消息的物理分区...

2020-05-01 21:07:03 1851

空空如也

空空如也

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

TA关注的人

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