谈谈对服务化的理解

谈谈对服务化的理解首先 服务化是什么 为什么要服务化服务化是一种将业务 功能或流程抽象为服务的设计方法 通过服务之间的协作和调用来实现系统的整合和复用

大家好,欢迎来到IT知识分享网。

首先:服务化是什么,为什么要服务化

服务化是一种将业务、功能或流程抽象为服务的设计方法,通过服务之间的协作和调用来实现系统的整合和复用。它可以提高系统的可维护性和扩展性,主要用来构建分布式系统。

然后:怎样服务化

SOA微服务都是实现了服务化的、比较典型的架构风格。

0ac2b1cf8a9d7cd17a12887f90354d7b.png

SOA的出现是为了解决功能复用的问题,将一些通用的模块提取出来做成服务。但是SOA对于通用模块的设计没有设计核心原则,因此在对应需求变化等变更时,会产生可维护性变差,通用模块需求影响能力不足等问题。

54568abfd783e9c800e1049aeab3a5e3.png

微服务架构与DDD配合使用从理论上解决了SOA这方面的问题。基于微服务的服务设计一般要要满足下面的原则

1>单一职责,一个服务要从属于一个领域或者子领域,也就是说一个服务做的事情理论上应该是一句话能说清楚的。

2>服务自治,一个服务要具备独立的业务能力和运行环境,依赖包括存储也是独立的,有一套完整的流程,可以当成一个项目来对待。

3>服务组合,多个小型服务可组成一个更大的服务。

4>服务契约,API应该明确和清晰地定义其接口、协议、通信方式、版本管理和SLA。

在微服务架构中,技术上的关键是服务治理。服务网格本质是服务治理的一个范畴。微服务架构给出了服务拆分的基本原则,DDD给出了拆分的一个参考方向:面向领域拆分,也给出了一些基本的拆分模型,比如DDD四层架构、洋葱型架构。实际使用过程中也可以面向流程拆分或者面向功能拆分。典型的面向功能拆分的架构是微内核架构。这两个拆分方向与DDD并不冲突。

项目实施时,还需要解决拆分粒度的问题。这个问题DDD中没有给出明确的解决方案。

3936f0152a0683fc9ffcc82fc51c86a9.png

拆分粒度可以从成本维度和质量维度两个大方向来考虑。

成本维度

考虑资源占用情况,虚机来做成本高,如果公司容器化做得好,粒度可以细一些,通过基础设施来提高整体资源利用率。

考虑人力情况,多人维护一个服务,沟通成本高;一人维护多个服务,开发成本高。理论上,一个中级工程师独立维护一到两个服务是比较理想的。

考虑变更情况,如果两个服务经常一起变更,分开成两个服务成本相对较高。

质量维度

考虑服务治理等基础设施支持,如果基础设施支持足够完善,提供标准的RPC调用、完善的链路追踪、监控、数据可视化支持,粒度可以细一些,反之,基础设施不完善,粒度粗一些,整体服务质量更可控。

考虑性能消耗情况,拆分服务会增加通信成本,这个成本是否可以接受、与收益是否成正比或者是否可以通过其他的技术手段降低影响。

考虑部署速度,如果粒度太粗,一个服务服务器数量可能会增加,发布时间可能会很长;如果粒度太细,也可能因为要部署多个应用发布时间增长。要做好权衡。

考虑应用规模和业务量,项目初期,建议粗分,然后演进。上量之后,一个原本简单的业务,量级上的质变也可能需要拆得很细来解决稳定性、拆解场景的复杂性。

考虑高可用要求上,高可用等级不同也可能拆分成不同服务,比如核心应用三地六机房部署,非核心应用双机房部署。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/132273.html

(0)
上一篇 2025-08-01 18:15
下一篇 2025-07-22 07:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信