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)、和持续交付方式等。