阿里巴巴B2B服务框架:演进、挑战与Dubbo实践

5星 · 超过95%的资源 需积分: 10 5 下载量 13 浏览量 更新于2024-07-24 收藏 2.41MB PDF 举报
"阿里巴巴(B2B)的服务框架探索(钱霄)" 阿里巴巴(B2B)的技术团队在面对日益增长的业务需求和复杂的应用架构时,经历了一系列的技术变迁和挑战。早期,阿里巴巴B2B部门从Perl CGI逐步转向Java技术,经历了Servlet/JSP、JavaEE、Turbine MVC框架以及自研的WebX框架的发展。随着业务的快速发展,单一的大型应用逐渐变得难以维护,导致开发成本上升,部署效率降低。 面临的主要挑战包括: 1. 应用规模的扩大,导致开发和维护成本增加,部署效率下降。 2. 应用数量的增多,使得数据库连接数攀升,加重了数据库压力。 3. 访问量的逐年增长,促使服务器数量增加,对数据连接、数据库和负载均衡设备提出了更高要求。 4. 对性能和可靠性的要求不断提升。 为应对这些挑战,阿里巴巴采取了以下策略: 1. 拆分巨型系统,将其垂直拆分为多个独立的Web系统,以降低开发维护成本。 2. 剥离共享服务,提供远程调用接口,实现服务共生。 3. 独立核心服务,构建服务集群,提供专业服务。 4. 减少专用负载均衡设备的使用,让应用支持分布式调用和调度。 在通信方面,从进程内通信到进程间通信,再到节点间的通信,RPC(远程过程调用)成为了基础。阿里巴巴B2B经历了从EJB到RMI/Hessian,再到XML-RPC/WS的演变,最终发展出定制的框架——Dubbo。 Dubbo的诞生并非简单地重复造轮子,而是出于以下需求: 1. 提供超出纯RPC功能的附加服务,如负载均衡、故障转移、路由和服务质量控制。 2. 考虑到稳定性、兼容性和集团内部的统一规范,以适应大规模开发团队的需求。 Dubbo的核心目标是实现“零入侵”,即服务化对现有应用的改动最小;高性能;高可靠性和高并发环境的适应性;以及模块化设计,以支持底层的服务化。在实践中,Dubbo 0.9作为初期尝试,通过核心功能的抽象,逐步构建起一套完整的服务框架。 阿里巴巴(B2B)的服务框架演进是一个从简单应用架构到复杂服务化架构的过程,涉及到技术选型、服务拆分、通信机制优化等多个层面。Dubbo作为这一过程的重要成果,为大规模分布式服务提供了有效的解决方案。