1.微服务的拆分原则/怎么样才算一个有效拆分
- 单一职责原则:每个微服务应该具有单一的责任。这意味着每个服务只关注于完成一项功能,并且该功能应该是独立且完整的。
- 最小化通信:尽量减少服务之间的通信,服务间通信越少,系统越简单。
- 可独立部署:服务应该可以独立部署,不应该依赖于其他服务。
- 数据一致性:在设计服务时,要考虑好数据一致性的问题,避免因为服务拆分而带来的一致性挑战。
- 性能考量:在拆分服务时,要考虑到性能的影响,避免不必要的服务拆分导致性能下降。
2.微服务的拆分方式
一般有两种方式:
1.纵向拆分 (垂直拆分)
所谓纵向拆分,就是按照项目的功能模块来拆分。例如商城项目中,就有用户管理功能、订单管理功能、购物车功能、商品管理功能、支付功能等。那么按照功能模块将他们拆分为一个个服务,就属于纵向拆分。这种拆分模式可以尽可能提高服务的内聚性。
2.横向拆分 (水平拆分)
而横向拆分,是看各个功能模块之间有没有公共的业务部分,如果有将其抽取出来作为通用服务。例如用户登录是需要发送消息通知,记录风控数据,下单时也要发送短信,记录风控数据。因此消息发送、风控数据记录就是通用的业务功能,因此可以将他们分别抽取为公共服务:消息中心服务、风控管理服务。这样可以提高业务的复用性,避免重