go的AES加密主要用`crypto/aes`和`crypto/cipher`两个库来实现。 AES加密模式又好多种,这里研究了6种模式:CBC、CFB、OFB、ECB、CTR、GCM模式。 一看到这么多模式,如果那里需要用到一下都不知道哪种好,这里大概总结一下。 如果数据通过非对称签名进行身份验证,则使用CBC,否则使用GCM。 最好的模式是GCM模式,GCM可以保证数据的保密性和完整性,其他模式只能保证保密性,不能保证完整性,具体可以去了解下AEAD。 GCM模式属于AEAD加密。 所以除了GCM模式之外其他模式最好是增加hmac哈希,用来验证数据完整性。 ECB模式不建议使用,因为这种模式不安全,go的内置库也没有去实现这种模式。 go AES 6种加密模式代码:https://github.com/ilaziness/gopkg/tree/main/crypto/aes iv值的生成可以参考cfb模式的代码,每次加密都是随机生成的。...
 发布日期: 2022-11-11    分类: Go   浏览量: 1315
本文操作系统是ubuntu 22.04 server amd64版本,k8s是v1.25。 虚拟机配置是2核4G,一个master节点,2个node节点。 - k8s-master:192.168.184.217 - k8s-node1:192.168.184.150 - k8s-node2:192.168.184.64 ## 准备工作 - master节点添加node1和node2的hosts解析,node1和node2添加master的hosts解析 ```bash # k8s-master /etc/hosts 192.168.184.150 k8s-node1 192.168.184.64 k8s-node2 # k8s-node1、k8s-node2 /etc/hosts 192.168.184.217 k8s-master ``` - 禁用所有主机的swap ```bash # 临时禁用swap sudo swapoff -a # 永久禁用swap,注释掉swap sudo vim /etc/fs...
 发布日期: 2022-09-25    分类: 后端   浏览量: 1419
> [containerd官方文档](https://github.com/containerd/containerd/blob/main/docs/getting-started.md) > 本文操作系统是64位的ubuntu22.04,按照官方文档通过二进制文件来安装 需要安装三个组件containerd、runc和CNI插件。 - containerd:是一个容器运行时 - runc:根据OCI规范生成和运行容器的命令行工具 - CNI插件:配置容器网络的工具,CNI全称是Container Network Interface, ## 1. 安装containerd github下载合适的包:https://github.com/containerd/containerd/releases 下载好之后解压到`/usr/local`: ```bash sudo tar Cxzvf /usr/local containerd-1.6.8-linux-amd64.tar.gz ``` > 官方github下载的二进制包仅适用于基于gl...
 发布日期: 2022-09-25    分类: 后端   浏览量: 965
微服务知识图谱,微服务组件图,微服务结构图 ![微服务知识图谱](https://360us.net/images/2022/202208242357.png)...
 发布日期: 2022-08-25    分类: 后端   浏览量: 896
种子链接文件列表:Cover.jpg 237.3 kB01. Intro.flac 5.8 MB02. 最伟大的作品.flac 50.5 MB03. 还在流浪.flac 55.9 MB04. 说好不哭.flac 44.0 MB05. 红颜如霜.flac 53.0 MB06. 不爱我就拉倒.flac 52.4 MB07. Mojito.flac 39.8 MB08. 错过的烟火.flac 56.8 MB09. 等你下课.flac 58.0 MB10. 粉色海洋.flac 40.5 MB11. 倒影.flac 50.5 MB12. 我是如此相信.flac 56.6 MB  更多内容请查看:https://2048tb.com/...
 发布日期: 2022-07-18    分类: 其他   浏览量: 2965
副本集群是一组维护相同数据集的mongod实例。一个副本集包含几个承载数据的节点和一个可选的仲裁节点。在承载数据的节点中,只有一个节点被认为是主节点,其他节点被认为是次节点。 主节点接收所有的写操作,次节点接收主节点的操作应用在自己的数据集上,副本节点只是做一个备份的作用,当主节点出现故障时,会自动选出新的主节点。 ![结构图](https://www.mongodb.com/docs/manual/images/replica-set-read-write-operations-primary.bakedsvg.svg) ![故障转移](https://www.mongodb.com/docs/manual/images/replica-set-trigger-election.bakedsvg.svg) 本教程描述的是包含三个节点的副本集群搭建,所有节点都没有开启访问控制。 因为集群需要通过选举来确定master节点,为了选举不会出现问题,所以集群成员数量应该总是奇数个。 MongoDb版本是`5.0`。 ### 1、启动成员节点 测...
 发布日期: 2022-05-18    分类: 数据库   浏览量: 1566
使用Drone搭建持续集成系统 - 持续集成:自动化的测试、编译打包并且自动部署到开发或者测试环境 - 持续交付:自动化的测试、编译打包生产环境的包,但是不做自动化的生产环境部署,需要手动来做 - 持续部署:和持续交付的区别就是生产环境的部署也是自动化的。 Drone持续集成系统主要有两部分组成: - Drone服务器:这个是用来管理的一个UI界面 - runner:这个是用来执行构建动作的服务 仓库以国内的Gitee为例子。Drone版本是2。 ### 1、创建仓库访问应用 在自己的Gitee后台创建一个可以访问自己仓库的应用,位置在`个人设置-数据管理-第三方应用`。 ![gitee_oauth](https://360us.net/images/2022/gitee_token_create.png) Gihub和Gitlab也是类似的,创建一个`OAuth`的应用,方便可以通过这个密钥访问我们的仓库。 ![create](https://360us.net/images/2022/github_application_...
 发布日期: 2022-04-27    分类: 后端   浏览量: 1602
### 概述 复制即主从(master-replica),读写分离。 **运行机制:** 1、主副本连接良好的情况下,主节点会把所有改动通过发送命令流的方式同步到副本节点。 包括客户端写,key过期或者淘汰,和其他在主节点的改动。 2、连接出现问题时,副本节点会尝试重新连接,并且会尝试重新同步连接异常期间丢失的数据。 3、如果同步丢失的数据失败,副本会要求同步完整数据,这个就需要主节点快照整个数据集,再发送到副本节点,之后才会接着正常同步。 默认使用低延时高性能的异步复制模式,适用于大多数Redis用例。副本实例会用异步ACK的方式把自己收到的数据量通告给主节点,所以主节点不需要等待副本节点执行完命令。 客户端可以用`WAIT`命令请求对数据进行同步复制,但是`WAIT`只能确认指定数量的ACK确认复制。 **关于redis复制的说明:** 1、redis使用异步复制(也可以同步复制),副主(replica-to-master)之间会异步确认(ack)处理的数据量。 2、一个主可以有多个副。 3、...
 发布日期: 2022-04-19    分类: 数据库   浏览量: 1280
Gin模型数据绑定验证器用的是go-playground/validator/v10。默认提示是英文内容,我们需要翻译成中文内容。 创建一个文件`validator.go`: ```go package utils import ( "github.com/gin-gonic/gin/binding" "github.com/go-playground/locales/en" "github.com/go-playground/locales/zh" ut "github.com/go-playground/universal-translator" "github.com/go-playground/validator/v10" zhtranslations "github.com/go-playground/validator/v10/translations/zh" "log" ) var trans ut.Translator //设置验证器中文翻译 func init() { if trans != nil { ...
 发布日期: 2021-12-08    分类: Go   浏览量: 2011
安全和活性失效保障按照我们的思路和设计方案,算法只需具备3个特性就可以实现一个最低保障的分布式锁。安全属性(Safety property): 独享(相互排斥)。在任意一个时刻,只有一个客户端持有锁。活性A(Liveness property A): 无死锁。即便持有锁的客户端崩溃(crashed)或者网络被分裂(gets partitioned),锁仍然可以被获取。活性B(Liveness property B): 容错。 只要大部分Redis节点都活着,客户端就可以获取和释放锁.为什么基于故障转移的实现还不够为了更好的理解我们想要改进的方面,我们先分析一下当前大多数基于Redis的分布式锁现状和实现方法.实现Redis分布式锁的最简单的方法就是在Redis中创建一个key,这个key有一个失效时间(TTL),以保证锁最终会被自动释放掉(这个对应特性2)。当客户端释放资源(解锁)的时候,会删除掉这个key。从表面上看,似乎效果还不错,但是这里有一个问题:这个架构中存在一个严重的单点失败问题。如果Redis挂了怎么办?你可能会说,可以通过增加一个slave节点解决这个问题。但这通常是行...
 发布日期: 2021-12-07    分类: 数据库   浏览量: 1424