ABP vNext + HBase:打造超高吞吐分布式列式数据库 🚀🔥
- 基于 ABP vNext 构建亿级写入、毫秒级查询的列式分布式存储
- 支持 HTTP Basic/Bearer/Kerberos+SPNEGO 多种认证方式 🔐
- 丰富的表达式 DSL、
IAsyncEnumerable扫描 & Scanner 生命周期管理 🔄- 行键防热点、列簇压缩、TTL、版本控制优化 🔑
- 一键 Docker Compose 部署 🐳 + Kubernetes Secrets & 健康探针示例
- OpenTelemetry 链路追踪 🔍、Prometheus 指标命名规范 & Grafana 仪表盘 📊
- 单元测试(MockHttp)✅、集成测试(Testcontainers)🧪 & Phoenix SQL 层(可选)
- 支持批量写入、限流背压、多租户隔离、TLS 证书 🌐
📑 目录
系统架构与场景定位 🧩
应用场景
- 物联网设备时序上报
- 行为日志大规模采集
- 宽表用户画像写入
安全认证与连接注入 🔐
配置模型与验证
public class HBaseSettings
{
[Required, Url] public string BaseUrl {
get; set; } = null!;
[Required] public string Table {
get; set; } = null!;
public string? Username {
get; set; }
public string? Password {
get; set; }
public string? Token {
get; set; }
}
// Program.cs / Startup.cs
services.AddOptions<HBaseSettings>()
.BindConfiguration("HBaseSettings")
.ValidateDataAnnotations()
.Validate(o => !string.IsNullOrWhiteSpace(o.Username)
|| !string.IsNullOrWhiteSpace(o.Token),
"必须配置 Username/Password 或 Token");
services.AddHttpClient<IHBaseClient, HBaseRestClient>("HBase", (sp, client) =>
{
var opts = sp.GetRequiredService<IOptions<HBaseSettings>>().Value;
client.BaseAddress = new Uri(opts.BaseUrl);
if (!string.IsNullOrEmpty(opts.Token))
{
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", opts.Token);
}
else
{
var cred = Convert.ToBase64String(
Encoding.UTF8.GetBytes($"{
opts.Username}:{
opts.Password}"));
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue(

最低0.47元/天 解锁文章
1186

被折叠的 条评论
为什么被折叠?



