淦 Blog

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

消息队列之Pulsar

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

消息队列之Kafka

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

消息队列之RocketMQ

消息复制 传统的复制方式 复制的基本单位是 Broker,即服务端的进程。复制采用的也是主从方式,通常情况下配置成一主一从,也支持一主多从。 提供了两种复制方式,一种是异步复制,消息先发送到主节点上,就返回“写入成功”,然后消息再异步复制到从节点上。另外一种方式是同步双写,消息同步双写到主从节点上,主从都写成功,才返回“写入成功”。 Broker 的主从关系是通过配置固定的,不支持动态切...

消息队列基础

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

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 网口向外部网...

Istio之Sidecar透明注入原理

Sidecar的注入原理 在kubernetes中,Sidecar容器与应用容器共存于同一个Pod中,在Istio中进行Sidecar注入有两种方式: 通过 istioctl命令行工具手动注入; 通过sidecar-injector自动注入。 这两种方式的最终目的都是在应用的Pod中注入init容器及istio-proxy容器,这两个容器都使用...