博客
关于我
微服务时代组件化和服务化的抉择
阅读量:458 次
发布时间:2019-03-06

本文共 1133 字,大约阅读时间需要 3 分钟。

随着业务系统的复杂性不断提升,微服务架构的应用越来越广泛。在微服务拆分和迭代过程中,我们常常面临着两种服务化方式的选择:一种是将系统内部的公共功能模块封装成独立的JAR包提供服务,另一种是将这些功能模块拆分成独立的服务并通过接口暴露供其他服务调用。以下将详细探讨这两种方式的优劣势及适用场景,帮助我们更好地做出决策。

一、组件化与服务化的定义

组件化定义为:将系统内部的一些公共功能模块或对外部系统调用的一些逻辑方法封装成一个独立的JAR包,需要用该JAR包的系统直接依赖该包来使用相应的服务。例如,服务A、B、C都依赖于组件D来使用相关功能。

服务化定义为:将系统内部的一些公共功能模块或对外部系统调用的一些逻辑方法独立拆分为一个服务,该服务再对外暴露统一的接口供所有需要该服务的系统调用。例如,将组件D独立拆分为服务D,服务D再提供接口供服务A、B、C调用。

二、组件化的优劣势及适用场景

2.1 组件化的优势

  • 服务调用性能高:直接通过JAR包调用第三方服务,性能损耗较少,适合对性能要求较高的场景。
  • 节省服务器机器成本:无需独立部署服务,节省服务器资源,尤其在高并发场景下效果明显。

2.2 组件化的劣势

  • 可维护性较差:一旦需要变动调用逻辑或升级JAR包,相关服务都需同步升级,维护成本较高。
  • 组件升级成本高且风险较大:依赖组件的服务多,升级成本和风险增加。

2.3 组件化适用的场景

  • 自身系统内部公共功能处理:不涉及数据库资源层面的连接和调用。
  • 对外部系统服务调用:并发量大且对性能要求高,适合ToC场景,优先考虑性能优化。

三、服务化的优劣势及适用场景

3.1 服务化的优势

  • 资源隔离:服务之间互不影响,对调用方隐藏内部细节,便于独立开发部署。
  • 可维护性更好:服务间解耦,只需升级单一服务,无需同步更新其他依赖服务。
  • 升级成本低且风险可控:降低了组件升级的复杂性和成本,特别是在频繁升级JAR包的情况下效果显著。

3.2 服务化的劣势

  • 性能相对较差:服务拆分越多,调用链路越长,性能下降明显。
  • 分布式系统问题:多服务部署带来一致性、分布式事务等问题,增加系统复杂性。
  • 服务器资源成本增加:服务独立化导致资源需求增加,成本上升。

3.3 服务化适用的场景

  • 自身系统内部公共功能模块:涉及数据库资源层面的连接和调用,建议服务化。
  • 对外部系统服务调用:并发量较小,对性能要求不高,适合将接口调用逻辑封装为独立服务。

四、总结

组件化和服务化各有优劣,选择哪种方式取决于具体的业务场景。组件化适合对性能要求高且对服务器资源成本敏感的场景,而服务化则适合需要高可维护性和灵活性,且对服务间资源隔离要求较高的场景。技术方案应根据实际需求进行权衡,找到最适合的解决方案。

转载地址:http://dvwbz.baihongyu.com/

你可能感兴趣的文章
npm node pm2相关问题
查看>>
npm run build 失败Compiler server unexpectedly exited with code: null and signal: SIGBUS
查看>>
npm run build报Cannot find module错误的解决方法
查看>>
npm run build部署到云服务器中的Nginx(图文配置)
查看>>
npm run dev 和npm dev、npm run start和npm start、npm run serve和npm serve等的区别
查看>>
npm run dev 报错PS ‘vite‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。
查看>>
npm scripts 使用指南
查看>>
npm should be run outside of the node repl, in your normal shell
查看>>
npm start运行了什么
查看>>
npm WARN deprecated core-js@2.6.12 core-js@<3.3 is no longer maintained and not recommended for usa
查看>>
npm 下载依赖慢的解决方案(亲测有效)
查看>>
npm 安装依赖过程中报错:Error: Can‘t find Python executable “python“, you can set the PYTHON env variable
查看>>
npm.taobao.org 淘宝 npm 镜像证书过期?这样解决!
查看>>
npm—小记
查看>>
npm上传自己的项目
查看>>
npm介绍以及常用命令
查看>>
NPM使用前设置和升级
查看>>
npm入门,这篇就够了
查看>>
npm切换到淘宝源
查看>>
npm切换源淘宝源的两种方法
查看>>