微服务常见问题及解决⽅案
1、分解模式:如何把应⽤分成若⼲个⼩服务?
1)按业务功能分解,将应⽤分解成能产⽣业务价值的最⼩单元。
2)对于跨多个业务的类(如订单会被订单管理、订单交付多个服务⽤到)⽤领域驱动设计(DDD),使⽤⼦域和边界上下⽂的概念来着⼿解决。
2、集成模式
1)API⽹关模式
2)聚合器模式
3、数据库模式
1)按服务分配数据库,为每个微服务配⼀个独⽴的数据库;
2)按服务共享数据库,⼀个数据库不要超过3个微服务,否则会影响扩容、⾃治和独⽴性。
3)命令查询职责隔离
4、观测模式
1)⽇志聚合:将多台机器上多个服务实例的请求汇聚到⼀起搜索和分析
2)性能指标:服务出现问题及时发出告警
3)分布式追踪:追踪横跨多个微服务的问题点,如Spring Cloud Slueth + Zipkin Server,是⼀种常见的实现⽅式。
4)健康检查:确保负载均衡不会将请求发给不健康的结点
5、横切关注点
1)外部配置:外部化所有配置,确保应⽤启动时能加载。实现不重启服务刷新
2)服务发现模式
3)断路器模式
4)蓝绿部署模式
微服务网关设计
6、微服务架构模式:Sidecar 模式、链式微服务(Chained Microservice)、分⽀微服务(Branch Microservice)、事件溯源模式(Event Sourcing Pattern)、和持续交付⽅式等。