分布式 id 生成器(snowflake,雪花算法)
分布式 id 生成器(snowflake,雪花算法)背景在某些场景下,需要生成增长ID并且不能重复 snowflakeSnowflake 雪花算法,由Twitter提出并开源,可在分布式环境下用于生成唯一ID的算法。该算法生成的是一个64位的ID,故在Java下正好可以通过8字节的long类型存放。所生成的ID结构如下所示 1 bit:首位无效因为二进制里第一个 bit 为如果是 1,那么都是负数,但是我们生成的 id 都是正数,所以第一个 bit 统一都是 0。 41 bit:表示的是时间戳,单位是毫秒41 bit 可以表示的数字多达 2^41 - 1,也就是可以标识 2 ^ 41 - 1 个毫秒值,换算成年就是表示 69 年的时间。 10 bit:记录工作机器 id,代表的是这个服务最多可以部署在 2^10 台机器上,也就是 1024 台机器10 bit 里 5 个 bit 代表机房 id,5 个 bit 代表机器 id。意思就是最多代表 2 ^ 5 个机房(32 个机房),每个机房里可以代表 2 ^ 5 个机器(32 台机器),也可以根据自己公司的实际情况确定。 12 b...
ACID理论
ACID理论背景ACID主要是事务中的概念,分别是 A(Atomicit):原子性 C(Consistency):一致性 I(Isolation):隔离性 D(Durability):持久性 A原子性主要是在一个事务中,“要么全部完成、要么全部不完成” 经典的银行转账案例: A:从A账户去一百 B:从存入100 AB是在一个事务里面,不能只有A|B其中一个成功,不然银行账户对不上金额 C一致性一致性代表:事务开始前和事务结束之后,数据库的一致性没有改变,事务中的数据一致性 I隔离性隔离性代表:多个并发事务同时拥有对数据进行读书和修改的能力,如果⼀个事务要访问的数据正在被另外⼀个事务修改,只要另外⼀个事务未提交,则它所访问的数据就不受未提交事务的影响 D持久性持久性代表:事务处理结束后,对数据的修改是永久的,即便系统故障也不会丢失 优点1、数据一致性:ACID 确保数据在任何事务执行后保持一致和准确。 2、数据完整性:ACID 通过确保对数据库的任何更改都是永久性的,并且不会丢失,从而维护了数据的完整性。 3、并发控制:ACID 通过防止事务之间的干扰来帮助管理并发创建的多个事务...
初识RPC
初识RPC介绍RPC 是远程过程调用的简称,是分布式系统中不同节点间流行的通信方式。在互联网时代,RPC 已经和 IPC 一样成为一个不可或缺的基础构件。因此 Go 语言的标准库也提供了一个简单的 RPC 实现,我们将以此为入口学习 RPC 的各种用法。 hello RPC server端代码 12345678910111213141516171819202122232425262728293031package mainimport ( "log" "net" "net/rpc")type HelloService struct{}func (p *HelloService) Hello(request string, reply *string) error { *reply = "hello:" + request return nil}func main() { rpc.RegisterName("HelloService"...
Gocv安装(Windows)
Gocv安装(Windows)什么是GoCVgocv 是 OpenCV 4.x 计算机视觉库的包装器。 它为最新版本的 OpenCV 提供了 Go 语言接口 官网链接:https://gocv.io/ 安装1.安装Go(PASS)2.安装GoCV12go get -u -d gocv.io/x/gocv# 执行完这条命令后,%GOPATH%\pkg\mod下会出现一个文件夹"[http://gocv.io](https://link.zhihu.com/?target=http%3A//gocv.io)" 3.安装MinGW-W64注意安装版本:8.1.0 MinGW-W64版本 添加环境变量到系统环境变量 4.安装Cmake安装链接 5 安装opencv(谨记,要手动添加环境变量,不要忘了!)12chdir %GOPATH%\src\gocv.io\x\gocvwin_build_opencv.cmd 主要是win_build_opencv.cmd文件: 可以把文件opencv-4.6.0.zip和opencv_contrib-4.6.0.zip...
K8s-文件管理系统nfs(centos)
K8s-文件管理系统nfs(centos)什么是nfsNFS在文件传送或信息传输过程中依赖于RPC协议,RPC协议可以在不同的系统之间使用。使用NFS用户端时只需要把远程文件系统挂载到自己的文件系统下即可访问,NFS有客户端和服务端 Deploynfs部署 centos部署nfs 12yum install -y nfs-utils rpcbind 执行命令 vim /etc/exports,创建 exports 文件,文件内容如下 1/data/nfs_root/ *(insecure,rw,sync,no_root_squash) 启动nfs 12345678mkdir -p /data/nfs_rootsystemctl enable rpcbindsystemctl enable nfs-serversystemctl start rpcbindsystemctl start nfs-serverexportfs -r nfs-provisoner部署12345678910111213141516171819202122# 获取helm chartshelm re...
Docker-镜像优化
Docker-镜像优化BackGroundDocker如果最后的镜像很大,所以是需要优化的。 安装不必要的软件包会增加攻击面,从而增加安全风险。 镜像传输需要更多时间。 部署大镜像需要更多时间。 优化方法优化一:合并RUN 原始Docker 1234567891011121314FROM hub.c.163.com/netease_comb/centos:7 MAINTAINER netease ...
DevOps-Argo安装
DevOps-Argo安装What is argoArgo Workflows 是一个开源的云原生工作流引擎,用于在 Kubernetes 上编排并行作业。Argo 工作流作为Kubernetes CRD 实现。 定义工作流,其中工作流中的每个步骤都是一个容器。 将多步骤工作流建模为一系列任务,或使用 DAG 来捕获任务之间的依赖关系图。 使用 Argo 可以在很短的时间内在 Kubernetes 上轻松运行机器学习或数据处理的计算密集型作业 一句话描述:ArgoWorkflow 是一个用于在 Kubernetes 上编排并行作业的开源云原生工作流引擎 commpoentsArgoWorkflow 组件比较少,整体架构比较简单。 核心组件: argo-server:为工作流提供 API 和 UI 界面。 workflow-controller:真正干活的组件,解析用户创建的 CR 对象并启动 Pod 来真正运行流水线 Deploy Helm安装 12345678910# 添加参考并更新helm repo add argo https://argoproj.github....






