淦 Blog

我干了什么 究竟拿了时间换了什么

消息队列之RabbitMQ

架构设计与实现 由 Producer、Broker、Consumer 三个大模块组成。生产者将数据发送到 Broker,Broker 接收到数据后,将数据存储到对应的 Queue 里面,消费者从不同的 Queue 消费数据。 Exchange 称为交换器,它是一个逻辑上的概念,用来做分发,本身不存储数据。流程上生产者先将消息发送到 Exchange,然后 Exchange 会根据一定...

消息队列之Pulsar

Pulsar 是一个开源的分布式消息队列产品,最早是由 Yahoo 开发,现在是 Apache 基金会旗下的开源项目。 架构设计与实现 系统架构 无论是 RocketMQ、RabbitMQ 还是 Kafka,消息都是存储在 Broker 的磁盘或者内存中。客户端在访问某个主题分区之前,必须先找到这个分区所在 Broker,然后连接到这个 Broker 上进行生产和消费。 在集群模式下,为...

消息队列之Kafka

要点 Kafka 的每个 Consumer(消费者)实例属于一个 ConsumerGroup(消费组); 在消费时,ConsumerGroup 中的每个 Consumer 独占一个或多个 Partition(分区); 对于每个 ConsumerGroup,在任意时刻,每个 Partition 至多有 1 个 Consumer 在消费; 每个 ConsumerGroup 都有...

消息队列之RocketMQ

系统架构 基本概念和架构 由 Producer、NameServer、Broker、Consumer 四大模块组成。其中,NameServer 是 RocketMQ 的元数据存储组件。在 5.0 后,还增加了 Proxy 模块,用来支持 gRPC 协议,并为后续的计算存储分离架构做准备。 一个 Topic 可以包含一个或多个MessageQueue,一个 Group 可以订阅一个或多个...

消息队列基础

简介 使用场景 异步处理(可以更快地返回结果,减少等待,自然实现了步骤之间的并发,提升系统总体的性能) 流量控制(隔离网关和后端服务,以达到流量控制和保护后端服务的目的) 服务解耦 作为发布 / 订阅系统实现一个微服务级系统间的观察者模式 连接流计算任务和数据 用于将消息广播给大量接收者 问题和局限性 引入消息队列带来的延迟问题 增加了系统的复杂度 ...

Redis

数据结构 String类型 当保存64位有符号整数时,String类型会把它保存为一个8字节的Long类型整数,这种保存方式通常也叫作int编码方式。 当保存的数据中包含字符时,String类型就会用简单动态字符串(Simple Dynamic String,SDS)结构体来保存。 buf:字节数组,保存实际数据。为了表示字节数组的结束,Redis会自动在数组最...

数据库基础

三大范式 第一范式(1NF):每一列都是不可分割的原子数据项。 第二范式(2NF)在1NF的基础上,非属性码的属性必须完全依赖于主码。 第三范式(3NF):在2NF基础上,消除传递依赖。 事务 概述 事务指的是逻辑上的一组操作,组成这组操作的各个单元要么全都成功,要么全都失败。 四大特性ACID 原子性(Atomicity):原子性是指事务是一个不可分割的工作单位,事...

Istio之架构

架构 Istio在架构上分为控制面和数据面两部分,控制面只有一个单体应用Istiod。在Istio 1.6中,上游为了简化控制面的部署和运维,将原来分离的Istio组件Pilot、Citadel、Mixer、Galley、Sidercar-Injector等组件合并为单体应用(Istiod),并且为了提升性能,又将Mixer彻底移除。数据面主要由伴随每个应用程序部署的代理Envoy组成,En...

Istio之流量治理原理

概念和原理 Istio流量治理的目标:以基础设施的方式向用户提供各种非侵入的流量治理能力,用户只需关注自己的业务逻辑开发,无须关注通用的服务治理能力。 在控制面会经过如下流程: (1)管理员通过命令行或者API创建流量规则; (2)Istio的控制面Pilot将流量规则转换为Envoy的标准格式; (3)Pilot通过xDS将规则下发给服务网格数据面Envoy。 在数据面会经过...

Istio之Sidecar流量拦截原理

在完成Sidecar自动注入后,业务在Pod运行期间收发的网络流量将被透明地拦截进Sidecar。其流量拦截基于iptables规则,拦截应用容器的Inbound流量或Outbound流量。Inbound流量简单理解为从Pod外部网口流入进来的流量,比如在一个微服务请求中进入目标服务的请求流量;Outbound流量简单理解为从本Pod内应用向目标微服务发起请求,并最终从本Pod 网口向外部网...