MCPcopy Create free account

hub / github.com/Super-long/ChubbyGo / functions

Functions197 in github.com/Super-long/ChubbyGo

MethodAcquire
(args *AcquireArgs, reply *AcquireReply)
BaseServer/lockserver.go:234
MethodAcquire
(fd *BaseServer.FileDescriptor, LockType int, Timeout uint32)
Connect/client_handler.go:316
MethodAppend
(key string, value string)
BaseServer/kvclient.go:153
MethodAppend
(key string, value string)
Connect/client_handler.go:294
MethodAppendEntries
AppendEntries定义了follower节点收到appendentries以后的处理逻辑 * * 其实一共四种情况,就是follower日志多于leader,follower日志少于leader,follower日志等于leader(最新index处Term是否相同) */
Raft/raft.go:340
FunctionBenchmarkDelete_BaseMap
*3.--------------测试并发Delete操作--------------*/
MapPerformanceTest/test_test.go:388
FunctionBenchmarkDelete_ChubbyGo_ConcurrentMap
(chubbyGoMap.ConcurrentMap)
MapPerformanceTest/test_test.go:451
FunctionBenchmarkDelete_ChubbyGo_SyncMap
(chubbyGoMap.Sync.map)
MapPerformanceTest/test_test.go:472
FunctionBenchmarkDelete_ConcurrentMap
(ConcurrentMap)
MapPerformanceTest/test_test.go:409
FunctionBenchmarkDelete_SyncMap
(Sync.map)
MapPerformanceTest/test_test.go:430
FunctionBenchmarkGetKey_BaseMap
*2.--------------测试Get操作--------------*/ 读取一个存在的key (BaseMap)
MapPerformanceTest/test_test.go:131
FunctionBenchmarkGetKey_ChubbyGo_ConcurrentMap
(chubbyGoMap.ConcurrentMap)
MapPerformanceTest/test_test.go:221
FunctionBenchmarkGetKey_ChubbyGo_SyncMap
(chubbyGoMap.Sync.map)
MapPerformanceTest/test_test.go:251
FunctionBenchmarkGetKey_ConcurrentMap
(ConcurrentMap)
MapPerformanceTest/test_test.go:161
FunctionBenchmarkGetKey_SyncMap
(Sync.map)
MapPerformanceTest/test_test.go:191
FunctionBenchmarkPutGet_BaseMap
*3.--------------测试并发Get,put操作--------------*/ (BaseMap)
MapPerformanceTest/test_test.go:282
FunctionBenchmarkPutGet_ChubbyGo_ConcurrentMap
(chubbyGoMap.ConcurrentMap)
MapPerformanceTest/test_test.go:345
FunctionBenchmarkPutGet_ChubbyGo_SyncMap
(chubbyGoMap.Sync.map)
MapPerformanceTest/test_test.go:366
FunctionBenchmarkPutGet_ConcurrentMap
(ConcurrentMap)
MapPerformanceTest/test_test.go:303
FunctionBenchmarkPutGet_SyncMap
(Sync.map)
MapPerformanceTest/test_test.go:324
FunctionBenchmarkPutKeyNoExist_BaseMap
*1.--------------测试Put操作--------------*/ 在此测试中冲突键较多,对并发的map并不有利 (BaseMap)
MapPerformanceTest/test_test.go:28
FunctionBenchmarkPutKeyNoExist_ChubbyGo_ConcurrentMap
(chubbyGoMap.ConcurrentMap)
MapPerformanceTest/test_test.go:88
FunctionBenchmarkPutKeyNoExist_ChubbyGo_SyncMap
(chubbyGoMap.Sync.map)
MapPerformanceTest/test_test.go:108
FunctionBenchmarkPutKeyNoExist_ConcurrentMap
(ConcurrentMap)
MapPerformanceTest/test_test.go:48
FunctionBenchmarkPutKeyNoExist_SyncMap
(Sync.map)
MapPerformanceTest/test_test.go:68
MethodCheckToken
(token uint64, filename string)
BaseServer/fileSystem.go:433
MethodCheckToken
(args *CheckTokenArgs, reply *CheckTokenReply)
BaseServer/lockserver.go:352
MethodCheckTokenAt
(pathname string, filename string, token uint64)
Connect/client_handler.go:342
MethodCompareAndSwap
* * @brief: CAS操作只有在key对应的value值为数字时才有效 */
BaseServer/compareAndSwap.go:43
MethodCompareAndSwap
* * @brief: 提供一个更为灵活的CAS操作,具体的定义见compareSwap.go文件首部 */
Connect/client_handler.go:356
MethodCopy
()
Persister/persister.go:50
FunctionCreatServer
* * @brief: 返回一个Config结构体,用于开始一个服务 * @param: nservers这个集群需要的机器数,包括本身,而且每个服务器初始化的时候必须配置正确 */
Connect/server_handler.go:293
MethodCreate
(args *CreateArgs, reply *CreateReply)
BaseServer/lockserver.go:114
MethodCreate
(fd *BaseServer.FileDescriptor, fileType int, filename string)
Connect/client_handler.go:306
FunctionCreateClient
()
Connect/client_handler.go:40
MethodDelete
* * @param: 文件描述符传来的InstanceSeq,要删除的文件的名字 * @return: 成功删除返回true,否则返回false * @notes: 需要检测name是否存在; */
BaseServer/fileSystem.go:248
MethodDelete
(args *CloseArgs, reply *CloseReply)
BaseServer/lockserver.go:174
MethodDelete
(fd *BaseServer.FileDescriptor, opType int)
Connect/client_handler.go:310
MethodError
()
Connect/common.go:77
MethodError
()
Connect/common.go:112
MethodFastGet
(args *GetArgs, reply *GetReply)
BaseServer/fastget.go:75
MethodFastGet
* * @brief: FastGet不提供任何一致性保证,适用于读极多写极少的情况,此时讲并发map的策略改为syncmap更优,性能可以提升百分之二十到三十 */
Connect/client_handler.go:349
MethodGet
显然对于同一个客户端不允许并发执行多个操作,会发生死锁,这是我定义的使用规范
BaseServer/kvserver.go:88
MethodGet
Retrieves an element from map under given key.
BaseServer/concurrentHashMap.go:130
MethodGet
(key string)
Connect/client_handler.go:298
FunctionGetMachineIdentification
* * @brief: 根据本机网卡MAC地址和随机数拼出一个16位的机器标识 * @notes: sony的雪花算法库默认的生成机器标示函数是使用内网IP算的,因为客户端在调用这个函数,现在基本都使用NET技术,很可能出现重复,所以需要修改生成机器标识函数. * 目前打算前6位为分别为mac
Flake/flake.go:53
FunctionGetSonyflake
* * @brief: 通过雪花算法生成一个全局唯一的ID * @notes: 在协议层使用0作为初始值,显然使用flake生成的uuid不可能为零,因为时间戳已经设置好了 */ ps:测试代码出现问题的原因很简单,就是时间戳可能是一样的,这其实没什么好办法,测试代码手工配置最方便。
Flake/flake.go:33
MethodGetUniqueFlake
-------------------------- DEBUG用的两个函数,发现雪花算法巨大的问题,同一进程内生成的一样,导致测试出现问题
Connect/client_handler.go:280
MethodHas
Looks up an item under specified key
BaseServer/concurrentHashMap.go:147
MethodInstallSnapshot
(args *InstallSnapshotArgs, reply *InstallSnapshotReply)
Raft/raft.go:922
FunctionIntervalDisPlay
* * @brief: Debug用,输出间隔符号 */
BaseServer/fileSystem.go:461
MethodIsEmpty
Checks if map is empty.
BaseServer/concurrentHashMap.go:178
MethodItems
Returns all items as map[string]interface{}
BaseServer/concurrentHashMap.go:255
MethodIter
Returns an iterator which could be used in a for range loop. Deprecated: using IterBuffered() will get a better performence
BaseServer/concurrentHashMap.go:191
MethodIterCb
Callback based iterator, cheapest way to read all elements in a map. 传入一个回调函数,目前map中的每个值都会调用这个回调
BaseServer/concurrentHashMap.go:275
MethodKeys
Return all keys as []string 这个貌似不对 可能channel会阻塞,因为count结束以后可能会传入值,导致这里channel阻塞
BaseServer/concurrentHashMap.go:288
FunctionLoadClientConfig
config file locker
Config/read_client_config.go:34
FunctionLoadServerConfig
(filename string, cfg *Connect.ServerConfig)
Config/read_server_config.go:34
MethodMSet
(data map[string]interface{})
BaseServer/concurrentHashMap.go:79
FunctionMakeClerk
在创建的时候已经知道了如何与服务端交互
BaseServer/kvclient.go:49
FunctionMakeRaftInit
* * @brief: 用于创建一个raft实体 */
Raft/raft.go:845
MethodMarshalJSON
Reviles ConcurrentMap "private" variables to json marshal. 可以用这个持久化
BaseServer/concurrentHashMap.go:320
FunctionNewBaseMap
()
BaseServer/concurrentHashMap.go:348
MethodOpen
* * @param: 文件描述符传来的InstanceSeq;要打开的文件名 * @return: 返回当前文件的instanceSeq * @notes: 对于一个文件来说客户端open操作可以检查某个文件是否存在,如果存在会返回一个句柄,反之返回false; 对于一个目录来说open
BaseServer/fileSystem.go:392
MethodOpen
其中重复代码很多不修改的原因很多地方类型都不一样,减少代码行数就需要反射,会降低可读性与性能;
BaseServer/lockserver.go:55
MethodOpen
(pathname string)
Connect/client_handler.go:302
FunctionPersisterDaemon
* * @brief: 负责按照策略进行持久化,其实这个守护协程值执行everysec策略 */
Persister/persister.go:210
MethodPop
Removes an element from the map and returns it
BaseServer/concurrentHashMap.go:167
MethodPut
--------------------------
Connect/client_handler.go:290
MethodPutAppend
(args *PutAppendArgs, reply *PutAppendReply)
BaseServer/kvserver.go:152
MethodReadRaftState
()
Persister/persister.go:70
FunctionRecursionDisplay
* * @brief: Debug用,显示当前目录树的全部文件名 */
BaseServer/fileSystem.go:451
MethodRedis
RedisTest/redis.h:32
FunctionRedisTest
RedisTest/redis.cpp:23
FunctionRegisterRestClientListener
(l ClientListener)
Connect/client_handler.go:367
FunctionRegisterRestServerListener
(l ServerListener)
Connect/server_handler.go:313
MethodRelease
* * @param: 文件描述符传来的InstanceSeq;要释放的文件(锁)的名字 * @return: 成功删除返回true,否则返回false * @notes: 需要检测name是否存在 */
BaseServer/fileSystem.go:340
MethodRelease
(args *ReleaseArgs, reply *ReleaseReply)
BaseServer/lockserver.go:294
MethodRelease
(fd *BaseServer.FileDescriptor, token uint64)
Connect/client_handler.go:328
MethodRequestVote
RequestVote定义了Follower收到投票以后的处理逻辑 * * 我们在这个函数中需要实现将请求者的日志和被请求者的日志作对比 如果当前节点的Term比候选者节点的Term大,拒绝投票 * 1.如果当前节点的Term比候选者节点的Term大,拒绝投票 * 2.如果当前节点的Term比
Raft/raft.go:199
MethodSaveStateAndSnapshot
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
MethodSetIfAbsent
Sets the given value under the specified key if no value was associated with it.
BaseServer/concurrentHashMap.go:117
MethodSnapshotSize
()
Persister/persister.go:121
FunctionStartKVServerInit
*func (kv *RaftKV) Kill() { close(kv.shutdownCh) kv.rf.Kill() }*/
BaseServer/kvserver.go:245
MethodUpsert
Insert or Update - updates existing element or inserts a new one using UpsertCb
BaseServer/concurrentHashMap.go:106
Functioninit
config file locker
Config/read_server_config.go:30
Functioninit
()
Config/read_client_config.go:28
FunctionisEffective
* * @brief: 判断文件名是否出现错误 */
BaseServer/common.go:226
Functionmain
* * 测试分为两个部分,第一部分对于写锁测试,第二部分对于读锁测试 */
lock_expand.go:16
Functionmain
测试分为两个板块,基础锁定操作与延迟锁定
lock_base.go:14
Functionmain
import _ "net/http/pprof"
server_base.go:12
Functionmain
测试CAS操作的基础功能,分别为正常CAS,指定边界和跨度的递增和递减。
CAS_base.go:13
Functionmain
()
client_base.go:24
Functionmain
RedisTest/redis.cpp:35
Functionmain
* 测试ChubbyGo的功能是否ok. */
MapPerformanceTest/concurrentMap_base.go:14
Functionnrand
()
BaseServer/kvclient.go:41
Method~Redis
RedisTest/redis.h:34
← previous101–197 of 197, ranked by callers