昨天草草的完成了通信協議適配器, 至少能做到自由切換協議, 縱看整個編程模型還是有缺陷, StateMachine的內部結構比我想的要複雜的多, 多個狀態實現的切換,以及對一些內部事件的觸發. StateMachine模塊的密度和其他模塊完全不同. 反而RaftKernel存在的意義卻減小了.

經過昨天晚上和今早的考慮, 我決定將StateMachine作為一個Slot,接入到RaftKernel中去, RaftKernel現在同時也是狀態機本身, Slot是可變的, 可以有Leader, Follower, Candidate三種插槽,每個Slot都有不同的擴展字段, 比如Leader會需要登記每個Node的同步日誌的深度以及狀態. 並且每個Slot都有自己的事件處理實現.

沒想到第一天開發結束就會遇到麻煩, 看來sraft以後的苦難還不少…