《笔者带你剖析Kratos1.3的分片模型》
由于笔者等下还的出去看电影,因此今天就长话短说,系列博文熟悉的目录与前言今天我就暂时不写了,并且今天要讲的东西很纯粹,就是对Kratos的分片模型进行详细的讲解,当然版本是基于1.3的而不是之前的1.2。当然如果你并不清楚Kratos,那么你可以首先阅读笔者之前的博文《笔者带你剖析轻量级Sharding中间件——Kratos1.x》。
Kratos支持2种类型的分库分片算法,一种是库内分片,而另外一种则是一库一片。当然这2种分片模型你选择任何一种都可以,但是对于笔者当前的业务现状来说,都觉得这2种算法,在后期扩库时非常不方便,主要是数据迁移是个老大难的问题,并且直接影响生产停应用的时间。
那么与公司DBA详细沟通后,笔者在Kratos的分片模型基础之上进行了一些调整。当然从宏观来看,仍然保持库内分片/一库一片这2种分片模型,只是为这2种分片模型都提供有是否需要支持片名连续的选项。所谓的片名连续,从某种意义上来说,并不是指的数据上的连续,而是数据库表的名称是否连续。也就是说,Kratos支持2类4种分片模式。
简单来说,Kratos的库内分片模式,可以采用片名连续也可以采用非片名连续。如果是片名连续,那么假设dbSize是32,tbSize是1024,那么每一个库的片数为1024/32=32,而片名是按照0000-1023进行分布的,这就意味着片名是全局唯一的,不允许出现重复,这同时也是TDDL所支持的一种分片算法。而如果在库内分片模式中采用非片名连续,那么假设dbSize是32,tbSize是1024,那么每一个库的片数为1024/32=32,而片名在每一个库中都是按照0-31进行分布,也就是说,非全局唯一,这样的好处,相对于片名连续更容易扩容,数据迁移也相对来说更加容易点,依稀记得DBA跟笔者信誓旦旦的保证过,目前Mysql进行扩容,数据迁移时,支持数据库名称不统一,但数据库表得统一,那么非片名连续确实能够更方便DBA做后续的扩容操作。Kratos库内分片所支持的片名连续与非片名连续,如图A-1,和A-2所示:
图A-1 库内分片模式的片名连续
图A-2 库内分片模式的非片名连续
Kratos的一库一片模式,同样也可以采用片名连续也可以采用非片名连续。如果是片名连续,那么假设dbSize是1024,tbSize是1024,那么每一个库的片数为1024/1024=1,而片名是按照0000-1023进行分布的,这就意味着片名是全局唯一的,不允许出现重复。相对于库内分片,一库一片的算法更简单和直观,因为一库一片只跟库相关,与片无关,算出了库,就等于间接算出片。而如果在一库一片模式中采用非片名连续,那么假设dbSize是1024,tbSize是1024,那么每一个库的片数为1024/1024=1,在此大家需要注意,一库一片的非片名连续,所有片名无需后缀(比如tb_0000),也就是说,有1024个库,即有1024个片,但片名是全局一致的,没有任何后缀,全局所有的片名都叫做tab。目前笔者测试环境中所采用的分片方案就是基于一库一片算法的非连续分片方式。总之一句话,任何一个复杂的大型网站,其使用的技术都应该是简单的。 Kratos一库一片所支持的片名连续与非片名连续,如图A-3,和A-4所示:
图A-3 一库一片模式的片名连续
图A-4 一库一片模式的非片名连续
最后补充下,是否是否需要连续分片的Kratos的Sharding配置文件,如下所示:
<bean id="kJdbcTemplate" class="com.gxl.kratos.jdbc.core.KratosJdbcTemplate"> <constructor-arg name="isShard" value="true" /> <property name="dataSource" ref="kDataSourceGroup" /> <property name="wr_weight" value="r0w0" /> <!-- 分片模式,false为库内分片模式,true为一库一表分片模式 --> <property name="shardMode" value="true" /> <!-- 片名是否连续,true为片名连续,false为非片名连续 --> <property name="consistent" value="false" /> <property name="dbRuleArray" value="#userinfo_id|email_hash# % 4" /> </bean>
注意:
目前Kratos还处于1.3阶段,未来还有很长的路要走,现在笔者测试环境上已经在大规模的使用,后续生产环境上将会开始投放使用,因此如果各位在使用过程中有任何疑问,都可以通过企鹅群:150445731进行交流,或者获取Kratos的构件。
相关推荐
要使用kratos-cron,你需要在项目中引入相关依赖,并配置任务。这通常包括定义任务函数、设置任务调度规则,以及启动调度器。在kratos-cron-main这个文件中,通常包含了调度器的主入口和示例任务定义。例如,你可以...
《B站微服务框架kratos开发文档》是针对B站(bilibili)开源的Go语言微服务框架——Kratos的详细技术指南。Kratos框架是为了解决现代互联网服务在设计、开发和运维过程中遇到的挑战而创建的,它提供了全面的微服务...
【Kratos微服务框架详解】 本教程将深入探讨B站(哔哩哔哩)推出的开源微服务框架——Kratos。Kratos旨在为大型分布式系统提供稳定、高效且易用的基础架构,尤其适合高并发、高可用性的场景。在这个详细的教程中,...
Kratos的分片模型: Kratos的注意事项: kratos的优点: 1、动态数据源的无缝切换; 2、master/slave一主一从读写分离; 3、单线程读重试(取决于的数据库连接池是否支持); 4、单独支持Mysql数据库; 5、非Proxy架构...
【标题】:“B站微服务框架Kratos详细教程(7)-数据库示例项目源码”是针对Bilibili(B站)开发的开源微服务框架Kratos的一个实践教程,主要聚焦于如何在Kratos中集成和操作数据库。在这个教程中,你将学习到如何在...
Kratos内置主题设置,可设置seo关键字及站点描述页面伪静态,自定义的顶部样式(背景图 ),支持图片轮播、侧边栏文章聚合、广告栏、点赞和社交化分享等功能,以及漂亮的博客订阅功能组件,让你的个人博客更加...
《WordPress与Kratos Pjax 0.4.4:实现高效网页加载技术解析》 在互联网技术日新月异的今天,网站性能优化已经成为提升用户体验的关键因素之一。WordPress作为全球最受欢迎的内容管理系统(CMS),其丰富的插件生态...
Kratos 是一款免费开源的两栏结构并且拥有自适应效果的...Kratos 主题内置了功能强大的主题配置工具,可以轻松设置关键字及站点描述,多种可供自定义的配置,以及漂亮的博客订阅功能组件,让你的网站更加与众不同!!
在本教程中,我们将深入探讨B站(哔哩哔哩)开发的微服务框架——Kratos。Kratos是一个为高可用、高性能、高稳定性而设计的Go语言微服务框架,适用于构建大型分布式系统。本教程的第六部分主要关注的是服务发现机制...
《Kratos原创概念》 在IT行业中,"Kratos"这个名字可能对许多玩家来说并不陌生,它通常是与游戏《战神》(God of War)系列联系在一起的主角——奎托斯(Kratos)的名字。这个压缩包文件“Kratos+Original+Concepts...
**中间件在B站微服务框架Kratos中的应用** 在微服务架构中,中间件扮演着至关重要的角色,它能够提供各种服务级别的功能,如日志记录、性能监控、限流、熔断、认证和授权等。B站的开源微服务框架Kratos,作为一个...
《PyPI官网下载:深入解析kratos-debug-0.0.1.tar.gz》 在Python的世界里,PyPI(Python Package Index)是开发者们的重要宝库,它为全球的Python项目提供了一个统一的发布和下载平台。本次我们将聚焦于一个名为...
在实际项目中,你可以根据具体需求选择使用Kratos提供的组件,或者扩展其功能来满足特定场景的需求。在压缩包文件`bilibili-kratos-76df7ef`中,包含了框架的源代码和相关示例,是深入学习和研究Go-Kratos的好资源。
在本教程中,我们将深入探讨B站(哔哩哔哩)开发的微服务框架——Kratos,并通过一个具体的gRPC示例项目来学习其用法。Kratos是Go语言实现的高可用、高性能的微服务框架,适用于构建复杂的分布式系统。gRPC是一个高...
Kratos 是一款专注于用户阅读体验的响应式 WordPress 主题,整体布局简洁大方,针对资源加载进行了优化。 Kratos主题基于Bootstrap和Font Awesome的WordPress一个干净,简单且响应迅速的博客主题,Vtrois创建和维护...
2. **Kratos**:Kratos是字节跳动开源的一套 Go 语言基础服务框架,旨在帮助开发者构建稳定、高效、安全的后端服务。它提供了诸如服务治理、配置管理、熔断降级、限流、日志、链路追踪等功能。 3. **MySQL**:MySQL...
"Kratos框架微服务商城-kratos-shop"是一个基于Go语言的微服务架构电商项目,主要使用了Baidu Kratos框架。Kratos是百度开源的一个高性能、高可用、易扩展的Go微服务开发框架,旨在帮助开发者构建稳定、可靠的业务...
基于kratos微服务框架数据分析管理系统源码+全部资料齐全.zip基于kratos微服务框架数据分析管理系统源码+全部资料齐全.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该...
11111111111111111111111111111111111111111111111111111111