首页 文章 精选 留言 我的

精选列表

搜索[CEL策略],共10000篇文章
优秀的个人博客,低调大师

AI搜索内容策略:从入门到行业实战的完整路径

上周二,一个做企业咨询的朋友找我吐槽。他团队花三个月写了150篇深度内容,覆盖了行业里几乎所有长尾问题。百度收录很好,公众号阅读也稳定在2000+。但诡异的事情发生了——他们追踪到的AI搜索推荐流量,几乎为零。我打开DeepSeek和秘塔搜了他几个核心问题,结果第一屏全是他竞品的内容,有些甚至直接搬运了他的观点。他坐在我对面,把筷子往桌上一拍:「我写的原创不推荐,搬运我的反而排在前面,这AI是不是有病?」

优秀的个人博客,低调大师

Region Migration 技术原理 — 共享存储架构下的高效数据迁移策略

背景 GreptimeDB 是一款采用共享存储架构的分布式时序数据库,其底层存储支持对象存储,可实现 50 倍成本节省。在 GreptimeDB 的分布式版本中,包含以下三种节点角色:MetaSrv ,Datanode 和 Frontend。 MetaSrv 管理着数据库和表的元信息,包括数据表分区在集群中的分布、请求的路由地址等信息。 Datanode 负责存储集群中的表分区(Region)数据,接收并执行从 Frontend 发来的读写请求。 Frontend 为无状态组件,可以根据需求进行伸缩扩容。其主要职责包括接收请求并进行鉴权,将多种协议转换为 GreptimeDB 集群的内部协议,并根据元数据将请求转发到相应的 Datanode 节点。 Region Migration 自 v0.6.0 起,GreptimeDB 分布式版本具备了将 Datanode 上的表分区(Region)数据迁移到另一个 Datanode 的能力。GreptimeDB 采用了共享存储(Shared Storage)架构,其中数据文件存储在对象存储上,并在多个 Datanode 之间共享。 因此,Region Migration 仅需迁移 Datanode 少量的本地数据(即 Datanode Memtable 中的数据)。与 Shared Nothing 架构的数据库相比,我们实际数据量迁移较小,整体迁移所需时间更短,同时上层负载均衡的体验也更加平滑。 技术细节 Internal 当写入请求到达 Datanode 时,Datanode 会以预写日志格式(WAL)将数据写入 Kafka 集群,随后更新 Memtable 后并响应请求。那么我们有以下关系: 完整表分区的数据 = Remote WAL 中的部分数据 + 对象存储上的数据文件 存储在对象存储上的数据在 Datanode 之间共享,因此进行 Region 迁移的目标节点(Datanode)只需要从指定位置开始回放表分区(Region)的 WAL 即可。 迁移流程 迁移命令如下,用户需要指定待迁移 Region ID,待迁移 Region ID 所属的 Datanode ID,和目标节点的 Datanode ID,并可指定回放数据的 Timeout 参数(可选)。 select migrate_region( region_id, from_dn_id, to_dn_id, [replay_timeout(s)]); 你可以用以下 SQL 命令查询名为 'migration_target' 数据表中的 Region 分布 select b.peer_id as datanode_id, a.greptime_partition_id as region_id from information_schema.partitions a left join information_schema.greptime_region_peers b on a.greptime_partition_id = b.region_id where a.table_name='migration_target' order by datanode_id asc; 查询结果示例:数据表包含一个 Region ID 为 4398046511104 的 Region 在 Datanode 1 上。 +-------------+---------------+ | datanode_id | region_id | +-------------+---------------+ | 1 | 4398046511104 | +-------------+---------------+ 1 row in set (0.01 sec) 准备候选分区 当用户输入迁移分区命令后,集群的 MetaSrv 会启动分区迁移 Procedure(GreptimeDB 如何提高多步操作的容错能力)。Procedure 首先会检查迁移目标节点(Destination Datanode)上是否存在候选分区(Candidate Region) 。若不存在,则在目标节点上打开候选分区。 进行数据迁移 在数据迁移正式开始之前,MetaSrv 会将原分区标记为降级,以切断写入流量(对应图中的 Update Metadata 和 Downgrade Leader Region); 然后,MetaSrv 通知候选分区从 Remote WAL 开始回放数据(对应图中的 Replay WAL 和 Upgrade Candidate Region); 如果数据成功回放,候选节点将被升级为分区的 Leader(对应图中的 Switch to Candidate Region),并继续接受写入流量; 否则,如果在数据回放过程中发生任何不可重试的错误,Procedure 会将原分区的降级标记移除,允许上层流量继续写入。 未来展望 未来,我们将基于 Region Migration 的能力实现热点数据迁移,以及负载平衡的水平扩展。在不中断服务的情况下,根据实时监测的负载状况和业务需求,智能地分配表分区(Region),以优化资源利用。这将实现更加智能和高效的数据管理,为持续变化的业务环境提供可持续的支持。 本周,我们也将发布 Region Migration 相关的用户指南,敬请期待。 GreptimeDB 作为开源项目,欢迎对时序数据库、Rust 语言等内容感兴趣的同学们参与贡献和讨论。第一次参与项目的同学推荐先从带有 good first issue 标签的 issue 入手,期待在开源社群里遇见你! Star us on GitHub Now: https://github.com/GreptimeTeam/greptimedb 微信搜索 GreptimeDB,关注公众号不错过更多技术干货和福利~ 关于 Greptime: 目前主要有以下三款产品: GreptimeDB 是一款用 Rust 语言编写的时序数据库,具有分布式、开源、云原生和兼容性强等特点,帮助企业实时读写、处理和分析时序数据的同时降低长期存储成本。 GreptimeCloud 可以为用户提供全托管的 DBaaS 服务,能够与可观测性、物联网等领域高度结合。 GreptimeAI 是为 LLM 应用量身定制的可观测性解决方案。 车云一体解决方案是一款深入车企实际业务场景的时序数据库解决方案,解决了企业车辆数据呈几何倍数增长后的实际业务痛点。 GreptimeCloud 和 GreptimeAI 已正式公测,欢迎关注公众号或官网了解最新动态!对企业版 GreptimDB 感兴趣也欢迎联系小助手(微信搜索 greptime 添加小助手)。 官网:https://greptime.cn/ GitHub: https://github.com/GreptimeTeam/greptimedb 文档:https://docs.greptime.cn/ Twitter: https://twitter.com/Greptime Slack: https://www.greptime.com/slack LinkedIn: https://www.linkedin.com/company/greptime

优秀的个人博客,低调大师

架构设计策略之寻找设计的最佳平衡点

如果没有所谓的“Deadline”(最后期限),我们就不用担心架构设计的问题,因为我们有足够的时间去研究去学习找到最优的架构设计方案。然而,做梦是可以有的。那怎么寻找?相信大家都各有各的看法,基本分为这几派: 梭哈派,不要给我说什么架构设计、设计思维!老夫架构设计就是敲代码,边敲边设计,自然而然代码就是架构,想那么多还不如直接敲。 借鉴派,善于借鉴业界成熟项目的标准,都按成熟标准来就好。 灵活派,根据实际项目需求来做架构设计,最好看现场情况来判断。 文档派,都得写文档,写完整了文档,就能预防后续的问题和风险。 肯定不止上面的介绍的对于架构设计的看法,相信大家都有自己认同的看法,欢迎评论区留下“最强流派”。 那架构设计的最佳平衡点肯定会有架构大师做了研究的,下面将从专业的研究分析下。 架构设计对总工期的影响 参考Barry Boehm《Architecting: How Much and When?》书中项目工期的构成:开发、架构设计、返工(处理技术债:打补丁、改BUG、重构、重写)(见图2)。 可见,Boehm证明了随着架构设计时间的增加,开发和返工量都会减少。书中还详细地研究了系统规模影响最佳构架设计的平衡点,鉴于国内外的项目情况不同,本文就不作为参考了。但从中还是可以得出以下个人认为比较客观的结论: 系统越大,前期做架构设计的获益越大,反之越小。 一千万行代码以上的大项目在总工期上架构设计时间占3到4成较好,不超过一万行代码的小项目则不超过1成。 前期架构设计做得不够,后期做好返工的心理准备。 架构设计的时间决定 上节内容用系统规模来评估架构设计的工作量似乎很符合“灵活派”的做法,因为可以根据项目需求很容易确定系统的规模。相信肯定有人会问:那复杂度不要考虑吗?大型系统可能很复杂,但有“借鉴派”的成熟解决方案就不必做太多架构设计。然而,也并非所有复杂度高的系统都很庞大。 因此,评估前期架构设计的时间,不能只按标准、经验、代码量、复杂度来决定。应该是按照风险来驱动架构设计(下篇文章再详细讲解),当然这也是Boehm做的研究(见《Using Risk to Balance Agile and Plan-Driven Methods》)。 总结 无论是如何寻找架构设计的最佳平衡点,都要遵循《架构设计思维原则》和运用《架构设计思维模式》来做架构设计,因为这些设计思维原则和模式非常有助于实现风险驱动架构设计,找到架构设计的最佳平衡点。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册