/lark

Lark是一个开源的Golang IM服务端项目,具有高性能和可扩展等特性。采用微服务架构设计,支持集群和水平扩展,能够满足高并发业务需求,并实现了万人群消息的秒达。

Primary LanguageGoMIT LicenseMIT

Lark是一个开源的Golang IM服务端项目,具有高性能和可扩展等特性。采用微服务架构设计,支持集群和水平扩展,能够满足高并发业务需求,并实现了万人群消息的秒达。

技术选型及开发环境

序号 技术 版本 说明 官网
1 Go 1.21 开发语言 https://go.dev/
2 Lua 5.3 Redis Lua 脚本 http://www.lua.org/
3 Mysql 8.0.29 关系型数据库 https://www.mysql.com/
4 MongoDB 5.0.9 NoSql数据库 https://www.mongodb.com
5 Elasticsearch 7.17.6 搜索和分析引擎 https://www.elastic.co/cn/elasticsearch/
6 Redis 6.2.7 KV 数据库 https://redis.io/
7 Kafka 3.2.1 消息中间件 https://kafka.apache.org/
8 RabbitMQ 3.10.0 消息中间件 https://www.rabbitmq.com/
9 ZooKeeper 3.7.1 分布式协调服务 https://zookeeper.apache.org/
10 Docker 20.10.17 应用容器引擎 https://www.docker.com
11 MinIO 2022.12.12 对象存储 https://min.io/
12 Nginx 1.23.1 Web/反向代理 https://www.nginx.com/
13 JWT v4.4.2 JWT登录支持 https://github.com/golang-jwt/jwt
14 Validator v10.11.0 验证框架 https://github.com/go-playground/validator
15 Jaeger all-in-one:1.37 链路追踪 https://www.jaegertracing.io
16 Prometheus 2.36.2 系统监控和报警系统 https://prometheus.io/
17 Grafana 8.2.6 指标数据的可视化展现 https://grafana.com/
18 ETCD 3.5 服务发现 https://etcd.io/
19 Kibana 7.17.6 数据分析和可视化平台 https://www.elastic.co/cn/kibana/
20 Logstash 7.17.6 数据收集引擎 https://www.elastic.co/cn/logstash/
21 Filebeat 7.17.6 日志采集器 https://www.elastic.co/cn/beats/filebeat
22 Flink 1.14.6 通用数据处理平台 https://flink.apache.org/
23 ShardingSphere-Proxy 5.2.1 数据库中间件 https://shardingsphere.apache.org/
24 Mycat 2.1.21 数据库中间件【已弃用】 http://mycatone.top/
25 Gin v1.8.1 Web 框架 https://github.com/gin-gonic/gin
26 gRpc v1.49.0 远程过程调用系统 https://pkg.go.dev/google.golang.org/grpc
27 GORM v1.23.8 ORM https://gorm.io/

单机版运行步骤

Step 1
下载单机版分支代码(注:该分支代码已停止维护)
git clone -b standalone git@github.com:sevtin/lark.git

Step 2
创建日志文件目录
/var/log/lark

Step 3
创建docker容器数据卷目录
/Volumes/data/lark

Step 4
修改host文件
lark/configs/docker/host.txt

Step 5
执行容器启动脚本
./lark/build/run/docker-up.sh

Step 6
http://127.0.0.1:9001/identity/account/new-account
Minio Create Service Account
Access Key: SEv0QKlwqQ36M1eV
Secret Key: sZVZR1RD8Pcy73NANvk6vbMmoDsGSSOk

Create Buckets And Change Access Policy
["documents","photos","videos"]
Access Policy: Public

mkdir -p /private/tmp/lark/photos

upload files to photos
./lark/assets/images/avatar/06b73ea9-0c61-4ea6-b3e5-f89d89d53add.jpeg
./lark/assets/images/avatar/6b546cc7-5e4a-4d31-8017-1e5853f88a1c.jpeg
./lark/assets/images/avatar/b11883ba-f3d7-4164-a593-700c177c37c8.jpeg

update CONST_AVATAR_SMALL/CONST_AVATAR_MEDIUM/CONST_AVATAR_LARGE/SYSTEM_ACCOUNT_AVATAR_CONTACT_INVITE

Step 7
通过Apache Flink同步数据到Elasticsearch

Step 8
执行build脚本
./lark/scripts/build.sh

Step 9
执行项目启动脚本
./lark/build/run/run_all.sh

支持作者

维护这个项目需要花费大量的时间和精力来保持其更新和改进。如果你愿意支持我们,你的捐款将帮助我们继续保持项目的活跃性。

WeChatPay

Alipay