1. 状态机
集群中的节点状态
2. 雪花(生成全局唯一id)
https://mp.weixin.qq.com/s?__biz=MjM5NjQ5MTI5OA==&mid=2651746232&idx=1&sn=576f712a35093d1b5dba5096b9e5a819&chksm=bd12b6f58a653fe350e5475648541bf80e97a89ab0b8a2421d2ae083676cf027064b539a25fc&mpshare=1&scene=1&srcid=0831RtgbmCemiEK46vk6KINo#rd
2.1 类 snowflake 算法
1 bit,41 bit 时间戳,10 bit workerID,12 bit 序列号
2.2 美团 leaf-snowflake 算法
当服务节点数量少时,可手动配置 workerID,当节点数量多时,利用 zk 的持久顺序节点特性,获取 workerID。通过定时上报时钟,当机器发生时钟回拨时,置服务为不可用。
3. hash 时间轮
用于定时任务。netty 中使用
4. java SPI 机制
java.util.ServiceLoader 框架常用
5. disruptor
无锁队列
<dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>3.4.1</version>
</dependency>
6. guava cache 常用缓存
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>guava</artifactId>
<version>2.6.1</version>
</dependency>
7. curator recipes 和 zkclient
zk 客户端
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>3.3.0</version>
</dependency>
8. mock 测试
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>2.13.0</version>
<scope>test</scope>
</dependency>
9. metrics
统计程序内部数据,如 TPS 等
<dependency>
<groupId>io.dropwizard.metrics</groupId>
<artifactId>metrics-core</artifactId>
<version>3.2.6</version>
</dependency>
10. maven 版本控制
<dependencyManagement>
11. 程序不断输出异常,打爆磁盘
log 控制文件大小,避免打爆磁盘
12. 自动化部署
Ansible
13. 程序之间的网络通信,必然涉及到对象的序列化和反序列化
ProtobufUtil