1.背景目的
随着业务的增长和复杂性的不断增加,传统的技术手段已经越来越难以维护和实现。
微服务,需要系统要提供一套基础的架构,提供微服务的底座功能, 支持微服务的松耦合和带来的优点.
需要以下:
每个业务服务采用独立的MYSQL数据库,初期考虑用到如下组件:
- 1. 服务注册、发现: eureka
- 2. 配置管理: apollo
- 3. 集群容错: hystrix
- 4. API网关: zuul
- 5. 服务负载:feign+ribbon
- 6. api文档输出:swagger2
- 7. 代码简化:lombok
- 8. 消息队列:rabbitmq或者kafka/rocketMQ
- 9. 分布式锁: redis
- 10. 链路跟踪:spring cloud sletuh ->zipkin
- 11. 安全认证:oauth2/JWT(通过JWT轻量级的实现)
- 12. 服务监控:spring-boot-admin
- 13. 日志模块:logback
什么样的服务能拆分为微服务:
- 1.职责业务独立
- 2.数据和逻辑独立, RPC调用的成本
- 3.与其他系统松耦合
2.准备环境
linux centos7 虚拟机,这里使用VMworkstation创建两台虚拟机(node1,node2),网络配置成NAT,
node1,node2作为eureka-server的双节点集群,提供服务注册和发现;这个可以替换为nacos
node1作为admin-server的运行环境,提供监控各服务;
node1安装mysql 数据库,提供数据持久;
node1安装redis,作为缓存服务;
node2部署携程的apollo服务,作为配置中心;这个可以替换为nacos
node2安装rabbitMQ,作为消息服务;
node2下载zipkin,然后启动zipkin-server,提供链路跟踪;这个可以替换为skyworking或者pinpoint
3.项目架构
# 各模块介绍
| 模块名称 | 端口 | 简介 |
| -------- | -----: | :----: |
| admin-server | 9100 | 服务监控中心,监控所有服务模块 |
| apollo-portal | 8070 | 分布式配置中心 |
| eureka-server | 9101,9102 | 服务注册中心,提供服务注册、发现功能、双节点集群 |
| sleuth-server | 9103 | SpringCloud实现的一种分布式追踪解决方案,兼容Zipkin |
| hystrix-dashboard | 9104 | hystrix控制台模块 |
| md-account-service | 8081 | 用户服务,提供注册、登录、地址等服务 |
| md-order-service | 8082 | 订单服务,提供订单创建、详情、状态变更 |
| md-payment-service | 8083 | 支付服务,支付记录 |
| md-product-service | 8084 | 商品服务,提供商品列表、详情、库存更新等服务 |
| md-msg-service | 8085 | 消息处理服务 |
| md-front-gateway | 8180 | 前端网关服务,结合swagger2提供API管理(有小问题,swagger页面无法点击单个接口,可通过展开功能打开,待解决) |
| md-admin-gateway | 8181 | 管理系统网关服务,结合swagger2提供API管理(有小问题,swagger页面无法点击单个接口,可通过展开功能打开,待解决) |