第一章 导引

网上书店:叮当网

叮当网 - DingDang 是一个虚构的网上书店项目。通过叮当网,用户可以浏览和查询书籍信息。

图1

和大多数项目一样。叮当网一开始是一个单体的应用程序。所有的代码编译打包成一个war包,部署在一台web服务器下。

随着用户数的增多,单台服务器开始不堪重负,这时,我们通过引入负载均衡,把DingDang 部署多份。很好,现在DingDang又开始愉快地工作了。当用户数进一步增多时,我们只需要继续增加DingDang的部署实例就可以了。

然而好景不长。很快,新的问题又开始冒了出来。

  • 首先,由于所有的代码耦合在一起,任何一点微小的改动,都必须整个应用程序重新编译,测试并重新部署。当部署的实例已经有好几百个之多时,这是一项让人很痛苦的事情。
  • 此外,你会发现项目的开发效率变慢了。假设书籍信息和出版社信息模块分别由开发团队A和团队B进行维护。现在出版社模块想要增加一些新功能,而与此同时,开发团队A正忙于修补用户反馈的一个严重bug。团队B在完成新功能的开发后,不得不等待团队A修改完毕,然后再一起打包发布。尽管新功能和这个bug没有什么关系!当你的开发团队不是两个,而是20个时,上述的的这种互相依赖和等待会严重地拖慢项目的开发迭代速度。
  • 其次,硬件的利用率变得很低。假设DingDang系统中有某一项功能是非常耗费CPU计算的。为了应付大规模的用户并发,我们部署了好几百个运行实例。这几百台机器的内存和硬盘等资源是闲置的。这意味着,每年几百万费用的浪费!

这里仅仅列出了几个常见的问题。为了解决这些问题,我们必须重构DingDang。把独立的功能模块拆分出来,作为独立的服务运行。拆分后的DingDang如下图所示:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值