按微服务拆分应用
随着业务的发展,业务越来越多,应用越来越大。我们需要考虑如何避免让应用越来越臃肿。这就需要把应用拆开,从一个应用变为俩个甚至更多。例如我们可以把用户、商品、交易拆分开,变成“用户、商品”和“用户,交易”两个子系统。拆分后的结构:
问题:
这样拆分后,可能会有一些相同的代码,如用户相关的代码,商品和交易都需要用户信息,所以在两个系统中都保留差不多的操作用户信息的代码。如何保证这些代码可以复用是一个需要解决的问题。
解决方案:
通过走服务化 SOA 的路线来解决频繁公共的服务。
走 SOA 服务化治理道路
为了解决上面拆分应用后所出现的问题,我们把公共的服务拆分出来,形成一种服务化的模式,简称 SOA。采用服务化之后的系统结构:
优点:
1、相同的代码不会散落在不同的应用中了,使代码得到更好的维护。
2、我们把对数据库的交互业务放在了各个服务中心,让前端的 Web 应用更注重与浏览器交互的工作。
问题:
如何进行远程的服务调用?
解决方法:
可以通过下面的引入消息中间件来解决。
引入消息中间件
随着网站的继续发展,系统中可能出现不同语言开发的子模块和部署在不同平台的子系统。此时我们需要一个平台来传递可靠的,与平台和语言无关的数据,并且能够把负载均衡透明化,能在调用过程中收集并分析调用数据,对于网站应该如何成长做出预测。开源消息中间件有阿里的 Dubbo,可以搭配 Google 开源的分布式程序协调服务 Zookeeper 实现服务器的注册与发现。引入消息中间件后的结构: