Categorygithub.com/rshulabs/HgCache
modulepackage
0.0.0-20231015082042-6b5340c89c34
Repository: https://github.com/rshulabs/hgcache.git
Documentation: pkg.go.dev

# README

项目简介

  • 仿 groupcache 改造的分布式缓存微服务项目
  • 复盘文档
  • 线上体验地址(注:由于服务器是本地电脑(买不起服务器,太穷了),所以大部分时间都可能没有开放,用 k8s 集群部署的实验环境,电脑吃不消~)
    • 接口: GET /api?key=Tom (Tom 为示例)

版本

  • Go go1.20.3 | > 19

  • make GNU Make 4.3

  • docker-compose v2.6.1

  • protobuf libprotoc 3.18.0

功能实现

  • 基于 groupcache 实现的⼀个分布式缓存,并在此基础上进行了服务发现及注册和网络框架扩展
  • 分布式一致性模块使用一致性哈希算法对节点进行负载均衡,实现了 sigleFlight 机制应对缓存击穿问题
  • 缓存模块实现过期和回调机制,并与其他模块解耦,可以使用多种淘汰算法,本项目默认是 lru 淘汰算法
  • 对缓存值进行封装,实现深拷贝机制,防止被恶意修改
  • 网络模块使用 gin,实现了跨域 cors 中间件
  • 使用 etcd 进行服务发现和服务注册

Usage

v1

  • ./run.sh

    2023/08/16 10:14:39 geecache is running at http://localhost:8001
    2023/08/16 10:14:39 geecache is running at http://localhost:8003
    2023/08/16 10:14:39 fontend server is running at http://localhost:8791
    2023/08/16 10:14:39 geecache is running at http://localhost:8002
    >>> start test
    2023/08/16 10:14:41 [Server http://localhost:8003] Pick peer http://localhost:8002
    http://localhost:8002/_hgcache/test/Tom
    2023/08/16 10:14:41 [Server http://localhost:8002] GET /_hgcache/test/Tom
    2023/08/16 10:14:41 [SlowDB] search key Tom
    6302023/08/16 10:14:41 [Server http://localhost:8003] Pick peer http://localhost:8002
    http://localhost:8002/_hgcache/test/Tom
    2023/08/16 10:14:41 [Server http://localhost:8002] GET /_hgcache/test/Tom
    2023/08/16 10:14:41 [HgCache] hit
    2023/08/16 10:14:41 [Server http://localhost:8003] Pick peer http://localhost:8002
    http://localhost:8002/_hgcache/test/Tom
    2023/08/16 10:14:41 [Server http://localhost:8002] GET /_hgcache/test/Tom
    2023/08/16 10:14:41 [HgCache] hit
    

v2

  • 前提:本地部署好 etcd

    • 参考 cd build_tools/etcd && docker-compose up -d

      Tips:
      	- ETCD_SERVERS=http://192.168.60.34:2379 // 192.168.60.34 改为本地部署 etcd IP
      	记得给data目录 777 权限
      
  • ./dist/cache --config=configs/cache.yaml --app.is_start_http=true

    [GIN-debug] GET    /cache/api                --> github.com/rshulabs/HgCache/internal/cache/controller.Query (3 handlers)
    2023-08-16 10:16:48.395 INFO    controller/http.go:40   http 服务监听地址: 192.168.60.34:8791
    2023-08-16 10:16:48.406 INFO    discovery/registry.go:88        cache server is registered.
    2023-08-16 10:16:48.406 INFO    impl/grpc.go:62 GRPC 服务监听地址: 192.168.60.34:8553
    2023-08-16 10:16:48.407 INFO    discovery/registry.go:106       service is keepalived with 18f89f8f8e566ad
    

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author