浅谈一致性模型与实现 一致性模型1.强一致性数据在插入后,立即就能看到结果,一些 传统的关系数据库,基本都是强一致性,例如单实例下的mysql,oracle等等,但如果是分布式的情况,例如主从,那么从库会有一定的延迟,就不是强一致性 2.弱一致性系统不保证立即看到写操作的结果。数据最终会变得一致,但系统不保证具体的时间。例如,DNS 缓存更新就是弱一致性的例子。 3.最终一致性如果没有新的更新,则最终所有的访问都将返回 2024-05-05 概念
MinIO 分段上传 MinIO 支持分段上传(Multipart Upload),这是一种将一个大文件分割成多个部分并并行上传的方法。分段上传可以显著提高大文件上传的效率,同时还允许在上传失败时重试上传单个部分,从而提高可靠性。 分段上传的步骤 初始化分段上传:开始分段上传会返回一个上传 ID,后续的所有分段上传操作都需要用到这个上传 ID。 上传各个分段:将文件分成多个部分并上传,每个部分都会得到一个 ETag( 2024-05-04 工具
RabbitMQ的传输保障机制 RabbitMQ的传输保障机制分为四个部分,生产者确认、持久化、消费者确认以及高可用性 生产者确认 确保消息从生产者成功发送并存储在RabbitMQ中。 1.工作机制(确认模式): 生产者在发送消息时可以开启消息确认模式(Publisher Confirms)。 当消息成功存储到RabbitMQ的队列中后,RabbitMQ会发送一个确认(ack)给生产者。 如果消息在存储过程中出现问题,Rab 2024-05-03 工具
Kong自定义插件 Kong 是一个流行的开源 API 网关,它为微服务架构提供了一个前端层。Kong 基于 NGINX,使用 Lua 语言进行扩展,最初在 2015 年由 Mashape(现称为 Kong Inc.)发布。它设计用于处理高并发的 API 请求、路由、安全性、监控和扩展性问题。Kong 可以在任何基础设施上运行,包括云环境和本地服务器,支持 RESTful 和 GraphQL API。 kong的生态 2024-05-01 工具
Antlr-Golang 基于Antlr我们可以快速创建一门DSL语言,其词法分析器和语法解析器,可以帮助节省很多时间,使我们更加专注与语法模型以及语义的实现。 Antlr是用Java语言开发的,为了运行Antlr,需要安装JDK,目前V4版本需要1.6以上版本,本文中使用的版本是 openjdk 11.0.21 Antlr支持生成非Java语言的目标代码,因为平时用Golang比较多,所以本文的案例也是用Golang实现 2023-12-08 Antlr
SeaTunnel SeaTunnel 是一个非常简单、高性能、分布式的数据集成平台,与Sqoop和DataX相比,它更加轻量,拥有非常多的Connector,拿来即用,非常简单,可以出色的完成日常的数据同步任务。 SeaTunnel 也是apache基金会项目,版本目前已经到2.3.3,已经非常成熟,具体的使用文档,可以去官网了解,本文将介绍SeaTunnel的基本用法。 快速安装官方提供了三种安装方式:本地安装、 2023-11-30 工具
KubeBuilders实战 本章将写一个在实际工作中的项目案例,来更好的说明KubeBuilder一些技术细节 项目需求将K8s中的ConfigMap定时备份到阿里云的OSS 通过脚手架快速创建项目script1234mkdir configmapcd configmapkubebuilder init --repo=configmap --domain xinyu.comkubebuilder create api --g 2023-10-30 Kubernetes
KubeBuilder起步 KubeBuilder是用于开发CRD(自定义资源)以及控制器的框架工具,我们只需要按照框架的规则,可以大大提高开发K8s Operator的效率 安装本文使用的kubebuilder的版本为3.11.1 其前置依赖有 go version v1.20.0+ docker version 17.03+. kubectl version v1.11.3+. Access to a Kubernet 2023-08-24 Kubernetes
POD 调度总结 本文将说明目前k8s常用的容器调度方式,以作为备忘 Deployment、ReplicationControllerDeployment 是目前官方推荐的自动化伸缩方式,在创建Deployment的同时,系统也会自动创建一个ReplicaSet用来维护Pod的数量。 ReplicationController与Deployment类似,但目前官方已不推荐使用,在日常开发中,也很少见,Deploym 2023-08-18 Kubernetes
Sync包详解 Once对象用来确保只执行一次的处理场景,注意这里的一次只是对于单个进程,且这个Once对象没有被复制的情况,在分布式的应用中,这个对象可能并不适用。 12345678910111213141516func TestOnce(f *testing.T) { var once sync.Once onceBody := func() { fmt.Println("On 2023-08-17 Golang