Nothing Special   »   [go: up one dir, main page]

Skip to content

atopos31/go-velisearch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VeliSearch-分布式搜索引擎

VeliSearch是一个使用go语言开发的分布式,高性能,可扩展的搜索引擎。

  • 支持单机,分布式部署,通过垂直切分数据,降低单机负载。
  • 使用Etcd实现服务注册,服务发现,使用Grpc进行节点间通信。
  • 添加文档时使用最小并发度算法获取节点,实现负载均衡。
  • 使用分段锁实现并发安全的map,value利用跳表结构提高查询效率。

分布式架构

Worker

倒排索引

目录结构

│  .gitignore
│  go.mod
│  go.sum
│  makefile
│  README.md
│
├─docs # 文档
│
├─index_service
│  │  Iindexer.go # worker接口
│  │  index.pb.go # proto rpc 文件
│  │  indexer_worker.go # 单机worker
│  │  indexer_worker_service.go # worker服务
│  │  sentinel.go # sentinel 集群worker
│  │
│  ├─load_balancer
│  │      load_balancer.go # 负载均衡器
│  │      random_load.go # 随机负载均衡
│  │      round_robin.go # 轮询负载均衡
│  │
│  ├─proto
│  │      index.proto # proto文件
│  │
│  └─service_hub
│          etcd_service_hub.go # etcd 服务中心
│          hub_proxy.go # 服务代理
│          service_hub.go # 服务中心接口
│
├─internal
│  ├─kv_db
│  │      badger_kv_db.go  # badger db
│  │      bbolt_kv_db.go # bbolt db
│  │      kv_db.go # kv db接口
│  │
│  ├─reverse_index
│  │      reverse_index.go # 倒排索引接口
│  │      skiplist_reverse_index.go # skiplist倒排索引
│  │
│  └─test
│          kv_db_test.go # kv db测试
│
├─types
│  │  doc.go 
│  │  doc.pb.go # 文档类型
│  │  term_query.go 
│  │  term_query.pb.go # 搜索类型
│  │
│  └─proto
│          doc.proto
│          term_query.proto
│
└─util
        bits.go # 位操作
        concurrent_hash_map.go # 并发安全的map
        logger.go # 日志
        net.go # 网络相关

About

Golang实现分布式搜索引擎

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages