当前位置: 首页 > news >正文

主流网站风格vr 网站怎么做的

主流网站风格,vr 网站怎么做的,电子政务网站建设要求,太仓建设工程信息网站现象 某日,运营反馈,在某个时间区间丢失了一段日志,让看看是什么问题。 排查 查看项目日志有无错误 发现项目日志有报错信息Error 1062 Duplicate entry 149059529550598144 for key PRIMARY,很显然,问题在此,数据库…

现象

某日,运营反馈,在某个时间区间丢失了一段日志,让看看是什么问题。

排查

  1. 查看项目日志有无错误
    发现项目日志有报错信息Error 1062 Duplicate entry '149059529550598144' for key 'PRIMARY',很显然,问题在此,数据库主键冲突,无法插入数据,导致这部分数据被丢弃。那么问题来了,我们使用的雪花算法,为什么会生成重复的ID呢?

进一步排查

  1. 猜想可能早成该问题的原因,可能有两个
    1. 两个项目用了同样的MachineId,然而并没有,我们是单体应用
    2. 时钟回拨,存疑,需进一步确定,大概率是这个问题

  2. 进一步查看代码,bwmarrin/snowflake库的生成方法

// Generate creates and returns a unique snowflake ID
// To help guarantee uniqueness
// - Make sure your system is keeping accurate system time
// - Make sure you never have multiple nodes running with the same node ID
func (n *Node) Generate() ID {n.mu.Lock()now := time.Since(n.epoch).Nanoseconds() / 1000000if now == n.time {n.step = (n.step + 1) & n.stepMaskif n.step == 0 {for now <= n.time {now = time.Since(n.epoch).Nanoseconds() / 1000000}}} else {n.step = 0}n.time = nowr := ID((now)<<n.timeShift |(n.node << n.nodeShift) |(n.step),)n.mu.Unlock()return r
}

可以看出确实没对 now <n.time做判定,而且方法的注释中有说明Make sure your system is keeping accurate system time要自己保障系统时间的准确性。
3. 进一步找运营确认情况,运营老哥说问题是自两天前才有的,想想两天前我对服务器做了什么。两天前我把项目的容器内编译,改为了本地编译,采用挂载时区的方式来设置时区。

FROM golang:1.16 as builder
ENV GO111MODULE=on \CGO_ENABLED=0 \GOOS=linux \GOARCH=amd64 \GOPROXY=https://goproxy.cn,direct
WORKDIR /go/release
COPY go.mod .
COPY go.sum .
RUN go mod download
RUN go build -ldflags="-s -w" -installsuffix cgo -o serve .
FROM scratch as prod
COPY --from=builder /usr/share/zoneinfo /usr/share/zoneinfo
ENV TZ=Asia/Shanghai
COPY --from=builder /go/release/* ./
CMD ["/serve"]//以上每次部署需要3分钟左右,我觉得太慢,改为宿主机执行go build 然后直接把二进制镜像丢给scratch镜像
FROM scratch
ENV TZ=Asia/Shanghai
COPY . /
CMD ["/serve"]
//启动容器时挂载时区
docker run -p 8080:8080 -v /usr/share/zoneinfo:/usr/share/zoneinfo:ro -d test:v1.0.0

但是我没想到的是,宿主机会通过NTP对时间进行矫正,每次矫正,都会造成时钟回拨,生成的ID重复。

解决方案

让容器读自己的时区信息

FROM alpine:latest as base
RUN echo "https://mirrors.aliyun.com/alpine/v3.8/main/" > /etc/apk/repositories \&& echo "https://mirrors.aliyun.com/alpine/v3.8/community/" >> /etc/apk/repositories \&& apk add --no-cache tzdata \&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime  \&& echo Asia/Shanghai > /etc/timezone
FROM scratch
COPY --from=base /usr/share/zoneinfo /usr/share/zoneinfo
ENV TZ=Asia/Shanghai
COPY . /
CMD ["/serve"]
http://www.yayakq.cn/news/158285/

相关文章:

  • 网站还在建设就已经可以访问了_影响后期百度网页加速器免费版
  • 宣传旅游网站建设黄冈免费网站建设平台
  • 临海商用高端网站设计新感觉建站哈尔滨线下教学最新情况
  • 建立网站主机重庆企业网站排名优化方法
  • 做网站的网站犯法吗企业邮箱注册域名
  • 建站网址大全广州开发区投资集团有限公司招聘
  • 门户网站建设教程outlook企业邮箱注册
  • 源码 网站建设教程多元网站
  • 科技公司网站制作模板网站设计的导航栏怎么做
  • 行业网站名称兰州网站建设推荐q479185700顶你
  • 小企业网站推广网页制作论文范例
  • 四合一营销型网站中国价格信息网
  • 网站热力图怎么做成都住建局官网租房交易中心
  • 如何建立一个个人博客网站搭建网站工具
  • 南宁站建好就够用微信网站模板源码下载
  • 合川做网站和网站建设签合同
  • 外贸网站优化免费渠道济南轻电商网站建设公司
  • 胶州建网站亚马逊做品牌备案自有网站
  • 镇雄县城乡建设局网站网站建设 博采网络 学校
  • 上海网站建设 找思创网络如何看一个网站用什么程序做的
  • 卖网站赚钱罗湖田贝社区网站建设
  • 学做衣服上什么网站微淘客网站建设
  • 汉中住房和城乡建设部网站3322动态域名申请
  • 腾讯网qq网站企业办公自动化管理系统
  • 如何用织梦做网站4a级旅游网站建设的要求
  • 建站网站哪个最好WordPress 大数据
  • 网站合作建设合同做网站必须托管服务器吗
  • crm系统主要干什么的河南seo和网络推广
  • 德州网站建设哪家好广东外贸网站定制
  • 华为云建设网站需要域名吗sem优化软件选哪家