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页面无法点击单个接口,可通过展开功能打开,待解决)  |