https://avatars.githubusercontent.com/u/18242685

lihuu's blog

gRPC 技术浅析:原理、优势与实战

第一章:gRPC 简介与核心理念

在现代分布式系统和微服务架构中,服务间的通信效率、可靠性和可维护性至关重要。gRPC 作为一种现代化的通信框架,应运而生,旨在解决传统 RPC 技术的诸多局限性。

1.1 gRPC 的起源与演进

gRPC 的诞生并非偶然,它源于谷歌内部长达十余年的大规模实践。自 2001 年起,谷歌便开发并使用一个名为 “Stubby” 的通用 RPC 基础架构,用于连接其数据中心内部和跨数据中心的成千上万个微服务 。随着微服务架构的复杂性与日俱增,对一个更高效、更标准化的通信框架的需求也愈发迫切。

macOS Tahoe 26 Linux 容器初探

苹果在 macOS Tahoe 26 中引入了一项令人瞩目的新功能:原生 Linux 容器支持。这个名为 container 的工具让我们可以在 Mac 上直接运行 Linux 容器,而无需依赖 Docker Desktop 这样的第三方解决方案。

与传统的容器运行方式不同,苹果采用了"一容器一虚拟机"的独特架构,为每个容器提供独立的轻量级虚拟机环境。这种设计在安全性、隐私保护和性能方面都有显著优势。

Git Submodule 简明使用指南

Git Submodule(子模块)是一个强大的功能,它允许你将一个 Git 仓库作为另一个 Git 仓库的子目录。简单来说,就是将子仓库的特定版本嵌入到父仓库中,同时保持子仓库独立的版本控制。

这项功能在以下场景中特别有用:

  • 项目依赖:当你的项目依赖于一个外部库或框架,而这个库本身也是一个 Git 仓库时
  • 代码复用:当你有多个项目需要共享同一份代码(例如 UI 组件库)时
  • 大型项目管理:将一个大型项目拆分成多个可独立维护的组件时

1. 添加子模块

使用 git submodule add 命令来添加子模块。你需要提供子模块的 Git 仓库 URL 和你希望在父仓库中存放它的路径。

Hugo 模板系统概述

Hugo 是一个以速度著称的静态网站生成器,其强大的主题(Theme)**系统是其核心魅力之一。一个好的主题不仅能让网站拥有美观的界面,更能通过其合理的**文件结构查找机制,为开发者提供极大的灵活性和可维护性。本文将深入探讨 Hugo 主题的内部结构,并揭示其文件查找的奥秘。

Hugo 主题的“骨架”:约定优于配置

Hugo 主题的核心在于其遵循**约定优于配置(Convention over Configuration)**的原则。这意味着,虽然你不需要在配置文件中显式声明每个文件的用途,但将文件放置在特定的目录并赋予它们特定的名称,Hugo 就能自动识别并加载它们。这种机制大大简化了开发流程,同时保证了主题的规范性和可扩展性。

ETCD安全高可用集群部署测试

以下是个人搭建etcd集群中的记录,首先使用这篇文章中介绍的脚本创建三个虚拟机,ubuntu-01、

ubuntu-02、ubuntu-03,在三台虚拟机中分别安装 etcd

sudo apt install etcd

安装完成之后打开 /lib/systemd/system/etcd.service 这个service文件

[Unit]
Description=etcd - highly-available key value store
Documentation=https://etcd.io/docs
Documentation=man:etcd
After=network.target
Wants=network-online.target

[Service]
Environment=DAEMON_ARGS=
Environment=ETCD_NAME=%H
Environment=ETCD_DATA_DIR=/var/lib/etcd/default
EnvironmentFile=-/etc/default/%p
Type=notify
User=etcd
PermissionsStartOnly=true
#ExecStart=/bin/sh -c "GOMAXPROCS=$(nproc) /usr/bin/etcd $DAEMON_ARGS"
ExecStart=/usr/bin/etcd $DAEMON_ARGS
Restart=on-abnormal
#RestartSec=10s
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
Alias=etcd2.service

这个是etcd的service文件,可以看到etcd的配置文件在/etc/defalut/目录中,名称应该是etcd,这个和传统的不一致,我们需要在/etc/etcd/目录中存放配置文件,有两种选择,修改这里的EnvironmentFile,或者把/etc/etcd目录中文件链接到 /etc/default 中,我这里选择第二种方式。

在Windows上快速创建虚拟机

上一篇文章,我们实现了在 Linux 中快速创建虚拟机,就是使用 cloud init 初始化虚拟机设置,然后使用脚本快速创建,上面的创建过程在 windows wsl2 中也是完全可行的,毕竟 wsl2 其实本质上也是运行了一台虚拟机,在虚拟机中,再创建虚拟机完全可行的,今天我们来探索一下在 windows 平台上自带的 hyper-v 上创建虚拟机,创建的过程和上一篇文章中的类似,也是使用 cloud init 搭配 脚本。

在Linux上快速创建虚拟机

今天我们来聊一聊,怎么在 KVM 上快速创建虚拟机,首先什么是 KVM 呢?

KVM 的全称是 Kernel-based Virtual Machine,即基于内核的虚拟机。它是一种内建于 Linux 内核的开源虚拟化技术。不过 KVM 只是一个内核模块,单独的 KVM 不能看作一个完整的虚拟机软件。好在 Linux 中还有另一个强大的工具 QEMU。QEMU 提供了完整的虚拟化能力,但原始的 QEMU 只提供软件模拟,性能不是很高。而当我们在 QEMU 中集成 KVM 后,就能获得接近裸机的性能,这正是我们想要的。

Redis8.0 新特性深度解析

1. 摘要

Redis 8.0 的发布标志着其发展历程中的一个重要里程碑,不仅带来了显著的性能提升和功能扩展,更体现了平台战略层面的重新定位。此版本最引人注目的变化包括:将先前独立的 Redis Stack 功能(如 JSON、时间序列、概率数据结构及查询引擎)整合进核心,统一命名为 Redis Open Source;引入全新的 Vector Set 数据结构(目前处于 Beta 阶段),显著增强了其在人工智能(AI)和机器学习(ML)领域,特别是向量相似性搜索方面的能力 ;实施了超过 30 项性能优化,涵盖命令延迟、吞吐量、复制效率和查询处理能力等多个维度 ;以及在许可模式上做出的重大调整,在保留原有 RSALv2 和 SSPLv1 的基础上,增加了 OSI 批准的 AGPLv3 选项 。