唯一識別碼工具

常見取得唯一識別碼的方式可以使用UUID (格式如d413be38-a588-4439-9e47-160c29cb2e86),但缺點是無法由識別碼判斷時間、或其它相關資訊。

UDE提供以“系統SERVER識別”及時間為基準的識別碼定義系統,以此種識別碼為鍵值記錄資訊,對於系統維運期的問題處理,會有較大的幫助。格式預設為{PERFIX}{SYSUID}-{TIME}:PERFIX為各專案依需求自訂的前綴文字;SYSUID為系統識別,預設為空白;{TIME}為系統時間、精確度至ms、並確保在同一個SERVICE的INSTANCE中不會重複。使用方式如下:

// 定義一個ENUM實作IdentifyPrefix,
// 其getPrefix 回傳各個項目所使用的識別碼前綴。
// 之後就可以透過此ENUM取得識別碼,如:
UdeID.ExecInfo.get();

// ENUM實作如下:
public enum UdeID implements IdentifyPrefix {
    /** The ExecInfo. */
    ExecInfo("EI");
    private final String prefix;
    private UdeID(String prefix) {
        this.prefix = prefix;
    }
    /** {PERFIX}.*/
    @Override
    public String getPrefix() {
        return this.prefix;
    }
}

由於時間精確度的問題,使用上有一些限制:

  • 單一SERVER/單一SERVICE 若是多台SERVER或同一台SERVER上佈署多個SERVICE,共用同一個識別碼前綴文字,則專案必須如『貳、三、系統資訊定義:SystemConfig』自行實作SystemConfigResolver決定唯一的系統識別碼:${SYSUID}。

  • 一秒內的取號次數平均小於1000 因為目前的精確度僅支援到ms,UDE會控制同一個佈署實例中取得的時間為唯一,所以過於頻繁的取號會讓時間值超過當下真實的系統時間,失去參考價值。 未來可能的增加功能:可設定增加時間精確度、並自訂時間部分的輸出格式。

results matching ""

    No results matching ""