部署跨多数据中心分布的 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多版本环境
感觉不如编译安装