下面是根据最近的工作内容来思考做事的方式,说是系统架构稍微有点标题党了,但是我感觉也可以说是广义的系统架构。
一、做铺垫
目前笔者在基础数据部门做实时计算相关的内容,近期接触到的主要工作是Kafka日志拆分,也就是把最基础的全量的日志Topic拆分成多个小的Topic,供业务方使用。
其主要目的为:
- 让业务方只关注自己需要的数据,让业务更加简单和专注
- 降低业务方和Kafka测的成本
二、讲故事
做这件事情,其实有两种思路:
- 业务方提需求,数据服务侧完成需求
- 数据侧主动进行日志的拆分
下面对这两种方式进行一下比较,分析其利弊。
2.1 业务方提需求,数据服务侧完成需求
好处:避免做不必要的工作,每产生一份数据都是有价值的;
弊端:被动接受需求,导致每一次工作安排都可能是被动的;并且对于研发人员来说,并没有自我驱动,提升自己的主观能动性;可能前期的架构在后期很容易就不适合;
2.2 数据侧主动进行日志的拆分
好处:一次性彻底完成事情,防止后续无休止的需求打扰正常工作安排;提升研发人员的主观能动性以及其对于业务的理解;促使研发从全局考虑,提前进行架构设计;
弊端:有可能拆分出来的数据无人使用或者近期无人使用,造成部分的资源浪费;
我们选择的是第二种,主动进行日志的拆分。因为通过比较可以发现,2.2这种方式相较于2.1是利远远大于弊的。
三、敲黑板
3.1 数据拆分的方法
-
按业务拆分
如果数据有非常明显的业务属性,那么就可以很直接的按照业务来拆分数据。比如快手这边可以按照视频、直播等业务来进行拆分。
-
按数据规模拆分
在进行日志拆分的过程中,有一份数据有几百个type,那么就很难按照业务来拆分。所以我们经过统计,发现其实拆出来top10(具体可以看自己的数据情况)以后,其他的数据规模并没有太大。
3.2 做事方式
-
不要只看眼前事,从全局和长远来考虑系统的架构
-
对类似的事情做总结,提取出来共性做架构
-
不局限于数据,要弄清楚其来龙去脉,全面理解事情
相关阅读:
吹NB:后续本公众号会更新更多关于管理开发、数据架构相关的问题,欢迎关注订阅“合格的程序猿”,代号:hgdcxy 。 长按识别下面二维码也可关注!
相关推荐
《从技术细节看美团架构》这篇文档深入剖析了美团这一知名在线服务平台的底层架构和技术实现。美团作为一家大型生活服务电子商务公司,其架构设计对于处理海量用户请求、保证系统稳定性和高并发处理能力至关重要。...
在Java开发领域,分布式架构的应用非常广泛,因为Java语言提供了丰富的工具和框架来支持这种模式。下面我们将详细探讨分布式架构设计的相关知识点。 首先,我们要理解分布式系统的基本概念。分布式系统是由多台...
对于那些需要高度可扩展性和灵活性的大规模或复杂业务场景来说,采用微服务架构成为了最佳实践之一。 **微服务架构的优势** - **提高应用程序灵活性**:通过将单一应用拆分为一组小型服务,每项服务都可以独立部署...
拆分初期,运维成本会显著增加,但随着业务及基础组件的积累,长期来看,这种拆分有助于提高开发和测试效率。 在第一阶段的拆分中,Bilibili采取了一系列措施。例如,使用Go语言原生的net/rpc进行服务间通信,并...
综合来看,这位Java资深工程师不仅在技术上全面,且在实际项目中积累了丰富的实践经验,尤其在分布式系统和高并发解决方案上有独到之处。他的经验和技能集适用于构建大规模、高性能的电商平台和复杂的企业级应用。
从提供的压缩包文件名称`xbin-store-master`来看,这可能是项目的源码仓库,包含项目的主分支。为了深入了解xbin-store的实现细节,开发者需要下载此代码,配置开发环境,并通过阅读代码、查看文档来学习其设计思想...
6. **监控与日志**: 微服务架构下,系统监控和日志分析尤为重要。Prometheus和Grafana可以用于度量和可视化服务性能,ELK(Elasticsearch、Logstash、Kibana)堆栈则用于收集、处理和分析日志。 7. **持续集成/持续...
专题秒杀后台是电商系统中的一...综上所述,"guoke.zip_专题秒杀后台_小程序"涵盖了从前端小程序开发、后端接口设计、秒杀逻辑、系统架构到安全性等多个方面的知识,对于电商领域的开发者来说,是一个宝贵的实践案例。
接着,我们来看SpringBoot如何融入这个体系。SpringBoot提供了便捷的微服务化支持,我们可以利用它创建独立的服务,每个服务负责一部分爬虫任务。通过SpringBoot的Actuator模块,我们可以轻松地监控每个服务的状态,...
虽然标签为空,但从文件名" My-System-Designs-master"来看,这可能是一个Git仓库的主分支,通常用于存储源代码、文档和其他相关资源。 系统设计的核心在于理解需求,将复杂的问题拆解为可管理的部分,并构建出高效...
从提供的信息来看,我们无法得知具体的标签,但我们可以根据常见电商系统的特点来推测其可能包含的技术栈和知识点。 1. **Spring Boot**: "mall-ser-main"的命名暗示了该项目可能使用Spring Boot作为基础框架。...
- **定义**:星型架构是最简单直观的一种数据仓库架构,其核心是事实表,周围围绕着多个维度表,形成了一个类似于星星的图形。 - **优点**: - 结构简单,易于理解。 - 查询性能好,适合快速响应业务需求。 - *...
1. **微服务架构**:作为一款现代电商系统,cloud-mall很可能采用了微服务架构,将大型应用拆分为小型、独立的服务,每个服务都负责特定业务功能,这样可以提高系统的可扩展性和可维护性。 2. **Spring Boot**:...
9. **可扩展性设计**:为了应对高并发场景,项目可能采用微服务架构,将推送服务拆分为多个独立的服务,通过服务发现和负载均衡技术提高系统的扩展性和容错能力。 通过对"Java-Project1"源代码的学习,开发者可以...