大型 Web 网站架构演变(五)

按微服务拆分应用

随着业务的发展,业务越来越多,应用越来越大。我们需要考虑如何避免让应用越来越臃肿。这就需要把应用拆开,从一个应用变为俩个甚至更多。例如我们可以把用户、商品、交易拆分开,变成“用户、商品”和“用户,交易”两个子系统。拆分后的结构:

问题:

这样拆分后,可能会有一些相同的代码,如用户相关的代码,商品和交易都需要用户信息,所以在两个系统中都保留差不多的操作用户信息的代码。如何保证这些代码可以复用是一个需要解决的问题。

解决方案:

通过走服务化 SOA 的路线来解决频繁公共的服务。

走 SOA 服务化治理道路

为了解决上面拆分应用后所出现的问题,我们把公共的服务拆分出来,形成一种服务化的模式,简称 SOA。采用服务化之后的系统结构:

优点:

1、相同的代码不会散落在不同的应用中了,使代码得到更好的维护。
2、我们把对数据库的交互业务放在了各个服务中心,让前端的 Web 应用更注重与浏览器交互的工作。

问题:

如何进行远程的服务调用?

解决方法:

可以通过下面的引入消息中间件来解决。

引入消息中间件

随着网站的继续发展,系统中可能出现不同语言开发的子模块和部署在不同平台的子系统。此时我们需要一个平台来传递可靠的,与平台和语言无关的数据,并且能够把负载均衡透明化,能在调用过程中收集并分析调用数据,对于网站应该如何成长做出预测。开源消息中间件有阿里的 Dubbo,可以搭配 Google 开源的分布式程序协调服务 Zookeeper 实现服务器的注册与发现。引入消息中间件后的结构:

管理员

转载请注明出处!如果本博文或者本站对您(网站)的内容/素材构成侵权,请第一时间与本博主联系!

Press ESC to close