服务化拆分方法有两种,纵向拆分和横向拆分。
1、纵向拆分
说白了,就是按照业务模块拆分,将不同的功能模块服务化,独立部署并运维。
纵向拆分是从业务维度进行拆分,标准是按照业务的关联程度来决定,关联密切的业务适合拆分成一个服务,而功能相对独立的业务适合单独拆分成为一个微服务。
2、横向拆分
从公共且独立功能维度拆分。标准是按照是否有公共的被多个其他服务调用,且依赖的资源独立不与其他业务耦合。简单理解,就是找项目中可复用的模块,单独拆分成一个服务。
3、服务拆分后,面临的问题
- 服务定义:服务化后,依赖的调用都是通过接口(http或rpc),这些接口的名称、参数、返回值都需要约定好。
- 服务的发布和订阅:拆分后,服务者要暴露自己的服务地址,服务调用者要知道自己需要调用的地址,此时,需要一个注册中心,来记录。
- 服务监控:服务多了,需要监控各个指标,需要一个通用的监控方案。
- 服务治理:服务多了,如果某个服务有问题,其他服务就会受影响,此时一般通过熔断来处理。
- 故障定位:服务多了,一个请求途径多个服务,需要记录流转路径,定位问题。