前两天有个小伙伴问了我一个问题,分布式常见面试题里关于微服务的拆分能有几种方案?这可把我难住了,一开始我们也没什么方法论,就是按照业务模块做了些拆解,很自然地形成了微服务模块,像用户中心、商城中心,也没特别的规则。
但后来在微服务拆分的过程中,发现还是有一些规则可以参考的。
一个是基于业务的划分,这比较容易想到,按照提供服务内容的不同做拆解。比如专门提供课程的发布审核、内容接口、课程播放、浏览上报等一系列课程相关的事情。鉴权中心就专门处理认证、账号、密码、权限等。课程中心只负责提供课程相关的服务,这其实就是软件设计里高内聚低耦合的思想,也是用得比较多的。
还有就是基于资源需求的拆分。比如模块访问量大不大,像秒杀业务这种访问量大的就要从商城中心尽快拆分出来,因为要满足高性能业务的需求。而且服务访问量大,就多部署几个服务包,即使资源有限,也能很好地区分。