Categorygithub.com/meoying/local-msg-go
modulepackage
0.0.0-20241211053729-a946094fb40a
Repository: https://github.com/meoying/local-msg-go.git
Documentation: pkg.go.dev

# README

local-msg-go

通用本地消息表-Go语言实现。

如果你在极客时间购买过大明老师的课程,可以找他要兑换码。将项目用于面试

使用注意事项

你必须要先建好本地消息表,或者你也可以考虑依赖 service 来帮你建表。

不要用在生产环境,因为本身我只是用来演示如何设计一个通用的本地消息表解决方案,让你出去面试装逼的,所以它本身未经考验,代码质量和测试覆盖率都不是很好。

管理后台部署

你有多重部署形态。这里 admin 指的是管理服务的后台;前端指的是管理服务的前端;

和业务一起部署

例如说你有一个 order-service 的微服务,它提供的是微服务接口,那么你可以在这个服务上面额外部署管理后台,在这种情况下,你可以通过 HTTP 接口来访问;

更进一步,你可以把前端也部署起来,这样就可以通过界面来访问;

admin 和业务一起部署,前端独立部署

也就是前端部署一份,但是后端有多个 admin 服务,然后用前端去访问这些 admin 服务。

一般来说,前端使用域名来访问,而域名则解析为这些 admin 服务,通过 DNS 来实现负载均衡。

admin 和前端都独立部署

也就是手动部署一个独立的 admin,不和业务混在一起。

分库分表

我们整个机制是支持分库分表的,只有一个规则: 业务数据库和本地消息表必须是同库

换句话来说就是: 本地消息表的分库规则必须和业务数据库的分库规则一样

简单记忆就是:必然同库,可以不同表

现在通过一个例子来让你看清楚这个点。假设说订单的分库规则是 buyer 是偶数就在 order_db_00 上,奇数就在 order_db_01。那么:

  • 对于一个 buyer id = 101 的人来说,对应业务的本地消息表一定也在 order_db_01 上
  • 对于一个 buyer id = 101 的人来说,数据库是 order_db_01,数据表可以是 order_tab_123,而本地消息表可以是没有分表,是 order_db_01.local_msgs
  • 对于一个 buyer id = 101 的人来说,数据库是 order_db_01,数据表可以是 order_tab_123,而本地消息表可以使用另外一种分表规则,例如说 order_db_01.local_msgs_abc

# Packages

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

# Functions

No description provided by the author
No description provided by the author
NewDefaultService 都是默认配置,所有的本地消息都在一张表里面 在调度的时候,会使用一张表来实现分布式锁.
NewDefaultShardingService 创建一个初始化的支持分库分表的 service.

# Type aliases

No description provided by the author
Msg 导出这个类型.