Skip to content

整体设计

钟勋 edited this page Sep 26, 2021 · 11 revisions

简介

idcenter是一款高效分布式id生成系统,分为服务端和客户端,服务端和客户端是通过http请求进行交互。

1. 整体设计图

2. idcenter中的角色

idcenter中的角色包含:服务端、客户端、数据库、Nginx、应用、管理员

  • 服务端--服务端用于集中管理应用的id。id数据落地到MySQL数据库,允许客户端通过http请求获取id。服务端对id采取预处理机制,可支持海量的客户端请求。
  • 客户端--客户端用于协助应用获取id。客户端对id采取预处理机制,每个客户端可支持400万tps的id获取。
  • 数据库--数据库用于存储服务端管理的id,可使用MySQL或者PostgreSQL。
  • Nginx--Nginx用于对多个服务端进行负载均衡。由于管理员登录的session是存储在服务端中,所以Nginx的负载均衡策略需要使用根据ip_hash的策略。如果你有其他更好的负载均衡器,只要它能支持http协议,则完全可以使用它替代Nginx。
  • 应用--应用是从服务端获取id的系统。应用可以通过客户端的协助获取id;当然它也可以抛弃客户端,自己直接发起http请求服务端,获取id。
  • 管理员--管理员管理id,分为两个级别:普通管理员、超级管理员。普通管理员只能管理分配给他的id;超级管理员既能管理所有id,也能管理其他管理员。一般只需要一个超级管理员即可。

3. id的周期概念

  • 通过idcenter你可以创建1、2、3。。。这样的无周期概念的id。
  • 也可以创建2021070300001、2021070300002、2021070300003。。。这样的具有时间周期概念的id。让你看到id就能一目了然的知道这个id是什么时候生成的,比如2021070300001这个id是2021年7月3日生成的。