BoatHouse采用微服务架构进行开发,通过领域驱动设计(Domain-Driven Design) 的方式来划分业务(目前已有:统计服务、商品服务、账户服务、订单服务、支付服务),每一个业务领域均可以进行独立开发和部署。关于微服务架构选型,选择Sping Cloud+K8s/Istio的方式进行开发和部署。
套件版本:Spring Cloud Hoxton,对应Spring Boot 2.2.x
Spring Cloud组建:
问题领域 | SpringCloud | Kubernetes && ISTIO |
---|---|---|
配置管理 | Spring Config Server | ConfigMap & Secret |
服务注册发现 | Consul | Kubenetes Service |
负载均衡 | Spring Cloud LoadBalancer、Ribbon | Service/Ingress实现NLB,云厂商NLB |
API网关 | Spring Cloud Gateway | Istio Gateway |
安全性 | Spring Cloud Security | Ambassador支持多种基于Token的认证 方式 以及第三方认证代理,如:Auth0和Keychoak |
故障熔断 | resilience4j、Hystrix | Istio |
分布式链路追踪 | Spring Cloud Sleuth | Kiali |
日志分析 | ELK Stack | Fluentd+ ELK |
集群监控 | Micrometer、Turbine | Heapster+ InfluxDB + Grafana |
消息总线 | Spring Cloud Bus + Kafka | |
服务监控 | Spring Admin |
总体技术选型原则:
- 选择了Spring社区活跃度高的项目
- 放弃了已进入维护模式的Spring项目(例如Ribbon、Zuul、Hystrix、Turbine)进行开发,尽量选择社区维护性好的组件进行可持续开发