19楼社区的Scala重构之路:从Discuz到多城市站平台

需积分: 12 6 下载量 10 浏览量 更新于2024-07-23 收藏 781KB PDF 举报
"19楼社区的转型与Scala在构建中的应用" 19楼社区,始于2002年,最初作为一个都市快报编辑与网友交流的平台,发展至今已拥有庞大的用户基础和流量。2006年10月,杭州十九楼网络股份有限公司成立,19楼逐渐演变为一个基于Scala开发的、支持多城市站运营的本地社会化生活社区。在发展的过程中,19楼经历了从基于Discuz论坛系统到自研平台的转变,以解决访问速度慢、频繁宕机以及产品功能升级困难等问题。 早期,19楼尝试对Discuz进行改造,包括剥离数据访问层、分库分表、引入缓存以及开发新产品如我家(SNS)和品牌空间等。然而,随着业务扩展和技术挑战的增加,如热门板块数据量激增、前端业务代码混乱、数据库连接不稳、多城市站独立运营需求以及与其他网站整合等,原有的改造方案已无法满足需求。 2010年,19楼进行了第一次重构,前端展现层沿用Discuz,数据访问层负责数据路由,但面临数据量大、代码结构复杂、数据库稳定性差等问题。为解决这些问题,19楼开始考虑采用新的开发语言,包括PHP、Python、Java和Scala。最终,他们选择了Scala,主要原因是其与Java的兼容性、强大的语法表达能力、Actor模型以及团队对新技术的热情。 在开发团队方面,最初由4位有Java背景的工程师组成,他们在项目开始前学习Scala,但没有实际操作经验。随着项目的推进,新成员会接受2周左右的培训和代码学习。为了降低风险,项目完成后,从访问量较小的城市站开始逐步迁移,核心部分使用Java开发,并结合iBatis、Spring和SpringMVC等Java框架。 改造后的架构采用了分布式数据库,帖子数据库按TIDHash分布,每个城市站有自己的数据库,如DB1对应City1,DB2对应City2等,最多可扩展到256个数据库,显著提升了系统的扩展性和性能,实现了对更大单板论坛数据量和访问量的支持,以及城市站的独立运营能力。 通过这次重构,19楼不仅解决了技术上的难题,也成功实现了业务的横向和纵向扩展,为用户数据打通和行业垂直扩展提供了可能,同时统一了安全和运维服务,显著增强了平台的稳定性和用户体验。这一转型案例展示了如何通过技术创新和精心的架构设计,将一个传统的论坛升级为适应互联网快速变化的现代社区平台。