大家还感兴趣的 >>>
KOKapp
微服务架构,多“微”才合适?【KOKapp官网下载】
本文摘要:互联网架构会泛起以下问题:代码随处拷贝底层庞大性扩散基础库(so/jar/dll)耦合SQL质量得不到保障,业务相互影响数据库耦合“服务化”是一个很好的解决上述痛点的方案。

KOKapp官网下载

互联网架构会泛起以下问题:代码随处拷贝底层庞大性扩散基础库(so/jar/dll)耦合SQL质量得不到保障,业务相互影响数据库耦合“服务化”是一个很好的解决上述痛点的方案。那么问题来了,微服务架构多“微”才合适?行业内有这样四类常见实践。

实践一:统一服务层这是最粗犷的玩法,所有基础数据,都通过一个统一的服务来举行会见。在业务不是特别庞大的时候,这不失为一个快速分层的方案,一旦业务变得庞大,服务层会变得很是重,成为耦合焦点。

以微信场景为例,假设通过一个通用的服务层来会见基础数据。则只有一个统一的服务层,用户信息,挚友信息,群组信息,消息信息都通过这个服务层来会见。

实践二:一个子业务一个服务如果所有的数据会见都通过一个服务层来会见,那么一行代码出故障,就将影响整个服务,所以更合理的做法是在服务层举行拆分。服务层架构如何细分?垂直拆分是个好的方案,将子业务分拆,那么微信的服务化架构或许会酿成下面的样子:用户相关的子业务,会见user服务挚友相关的子业务,会见friend服务群组相关的子业务,会见group服务消息相关的子业务,会见msg服务这样的话,一个服务出问题也不会影响其他服务,与此同时,数据层也根据业务垂直拆离开了。服务粒度变细之后,泛起一个新的问题,业务与服务的毗连关系变庞大了,有什么好的优化方案么?常见的,加入一个高可用服务分发层(Service Mesh不就是这么干的么),并在协议设计时加入服务号,可以淘汰蜘蛛网状的依赖关系:挪用方依赖分发层,传入服务号分发层依赖服务层,通过服务号参数分发 实践三:一个数据库对应一个服务数据会见服务最初是从DAO/ORM的数据会见需求过来的,所以有些公司也有一个数据库一个服务的玩法。

一个子业务对应一个服务的玩法如下图:服务层,整个群业务是一个服务存储层,实际可能对应了群信息、群成员、群消息等多个数据表 拆分成一个数据库一个服务,则架构会酿成下面的样子:群信息库,群成员库,群消息库之间也解耦开,不会相互影响。实践四,一个接口对应一个服务微服务架构中,更极端的,甚至一个接口对应一个微服务。

这样的话,架构就从:进化为:修改群信息服务增加群信息服务获取群信息服务多个服务利用同一个数据库,任何接口服务出问题,都不会影响其他接口服务。使用这种方案的,一般与开发语言特性联合比力精密,例如golang。上文中谈到的服务化与微服务,差别粒度的服务化各有什么优劣呢?总的来说,细粒度拆分的优点有:服务都能够独立部署扩容和缩容利便,有利于提高资源使用率拆得越细,耦合相对会减小拆得越细,容错相对会更好,一个服务出问题不影响其他服务扩展性更好 细粒度拆分的不足也很显着:拆得越细,系统越庞大系统之间的依赖关系也更庞大运维庞大度提升监控越发庞大出问题时定位问题更难 互联公司,以“子业务”作为微服务粒度是最常用,订单服务,用户服务,支付服务等等。


本文关键词:KOKapp,KOKapp官网下载

本文来源:KOKapp-www.tonghock.com

电 话
地 图
分 享
咨 询