百人研发团队百亿销售规模的技术架构实践分享
公司背景
公司融资 10 亿,剥离 B2B 生鲜业务板块为独立公司运营。除部分核心产品经理,运营,采购角色外,诸如研发团队等重新组建,并承接部分历史系统重新打造一整套供应链平台去支撑大规模业务扩张。全国 70 个左右仓(包含前置仓,中转仓和实体仓),实际达到百亿业务规模(营收),预计达到千亿业务规模。
研发规模
研发团队规模前期规划约百人(大约在 6 个月以内),后期增长到近 180 人左右;
研发组织采用矩阵式架构管理,分别包含财务组,工厂组,仓储组,采购组,大 B 销售业务组,小 B 销售业务组,数据分析组,架构组。
产品总监: 负责并统筹管理所有产品人员,为整个产品,流程,使用及体验负责;
项目经理: 统筹所有项目进度和研发人员资源调配,为整个产品的研发进度和交付负责。
首席架构师: 统筹所有技术架构,支持所有项目技术和业务使用,构建技术中台并支撑技术演变和运维,为整个产品的稳定性负责;
数据经理: 统筹所有数据和业务报表,打造数据中台,支撑智能化数据运营,为业务和高层管理决策提供数据支持。
应用架构
业务架构
技术架构
技术架构演进
研发基础设施
运维自动化
数据库运维
分布式基础设施
1. 分布式任务调度平台
xxl-job, 用于后台/异步任务等任务的挂载,确保一些耗时/耗资源/定时的任务和 api 分离,确保前端 api 的稳定。
2. 分布式服务中心
eureka-server, 用于服务的注册,负载均衡,故障转移,健康检测等服务统一管理。
3. 分布式消息队列
rocketmq, 用于业务的异步解耦,上下游消息的转发,异构业务的异步通信等。
4. 分布式日志中心
elk, 用于应用日志的统一管理,查询,统计等。
5. 分布式文件服务
七牛文件服务, 用于文件的上传,下载,文件生命周期的管理,图片的动态缩放等。
6. CDN
腾讯 cdn, 用于图片,脚本,css 等文件的 cdn 网络加速,加快前端资源的下载速度。
7. 分布式配置中心
apollo, 用于所有项目的配置分类,抽象,灰度发布等管理。
8. 分库分表中间件
sharding-jdbc, 用于对业务开发人员屏蔽数据库的分库分表,主从读写分离的拆分细节。
9. 搜索服务
elasticsearch, 用于全文检索,相似度文档(数据)的业务查询。
10. 分布式缓存
redis, 用于业务的分布式缓存,从而加快业务的查询速度。
分布式监控体系
1. 调用链监控
pinpoint, 用于所有服务的调用关系的监控分析,里面也包含(cpu,内存,耗时)性能等。未来要迁移成 skywalking。
2. 日志监控
elk, 用于应用日志的统一管理,查询,统计等。
3. 服务器监控
zabbix, 用于所有 linux 服务器系统级别的性能监控。
4. DB 监控
pmm,用于所有线上 mysql 数据库的性能监控记录,慢查询等分析。
5. 应用监控(性能分析)
cat,用于所有线上顺向和逆向调用链路的分析,数据库和 url 耗时的性能分析,服务及服务器的性能分析报表,bsf 自研监控报表等。
分布式框架 BSF
目标: 为了更好地支持业务开发,让开发人员从中间件中解放出来,专注业务以提高开发效率。同时基础框架集中统一优化中间件相关服务及使用,为开发人员提供高性能,更方便的基础服务接口及工具,实践过程可让效率提升 10 倍。
开源地址: https://gitee.com/chejiangyi/free-bsf-all
底层框架 bsf 和业务框架 business 剥离,让通用的底层框架剥离实际的公共业务类库; 基于 bsf 和 business 之上,定义标准的项目脚手架 csx-b2b-demo,用于快速构建项目服务。
业务基础服务构建
对比现有服务市场架构
技术架构
业务架构
未来
业务服务拆分架构重构
大数据和读写分离
ai 对于业务的应用
bsf 对 jdk17 及 21 的支持
表单引擎及流程引擎
by 车江毅
2023-5-6
java 研发团队内部架构分享笔记和复盘
评论