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

 

posted on 2018-09-18 11:38  偶尔发呆  阅读(150)  评论(0编辑  收藏  举报