生成分布式id

分布式系统中经常需要生成全局唯一 id ,要求:

  1. 全局唯一: 不能出现重复ID

  2. 高可用: 作为基础系统,被许多关键系统调用,一旦宕机,影响严重

阅读更多

docker_sysctl

Sysctl 用于配置运行时的内核参数,正常情况下修改 /etc/sysctl.conf . 然后执行 sysctl -p 就能够设置成功。

当使用 Docker 启动服务时,使用 sysctl -p 来配置 docker 的参数时会出现问题。比如

1
2
sysctl: cannot stat /proc/sys/net/core/rmem_max: No such file or directory
sysctl: cannot stat /proc/sys/net/core/wmem_max: No such file or directory
阅读更多

RocketMQ小记

Rocketmq

https://rocketmq.apache.org/docs/quick-start/

github: https://github.com/apache/rocketmq

Apache RocketMQ 架构

  • Name Server :是一个无状态节点,可集群部署,在消息队列 MQ 中提供命名服务,更新和发现 Broker 服务
  • Broker : 消息中转角色,负责存储、转发消息。 分为 Master Broker 和 Slave Broker ,一个 Master Broker 可以对应多个 Slave Broker 。Broker 启动后将自己注册到 Name Server 。随后每30秒定期向 Name Server 上报 Topic 路由信息。
  • 生产者: 与 Name Server 集群中的其中一个节点(随机)建立长连 。 定期从Name Server 读取 Topic 路由。并向提供 Topic 服务的 Master Broker 建立长链接 。 定时向Master Broker 发送心跳
  • 消费者: 与 Name Server 集群中的其中一个节点建立长链接。定期中Name Server 拉去Topic 路由信息。 并向提供 Topic 的Master Broker、slave Broker 建立长连。且定时向 Master Broker 、Slave Broker 发送心跳。 消费者即可以从 Master Broker 订阅消息,也可以从 Slave Broker 订阅消息,订阅规则由 Broker 决定。
阅读更多

Dockerfile编写实践

Docker 镜像是由 Layers 组成,Dockerfile 中每一条指令都会创建一个层,层数最多 127 层。

  1. 选择更小的基础镜像

    通常我们使用的镜像有 Ubuntu 、CentOs、 debian 、Alpine 。其中推荐使用 Alpine ,Alpine 的基础镜像只有 4.4M 左右,

    1.1 scratch 镜像

    ​ scratch 镜像是空镜像。如果要运行一个包含所有依赖的二进制文件,可以直接使用 scratch 作为基础镜像。

    1.2 busybox 镜像

    ​ scratch是个空镜像,如果希望镜像里可以包含一些常用的Linux工具,busybox镜像是个不错选择,镜像本身只有1.16M,非常便于构建小镜像。

阅读更多

Docker配置TLS认证开启远程访问

默认情况下,Docker 通过监听本地的 unix socket 运行,同时还可以通过 TCP 进行通信,方便对 Docker 集群 管理。Docker 官方提供了通过 TLS 加密,来保证只有信任的客户端才能远程访问 Docker 服务。

采用私有 CA 签名证书。客户端只能够连接到该 CA 签名的证书和服务器。

阅读更多

5G会带来什么

5G是什么

5G 是第五代移动通信技术是最新一代蜂窝移动通信技术,是4G(LTE-A、 WiMAX-A)、3G(UMTS)和2G(GSM)系统后的延伸。5G的性能目标是高数据速率、减少延迟、节省能源、降低成本、提高系统容量和大规模设备连接。

阅读更多

北京小汽车摇号分析

北京汽车摇号到底是怎么摇的,很多人只知道自己摇了多长时间,倍数是多少。这里我帮大家看了一下。

摇号规则

1、摇号基数序号分配方法:首先,将当期所有审核通过的编码按从小到大的顺序分配序号;然后,第二阶梯及以上的编码按从小到大的顺序,接在后面继续分配序号;再然后,第三阶梯及以上的编码按从小到大的顺序,接在后面继续分配序号;以此类推。因此,高阶梯的编码所对应的多个摇号基数序号是不连号的,当期摇号基数序号总数=第一阶梯人数+第二阶梯人数×2+第三阶梯人数×3…… 2、摇号方法:摇号程序从当期所有摇号基数序号中随机抽取中签者,高阶梯的编码对应多个摇号基数序号,于是享受了多倍的中签概率。摇号程序确保高阶梯编码的多个摇号基数序号最多只能摇中一个,当其中一个摇号基数序号中签,该编码即中签。

看到上面这一段会有点懵,大部分人会被阶梯和乘数搞混乱。 这里我来帮大家解释一下。

阅读更多

nsq 随录

nsq

nsq 官网
nsq
go-nsq

组件

nsqlookupd

是守护进程负责管理拓扑信息。客户端通过查询 nsqlookupd 来发现指定话题(topic)的生产者,并且 nsqd 节点广播话题(topic)和通道(channel)信息。

阅读更多

Kong 随记

端口

默认情况下 kong 监控一下端口

  • :8000 监听来自客户端的传入HTTP流量,并将其转发到上游服务。

  • :8443监听来自客户端的HTTPS流量。此端口具有与端口类似的行为:8000,但它仅需要HTTPS流量。可以通过配置文件禁用此端口。

    80008443 作为提供服务的端口,在正常的线上服务是需要修改成 80443 端口。使用 docker来启动会很方便做端口映射,而不需要对配置做修改

  • :8001 管理端口,提供管理 Admin API

  • :8444 Admin APIHTTPS 端口

在最开始的看 Kong 相关的时候,一下看到 4 个服务端口会有些焦虑,实际上只是只是两种服务提供了 HTTPHTTPS 的访问,8000和8443提供服务,8001和8443 用来管理。

阅读更多

理解 zabbix 配置

zabbix 配置看上去很复杂。 实际上是由于界面布局不合理,功能都是以展示为主,平铺直列。在直观状态下实际上是误导。

作为一个运维监控的工具。把我们自己需要的功能对应到 zabbix 上,就会变的很好理解。

基本需求,就是需要监控一群机器,并给出相应的可视化的表或者提示。 实际上可以按照层级关系列出,而不是按照 zabbix 界面的平铺。

阅读更多