1、微服务如何理解?
背景:谈单体应用,迭代慢;功能不能服用;线上排查问题比较困难。
微服务优点:
1)职责清晰,服务足够小和内聚,独立开发独立部署
2)提高水平扩展性更灵活,只需扩展业务的瓶颈即可,资源利用率高
3)提高容错性。一个服务挂了可以集群保证高可用。一个集群出现故障,可以通过熔断避免整个系统瘫痪。
缺点:
服务之间的通信,治理,新技术问题,分布式事务一致性问题随之而现。
2、如何拆分微服务的?
前后端分离,restful通讯风格。根据akf拆分规则来看,微服务拆分维度主要基于:业务,数据,性能拆分。
akf法则提供立方体拆分:
1)x轴:水平扩展机器
2)y轴:按业务功能拆分
3)z轴:按数据数量/地域进一步拆分
我们按照x轴水平扩展机器,一些服务里面只是某一些功能业务并发量大;盲目扩展就浪费机器,就提出y轴进行按业务功能区拆分;当我们数据量大时候,地域拆分。例如长三角地区数据就送到上海,珠三角就送到深圳。
参考:https://blog.youkuaiyun.com/u011537073/article/details/120964581
3、分布式事务解决方案?
什么是分布式事务?
分布式系统中,一个大的事务涉及多个服务或数据库的事务;例如,一个下单操作中,涉及到到订单服务和库存服务。
CAP 原则的精髓是要么 AP,要么 CP,不存在 CAP。一致性 和 可用性 不能同时成立,因为分布式环境下肯定会分区部署多个副本节点,这必然会带来一致性问题,即保证多个节点的数据是相同的;而要让多个节点数据相同,就必须花时间来同步数据,这还必须在通信不会出现失败的情况下,那么在同步数据过程中为了保持一致性,就不能对外提供服务,所以这段时间就无法满足可用性的问题。
其核心思想是:既是无法做到强一致性(Strong consistency),但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性(Eventual consistency)。