ClickHouse Stand-alone 虽然搭建简单,但存在单点问题,生产环境不建议使用。ClickHouse 提供了数据副本集群模式,我们可以通过增加数据副本的方式,来提高服务的可用性。本文记录 1S-2R (一个分片两个副本)的高可用集群搭建,以及常用操作
Deploying ClickHouse - Stand-alone
ClickHouse 是由俄罗斯IT公司 Yandex 为 Yandex.Metrica 网络分析服务开发的一款面向列存储的高性能 OLAP 数据库,支持 SQL 查询,于2016年6月开源。本文记录如何使用 Docker 搭建 ClickHouse 的 Stand-alone 实例,以及常见操作
Rust Cross Compilation
最近在用Rust语言写一个轻量级的数据同步工具(DP),由于是在MacBook Pro M2上做的开发,通过cargo build –release编译后的执行文件,无法在x86_64架构的Linux系统上运行。虽然rustup提供了交叉编译的能力,但开发环境安装不同架构平台的工具链,很容易导致混乱,于是我决定通过Dockerfile来进行DP的”交叉”编译
Clean Architecture
软件架构设计的主要目标是支撑软件系统的生命周期,良好的架构设计可以使系统便于理解、易于修改、方便维护,并且能轻松部署。软件架构的终极目标是最大化程序员的生产力,同时最小化系统的总运营成本。软件架构设计是一项需要持续进行的工作,需要根据团队规模、系统规模的变化,以及开发阶段的不同而进行相应的架构调整。以下是软件架构设计中的一些指导
Redis Cluster
Redis Cluster 是 Redis 的分布式解决方案,它使用哈希槽分片技术将数据分散到不同的 Redis 节点中,实现数据的水平扩展,从而提高系统性能与吞吐量。Redis Cluster 支持主从复制和故障转移,当主节点发生故障时,从节点可以继续为系统提供服务,保证系统的高可用性。Redis Cluster 支持数据自动迁移,可以在节点的新增和删除时,进行数据的自动迁移,并且操作十分简单。在本篇文章中,我们将搭建一个 3主3从 的 Redis Cluster,并演示集群中的基本操作
设计模式-访问者模式
访问者模式是一种行为型设计模式,它可以将相关操作分离并组织在一起,该设计模式允许你在不更改现有代码的情况下很容易就可以添加新的操作,从而提高代码的可维护性和可扩展性。访问者模式是一种强大的设计模式,可以帮助你更好的组织和管理复杂的对象结构。在本篇博客中我们以单据快照为例,来说明访问者模式的特点
Java Virtual Threads
本文字数: 1.9k 阅读时长 ≈ 7 分钟
Java 开发人员在构建高并发应用的时候,大部分都会依赖多线程进行开发,而在 Java 中,线程的启动、调度、销毁是由操作系统来执行的,使用成本很高,我们认为这是一种重量级的线程。Java 虚拟线程被 JEP425 提议作为预览功能,并在 JDK 19 中发布,它是一种轻量级线程,不与操作系统线程直接绑定,使用虚拟线程能够大大减少编写、维护和观察高吞吐量并发程序的工作量
设计模式-装饰者
装饰者模式可以在不影响原对象结构的情况下,在运行时动态的添加、增强或删除对象的行为或状态。当然通过继承类的方式也可以扩展类的行为和状态,但这种扩展是在编译期间完成的,无法做到动态扩展,使用继承来扩展类很容易导致类的数量爆增。装饰者模式可以提高系统的灵活性和扩展性,该模式在 Java IO 中经常被使用,如:FileReader、BufferedReader 等。本篇文章将以博客发布为例,来说明装饰者设计模式的特点
设计模式-桥接
桥接模式可以将抽象与实现解耦,使得抽象和实现这两部分可以独立变化,这能够提高系统的扩展性和可维护性。桥接模式是一种结构型模式,这种结构能够帮助我们更好的组织和管理代码。在本博客中我们将通过跨平台应用的实例来说明桥接模式的特点
设计模式-适配器
如果你来自中国大陆,正计划去中国澳门旅游,那你一定要记得带上电源转接头,因为澳门的插座无法兼容中国大陆使用的插头,如果你没有电源转接头,那你的手机在澳门就无法充电喽,那为什么不在澳门安装支持中国大陆插头的插座呢?这种重构成本太高了吧。。。在软件系统开发中,同样会存在接口不兼容的问题,这时候我们可以使用 适配器(包装器) 设计模式来解决兼容问题