部署跨多数据中心分布的 MongoDB 副本集
MongoDB

最近把自己的一个小项目迁移了服务器, 结果发现接口响应速度慢了很多, 排查了不少时间后突然想起来是因为新服务器和 MongoDB Atlas 不在同一个地区, 光是二者之间的网络延迟就很高.

而 MongoDB Atlas 提供的免费实例要备份数据和迁移比较麻烦, 又因为 MongoDB 单实例不支持事务, 所以决定干脆自建一个 MongoDB 副本集 😎.

在 WSL2 上安装 CUDA

最近在写一些小东西的时候需要用到显卡, 但是 Windows 的开发体验又很差 (尤其是对于 Python), 所以就在 WSL 上安装了 CUDA 以供使用.

常轨脱离 Misanthrope
又是一年冬季
Go 的 gRPC 和 Protocol Buffers---TLS 认证

前言

为了保证 gRPC 服务不被第三方监听和调用, 防止通信被篡改或伪造, 需要对 gRPC 服务添加身份验证机制.

目前 gRPC 内置了三种身份验证机制:

  • SSL/TLS: gRPC 集成了 SSL/TLS, 提倡使用 SSL/TLS 对服务器进行身份验证, 并对客户端与服务器之间交换的所有数据进行加密。同时可选让客户端提供用于相互验证的证书.
  • 基于 Token 的身份验证: gRPC 提供了一种可将基于元数据的凭证附加到请求和响应中的机制. 这种机制必须与 SSL/TLS 同时使用, 以提供完整的身份验证和加密通信.
  • ATLS: Google 自家的双向身份验证和传输安全系统, 通常也用于在 Google 家的平台上构建服务时.

本文介绍 gRPC 中的 SSL/TLS.

Go 的 gRPC 和 Protocol Buffers---Quick Start

Protocol Buffers

Protocol Buffers (Protobuf) 是一种语言无关、平台无关、可扩展的序列化结构化数据的方法, 可以像 XML, json 等一样用于程序间数据通信. 而相较于上列二者, Protobuf 有更高的效率.

使用 Protobuf 需要在 .proto 文件中定义数据结构, 并安装其编译器来生成对应语言的模型. 本文以 Go 为例.

使用conda安装和管理python多版本环境

感觉不如编译安装

Debian/Linux安装最新Python版本及多版本环境管理

Python 的环境管理确实烦,而且会出现版本之间不兼容的情况,所以有必要知道如何安装不同版本的 Python 并管理其环境.

本文系统环境为 Debian11, 虚拟环境工具使用的是 venv, 采用编译安装的方法. Python 版本为 3.11.6