多点生活的分布式服务框架DSF(上)

简介: 编者按:J2EE异军突起之时,那些2层架构(web+后端)的人必定是崩溃的;而后spring以without ejb革命了,现在spring已渐成全家桶之势。SOA概念兴起之时,ESB相关的厂商大赚,而今老马又携微服务而来,受益者包括企业软件厂商,各云平台厂商等,眼花缭乱渐迷眼,各领风骚好几年!多点生活架构师陈泽洪本着【少谈些概念、多解决问题】的原则给我们分享他们用几个月完成的这一套分布式服务框架。近期中生代社群由ppmoney敖小剑同学分享的微服务架构非常干货,几近跨省追杀;本文同样是这样的干货,很干...选择开源产品的时候,需要根据自己的实际情况,做必要的改造才能打造出真正适合自己

 

背景


多点生活成立于2015年初,1亿美元天使轮,和物美超市深度合作,目标是打造线上线下一体化的全渠道零售平台。技术研发团队基本上全  在成都,在成都JAVA好招人,所以基本上在多点内部就是JAVA一统天下了,也没有去考虑其他的语言了。10几个人,2个月时间,上线了第一版的业务系统,麻雀虽小五脏俱全,从APPH5,从商品到购物车,从订单到交易,从会员到配送履约,十几个系统。为了快速开发,全部基于REST API,通过一个叫API Center的中心服务进行中转服务调用。


微信图片_20220121144952.jpg


1、早期的API Center

 

随着业务量的增长,3个月时间用户量就超过200万,业务系统不断增加,服务之间的调用变得越来越复杂,没有谁能完全理清楚服务之间的关系了。同时APICenter慢慢成为瓶颈,也占用了我们不少服务器资源,作为创业公司,还是要精打细算的。而且APICenter作为服务中心路由节点,所有的服务调用都走这里通过。有一次,我们的一个工程师出了一个bug,在一个死循环中不停调用某个服务,直接把APICenter搞挂了,所有服务都不能提供服务,只能简单粗暴重启服务或干掉问题服务。


微信图片_20220121145008.jpg


2、业务发展一年后的全景图

 

创业公司,时间宝贵,拿来主义

为了解决上面的问题,迫切要有一套分布式服务框架来解决这些问题,由于时间紧,人手有限,从头开发一个肯定是来不及了。所以我们本着拿来主义的原则选择了一个开源的框架来用,那就是dubbo。虽然dubbo并不是市面上最好、最新的服务框架,但是我们很多人对dubbo都很熟悉,使用成本低,于是就选择了它,本身我们只需要支持JAVA语言就够了。

 

先做减法,再做加法

dubbo相对来说是一个很老的框架了,功能很庞杂,有很多我们用不上的东西,同时有很多我们想要的功能却没有。于是我们第一步先做减法:精简内核,去掉所有不要的功能,干掉了差不多一半的功能;第二步:调整策略,修改测试发现的bug;第三步:添加我们必要的功能。2个人,1个月时间,就基本上改造完成了符合我们预期的分布式服务化框架。


微信图片_20220121145045.jpg


3、多点服务化框架DSF


核心功能点:

1RPC [保持不变]

这块基本上没有做什么调整,直接沿用dubbo基于netty的长连接的传输,hessian的序列化,在满足我们的业务调用量的前提下,不引入更多的依赖,保持简单就好。

 

2、服务注册和发现 [改进]

我们是基于Zookeeper来做服务注册与发现,也没有什么大的问题,而且几乎是现成的解决方案,不需要开发什么代码。随着我们开始多机房(混合云)部署,就创建了一个大的ZK集群,不同机房的应用优先连本地的ZK节点,优先调用本地机房的服务,当本地机房的服务不可用的时候,自动跨专线调用另外机房的服务。

这些功能本身dubbo并没有提供,需要我们代码来实现。但是由此带来了不少的运维复杂度,我们需要针对不同机房的应用部署打包配置不同的参数,以适应优先本地机房配置。于是我们就开发了我们自己的配置中心(Admiral),可以用同一个打包部署文件,自动适配不同机房不同的参数来达到本地机房优先的原则。


微信图片_20220121145226.jpg


4、优先注册和调用本地服务


微信图片_20220121145241.jpg


5、基于配置中心,自动获取配置参数

相关文章
|
9月前
|
数据采集 存储 数据可视化
分布式爬虫框架Scrapy-Redis实战指南
本文介绍如何使用Scrapy-Redis构建分布式爬虫系统,采集携程平台上热门城市的酒店价格与评价信息。通过代理IP、Cookie和User-Agent设置规避反爬策略,实现高效数据抓取。结合价格动态趋势分析,助力酒店业优化市场策略、提升服务质量。技术架构涵盖Scrapy-Redis核心调度、代理中间件及数据解析存储,提供完整的技术路线图与代码示例。
951 0
分布式爬虫框架Scrapy-Redis实战指南
|
7月前
|
监控 Java 调度
SpringBoot中@Scheduled和Quartz的区别是什么?分布式定时任务框架选型实战
本文对比分析了SpringBoot中的`@Scheduled`与Quartz定时任务框架。`@Scheduled`轻量易用,适合单机简单场景,但存在多实例重复执行、无持久化等缺陷;Quartz功能强大,支持分布式调度、任务持久化、动态调整和失败重试,适用于复杂企业级需求。文章通过特性对比、代码示例及常见问题解答,帮助开发者理解两者差异,合理选择方案。记住口诀:单机简单用注解,多节点上Quartz;若是任务要可靠,持久化配置不能少。
701 4
|
9月前
|
消息中间件 人工智能 监控
文生图架构设计原来如此简单之分布式服务
想象一下,当成千上万的用户同时要求AI画图,如何公平高效地处理这些请求?文生图/图生图大模型的架构设计看似复杂,实则遵循简单而有效的原则:合理排队、分工明确、防患未然。
355 14
文生图架构设计原来如此简单之分布式服务
|
12月前
|
存储 监控 数据可视化
常见的分布式定时任务调度框架
分布式定时任务调度框架用于在分布式系统中管理和调度定时任务,确保任务按预定时间和频率执行。其核心概念包括Job(任务)、Trigger(触发器)、Executor(执行器)和Scheduler(调度器)。这类框架应具备任务管理、任务监控、良好的可扩展性和高可用性等功能。常用的Java生态中的分布式任务调度框架有Quartz Scheduler、ElasticJob和XXL-JOB。
4422 66
|
11月前
|
数据采集 人工智能 分布式计算
MaxFrame:链接大数据与AI的高效分布式计算框架深度评测与实践!
阿里云推出的MaxFrame是链接大数据与AI的分布式Python计算框架,提供类似Pandas的操作接口和分布式处理能力。本文从部署、功能验证到实际场景全面评测MaxFrame,涵盖分布式Pandas操作、大语言模型数据预处理及企业级应用。结果显示,MaxFrame在处理大规模数据时性能显著提升,代码兼容性强,适合从数据清洗到训练数据生成的全链路场景...
589 5
MaxFrame:链接大数据与AI的高效分布式计算框架深度评测与实践!
|
11月前
|
人工智能 分布式计算 大数据
MaxFrame 产品评测:大数据与AI融合的Python分布式计算框架
MaxFrame是阿里云MaxCompute推出的自研Python分布式计算框架,支持大规模数据处理与AI应用。它提供类似Pandas的API,简化开发流程,并兼容多种机器学习库,加速模型训练前的数据准备。MaxFrame融合大数据和AI,提升效率、促进协作、增强创新能力。尽管初次配置稍显复杂,但其强大的功能集、性能优化及开放性使其成为现代企业与研究机构的理想选择。未来有望进一步简化使用门槛并加强社区建设。
515 8
|
11月前
|
SQL 分布式计算 DataWorks
MaxCompute MaxFrame评测 | 分布式Python计算服务MaxFrame(完整操作版)
在当今数字化迅猛发展的时代,数据信息的保存与分析对企业决策至关重要。MaxCompute MaxFrame是阿里云自研的分布式计算框架,支持Python编程接口、兼容Pandas接口并自动进行分布式计算。通过MaxCompute的海量计算资源,企业可以进行大规模数据处理、可视化数据分析及科学计算等任务。本文将详细介绍如何开通MaxCompute和DataWorks服务,并使用MaxFrame进行数据操作。包括创建项目、绑定数据源、编写PyODPS 3节点代码以及执行SQL查询等内容。最后,针对使用过程中遇到的问题提出反馈建议,帮助用户更好地理解和使用MaxFrame。
|
11月前
|
SQL 分布式计算 数据处理
云产品评测|分布式Python计算服务MaxFrame | 在本地环境中使用MaxFrame + 基于MaxFrame实现大语言模型数据处理
本文基于官方文档,介绍了由浅入深的两个部分实操测试,包括在本地环境中使用MaxFrame & 基于MaxFrame实现大语言模型数据处理,对步骤有详细说明。体验下来对MaxCompute的感受是很不错的,值得尝试并使用!
283 1
|
11月前
|
分布式计算 数据处理 MaxCompute
云产品评测|分布式Python计算服务MaxFrame
云产品评测|分布式Python计算服务MaxFrame
226 2
|
11月前
|
人工智能 分布式计算 数据处理
有奖评测,基于分布式 Python 计算服务 MaxFrame 进行数据处理
阿里云MaxCompute MaxFrame推出分布式Python计算服务MaxFrame评测活动,助力开发者高效完成大规模数据处理、可视化探索及ML/AI开发。活动时间为2024年12月17日至2025年1月31日,参与者需体验MaxFrame并发布评测文章,有机会赢取精美礼品。