单一职责原则
指的是每一个微服务模块,只关心自己的业务规则。例如订单模块只关心订单的相关业务,不牵扯其他业务的逻辑。
服务自治原则
每一个微服务模块的开发,需要有自己的开发、测试、运维、部署这一条独立的栈,并且有自己的数据库等一切,完全把其当成一个单独的项目来做,不牵扯到其它无关业务。
轻量级通信原则
微服务的通信协议需要跨平台、跨语言的通信协议,因为微服务是不绑定技术栈的,不论使用Java、PHP还是.net去开发Web系统,它们之间的通信一定是去语言特色的。
接口明确原则
前面提到了微服务的“接口调整成本高”,那么怎么去避免它呢?我们一开始就应该规划好微服务的模块是一种什么样的模型,尽量去避免A接口的改动会导致B接口的改动这种情况。
基于Spring Cloud的微服务架构场景
微服务架构组件 | 选型方案 |
微服务实例的开发 | SpringBoot |
负载均衡 | Spring Cloud Ribbon |
服务注册和发现 | Spring Cloud Eureka |
断路器 | Spring Cloud Hystrix |
微服务网关 | Spring Cloud Zuul |
服务追踪 | Sleuth |
集中配置中心 | Spring cloud config |
日志监控 | ELK(Elasticsearch , Logstash, Kibana) |
持续集成 | Jenkins |
部署 | docker |
调试 | swagger |