Code
Hub
Workspaces
Following
Trending
Connect
MCP
copy
Create free account
hub
/
github.com/Super-long/ChubbyGo
/ functions
Functions
197 in github.com/Super-long/ChubbyGo
⨍
Functions
197
◇
Types & classes
57
Method
Acquire
(args *AcquireArgs, reply *AcquireReply)
BaseServer/lockserver.go:234
Method
Acquire
(fd *BaseServer.FileDescriptor, LockType int, Timeout uint32)
Connect/client_handler.go:316
Method
Append
(key string, value string)
BaseServer/kvclient.go:153
Method
Append
(key string, value string)
Connect/client_handler.go:294
Method
AppendEntries
AppendEntries定义了follower节点收到appendentries以后的处理逻辑 * * 其实一共四种情况,就是follower日志多于leader,follower日志少于leader,follower日志等于leader(最新index处Term是否相同) */
Raft/raft.go:340
Function
BenchmarkDelete_BaseMap
*3.--------------测试并发Delete操作--------------*/
MapPerformanceTest/test_test.go:388
Function
BenchmarkDelete_ChubbyGo_ConcurrentMap
(chubbyGoMap.ConcurrentMap)
MapPerformanceTest/test_test.go:451
Function
BenchmarkDelete_ChubbyGo_SyncMap
(chubbyGoMap.Sync.map)
MapPerformanceTest/test_test.go:472
Function
BenchmarkDelete_ConcurrentMap
(ConcurrentMap)
MapPerformanceTest/test_test.go:409
Function
BenchmarkDelete_SyncMap
(Sync.map)
MapPerformanceTest/test_test.go:430
Function
BenchmarkGetKey_BaseMap
*2.--------------测试Get操作--------------*/ 读取一个存在的key (BaseMap)
MapPerformanceTest/test_test.go:131
Function
BenchmarkGetKey_ChubbyGo_ConcurrentMap
(chubbyGoMap.ConcurrentMap)
MapPerformanceTest/test_test.go:221
Function
BenchmarkGetKey_ChubbyGo_SyncMap
(chubbyGoMap.Sync.map)
MapPerformanceTest/test_test.go:251
Function
BenchmarkGetKey_ConcurrentMap
(ConcurrentMap)
MapPerformanceTest/test_test.go:161
Function
BenchmarkGetKey_SyncMap
(Sync.map)
MapPerformanceTest/test_test.go:191
Function
BenchmarkPutGet_BaseMap
*3.--------------测试并发Get,put操作--------------*/ (BaseMap)
MapPerformanceTest/test_test.go:282
Function
BenchmarkPutGet_ChubbyGo_ConcurrentMap
(chubbyGoMap.ConcurrentMap)
MapPerformanceTest/test_test.go:345
Function
BenchmarkPutGet_ChubbyGo_SyncMap
(chubbyGoMap.Sync.map)
MapPerformanceTest/test_test.go:366
Function
BenchmarkPutGet_ConcurrentMap
(ConcurrentMap)
MapPerformanceTest/test_test.go:303
Function
BenchmarkPutGet_SyncMap
(Sync.map)
MapPerformanceTest/test_test.go:324
Function
BenchmarkPutKeyNoExist_BaseMap
*1.--------------测试Put操作--------------*/ 在此测试中冲突键较多,对并发的map并不有利 (BaseMap)
MapPerformanceTest/test_test.go:28
Function
BenchmarkPutKeyNoExist_ChubbyGo_ConcurrentMap
(chubbyGoMap.ConcurrentMap)
MapPerformanceTest/test_test.go:88
Function
BenchmarkPutKeyNoExist_ChubbyGo_SyncMap
(chubbyGoMap.Sync.map)
MapPerformanceTest/test_test.go:108
Function
BenchmarkPutKeyNoExist_ConcurrentMap
(ConcurrentMap)
MapPerformanceTest/test_test.go:48
Function
BenchmarkPutKeyNoExist_SyncMap
(Sync.map)
MapPerformanceTest/test_test.go:68
Method
CheckToken
(token uint64, filename string)
BaseServer/fileSystem.go:433
Method
CheckToken
(args *CheckTokenArgs, reply *CheckTokenReply)
BaseServer/lockserver.go:352
Method
CheckTokenAt
(pathname string, filename string, token uint64)
Connect/client_handler.go:342
Method
CompareAndSwap
* * @brief: CAS操作只有在key对应的value值为数字时才有效 */
BaseServer/compareAndSwap.go:43
Method
CompareAndSwap
* * @brief: 提供一个更为灵活的CAS操作,具体的定义见compareSwap.go文件首部 */
Connect/client_handler.go:356
Method
Copy
()
Persister/persister.go:50
Function
CreatServer
* * @brief: 返回一个Config结构体,用于开始一个服务 * @param: nservers这个集群需要的机器数,包括本身,而且每个服务器初始化的时候必须配置正确 */
Connect/server_handler.go:293
Method
Create
(args *CreateArgs, reply *CreateReply)
BaseServer/lockserver.go:114
Method
Create
(fd *BaseServer.FileDescriptor, fileType int, filename string)
Connect/client_handler.go:306
Function
CreateClient
()
Connect/client_handler.go:40
Method
Delete
* * @param: 文件描述符传来的InstanceSeq,要删除的文件的名字 * @return: 成功删除返回true,否则返回false * @notes: 需要检测name是否存在; */
BaseServer/fileSystem.go:248
Method
Delete
(args *CloseArgs, reply *CloseReply)
BaseServer/lockserver.go:174
Method
Delete
(fd *BaseServer.FileDescriptor, opType int)
Connect/client_handler.go:310
Method
Error
()
Connect/common.go:77
Method
Error
()
Connect/common.go:112
Method
FastGet
(args *GetArgs, reply *GetReply)
BaseServer/fastget.go:75
Method
FastGet
* * @brief: FastGet不提供任何一致性保证,适用于读极多写极少的情况,此时讲并发map的策略改为syncmap更优,性能可以提升百分之二十到三十 */
Connect/client_handler.go:349
Method
Get
显然对于同一个客户端不允许并发执行多个操作,会发生死锁,这是我定义的使用规范
BaseServer/kvserver.go:88
Method
Get
Retrieves an element from map under given key.
BaseServer/concurrentHashMap.go:130
Method
Get
(key string)
Connect/client_handler.go:298
Function
GetMachineIdentification
* * @brief: 根据本机网卡MAC地址和随机数拼出一个16位的机器标识 * @notes: sony的雪花算法库默认的生成机器标示函数是使用内网IP算的,因为客户端在调用这个函数,现在基本都使用NET技术,很可能出现重复,所以需要修改生成机器标识函数. * 目前打算前6位为分别为mac
Flake/flake.go:53
Function
GetSonyflake
* * @brief: 通过雪花算法生成一个全局唯一的ID * @notes: 在协议层使用0作为初始值,显然使用flake生成的uuid不可能为零,因为时间戳已经设置好了 */ ps:测试代码出现问题的原因很简单,就是时间戳可能是一样的,这其实没什么好办法,测试代码手工配置最方便。
Flake/flake.go:33
Method
GetUniqueFlake
-------------------------- DEBUG用的两个函数,发现雪花算法巨大的问题,同一进程内生成的一样,导致测试出现问题
Connect/client_handler.go:280
Method
Has
Looks up an item under specified key
BaseServer/concurrentHashMap.go:147
Method
InstallSnapshot
(args *InstallSnapshotArgs, reply *InstallSnapshotReply)
Raft/raft.go:922
Function
IntervalDisPlay
* * @brief: Debug用,输出间隔符号 */
BaseServer/fileSystem.go:461
Method
IsEmpty
Checks if map is empty.
BaseServer/concurrentHashMap.go:178
Method
Items
Returns all items as map[string]interface{}
BaseServer/concurrentHashMap.go:255
Method
Iter
Returns an iterator which could be used in a for range loop. Deprecated: using IterBuffered() will get a better performence
BaseServer/concurrentHashMap.go:191
Method
IterCb
Callback based iterator, cheapest way to read all elements in a map. 传入一个回调函数,目前map中的每个值都会调用这个回调
BaseServer/concurrentHashMap.go:275
Method
Keys
Return all keys as []string 这个貌似不对 可能channel会阻塞,因为count结束以后可能会传入值,导致这里channel阻塞
BaseServer/concurrentHashMap.go:288
Function
LoadClientConfig
config file locker
Config/read_client_config.go:34
Function
LoadServerConfig
(filename string, cfg *Connect.ServerConfig)
Config/read_server_config.go:34
Method
MSet
(data map[string]interface{})
BaseServer/concurrentHashMap.go:79
Function
MakeClerk
在创建的时候已经知道了如何与服务端交互
BaseServer/kvclient.go:49
Function
MakeRaftInit
* * @brief: 用于创建一个raft实体 */
Raft/raft.go:845
Method
MarshalJSON
Reviles ConcurrentMap "private" variables to json marshal. 可以用这个持久化
BaseServer/concurrentHashMap.go:320
Function
NewBaseMap
()
BaseServer/concurrentHashMap.go:348
Method
Open
* * @param: 文件描述符传来的InstanceSeq;要打开的文件名 * @return: 返回当前文件的instanceSeq * @notes: 对于一个文件来说客户端open操作可以检查某个文件是否存在,如果存在会返回一个句柄,反之返回false; 对于一个目录来说open
BaseServer/fileSystem.go:392
Method
Open
其中重复代码很多不修改的原因很多地方类型都不一样,减少代码行数就需要反射,会降低可读性与性能;
BaseServer/lockserver.go:55
Method
Open
(pathname string)
Connect/client_handler.go:302
Function
PersisterDaemon
* * @brief: 负责按照策略进行持久化,其实这个守护协程值执行everysec策略 */
Persister/persister.go:210
Method
Pop
Removes an element from the map and returns it
BaseServer/concurrentHashMap.go:167
Method
Put
--------------------------
Connect/client_handler.go:290
Method
PutAppend
(args *PutAppendArgs, reply *PutAppendReply)
BaseServer/kvserver.go:152
Method
ReadRaftState
()
Persister/persister.go:70
Function
RecursionDisplay
* * @brief: Debug用,显示当前目录树的全部文件名 */
BaseServer/fileSystem.go:451
Method
Redis
RedisTest/redis.h:32
Function
RedisTest
RedisTest/redis.cpp:23
Function
RegisterRestClientListener
(l ClientListener)
Connect/client_handler.go:367
Function
RegisterRestServerListener
(l ServerListener)
Connect/server_handler.go:313
Method
Release
* * @param: 文件描述符传来的InstanceSeq;要释放的文件(锁)的名字 * @return: 成功删除返回true,否则返回false * @notes: 需要检测name是否存在 */
BaseServer/fileSystem.go:340
Method
Release
(args *ReleaseArgs, reply *ReleaseReply)
BaseServer/lockserver.go:294
Method
Release
(fd *BaseServer.FileDescriptor, token uint64)
Connect/client_handler.go:328
Method
RequestVote
RequestVote定义了Follower收到投票以后的处理逻辑 * * 我们在这个函数中需要实现将请求者的日志和被请求者的日志作对比 如果当前节点的Term比候选者节点的Term大,拒绝投票 * 1.如果当前节点的Term比候选者节点的Term大,拒绝投票 * 2.如果当前节点的Term比
Raft/raft.go:199
Method
SaveStateAndSnapshot
Save both Raft state and K/V snapshot as a single atomic action, to help avoid them getting out of sync.
Persister/persister.go:97
Method
SetIfAbsent
Sets the given value under the specified key if no value was associated with it.
BaseServer/concurrentHashMap.go:117
Method
SnapshotSize
()
Persister/persister.go:121
Function
StartKVServerInit
*func (kv *RaftKV) Kill() { close(kv.shutdownCh) kv.rf.Kill() }*/
BaseServer/kvserver.go:245
Method
Upsert
Insert or Update - updates existing element or inserts a new one using UpsertCb
BaseServer/concurrentHashMap.go:106
Function
init
config file locker
Config/read_server_config.go:30
Function
init
()
Config/read_client_config.go:28
Function
isEffective
* * @brief: 判断文件名是否出现错误 */
BaseServer/common.go:226
Function
main
* * 测试分为两个部分,第一部分对于写锁测试,第二部分对于读锁测试 */
lock_expand.go:16
Function
main
测试分为两个板块,基础锁定操作与延迟锁定
lock_base.go:14
Function
main
import _ "net/http/pprof"
server_base.go:12
Function
main
测试CAS操作的基础功能,分别为正常CAS,指定边界和跨度的递增和递减。
CAS_base.go:13
Function
main
()
client_base.go:24
Function
main
RedisTest/redis.cpp:35
Function
main
* 测试ChubbyGo的功能是否ok. */
MapPerformanceTest/concurrentMap_base.go:14
Function
nrand
()
BaseServer/kvclient.go:41
Method
~Redis
RedisTest/redis.h:34
← previous
101–197 of 197, ranked by callers