SpringCloud 微服务综合实例。分布式配置中心,服务发现&负载均衡,链路断路器,API网关,OAuth2认证授权,分布式追踪,ELK日志中心,Docker持续交付等最佳实践。
系统全景图:
技术实现:
服务 | 实现方案 | 项目 |
---|---|---|
分布式配置中心 | SpringCloud Config Server | support/config-server |
服务注册/负载均衡 | Netflix Eureka | support/eureka-server |
客户端负载均衡 | NetFlix Ribbon | -- |
链路保护与监控 | NetFlix Hystrix | support/turbine-server & support/hystrix-dashboard |
API网关 | NetFlix Zuul | support/zuul-server |
分布式追踪调用链分析 | SpringCloud Sleuth | support/zipkin-server |
OAuth2认证授权 | SpringCloud Security OAuth | support/auth-server |
基础服务 | -- | core/product-service & core/review-service |
聚合服务 | -- | composite/product-composite-service |
API服务 | -- | api/product-api-service |
日志处理 | ELK | -- |
普通方式部署 | Ansible Playbooks | -- |
容器化部署 | Docker Compose | -- |
mvn clean package
编译构建为Docker镜像: mvn clean package docker:build
, 镜像列表:
可参考READM步骤
Docker方式部署: source bootstrap.rc && docker-compose up -d
, 检查以下17个容器正常运行(容器数量较多,机器内存最好在8G以上,否则可能导致部分容器启动失败):
(admin/passw0rd)
CODE=5J4vJ8
curl acme:acmesecret@localhost:9999/uaa/oauth/token \
-d grant_type=authorization_code \
-d client_id=acme \
-d redirect_uri=http://example.com \
-d code=$CODE -s | jq .
TOKEN=bd34faf8-dcd0-4aed-a903-c8a90cb7a731