- 教程主要参考 http://blog.didispace.com/Spring-Cloud基础教程/
- 从 Dalston版本 开始
- 服务注册与发现(Eureka、Consul)
- 服务消费者(基础)
- 服务消费者(Ribbon)
- 服务消费者(Feign)
- 分布式配置中心 ------(跳过)
- Hystrix服务降级 依赖隔离 断路器
- Hystrix监控面板
- Hystrix监控数据聚合 turbine ------(跳过)
- zuul 服务网关
- 消息驱动的微服务(spring-cloud-stream-rabbitmq)
- 消息总线-----(跳过)
- 增加 ali-sentinel 来替代 (Hystrix 监控,隔离,限流,断路器)
- 增加 Nacos (服务注册配置,配置中心[未使用])
因为现在使用的 springboot 版本为 1.5.x, gateWay 需要 springboot 2.0.x 不能轻易升级 springboot 的 版本 会导致 es,redis,mongo 全部不能使用
- Consul_Consumer Consul消费者
- Consul_Server Consul服务者(Consul注册中心是 单独启动的 类似 zookeeper)
- Eureka_Client Eureka服务者(用来测试 多个Eureka客户端 负载均衡)
- Eureka_Client2 Eureka服务者2(测试负载均衡,+ sentinel来测试监控 限流)
- Eureka_Consumer Eureka消费者(测试负载均衡,直接使用 spring_cloud 的 loadBalancerClient 来选择,使用 restTemplate 来调用)
- Eureka_Server Eureka注册中心(与zookeeper,Consul,Nacos 不同,需要自己运行)
- Eureka_Server_Ribbon Eureka消费者2(使用Ribbon来调用,但好像没用上还是使用了loadBalancerClient,restTemplate, 有使用 Hystrix来进行断路器作业 )
- Eureka_Zuul 网关(作为权限拦截,和 将 请求引导至 新的 服务)
- GateWay(网关,spring-boot2.0 不在推荐 zuul. 需要升级2.0才能使用,现在为 1.5 ,无法启动)
- Hibernate 通过Hibernate的方式访问数据库 (目前想法是 将 Hibernate与Mybatis 分离 ,引入哪个jar 就使用 那种方式查询数据库,目前有问题)
- Hystrix_Dashboard Hystrix的 监控面板
- Mybatis 同 Hibernate
- Starter_Log 自动动手写的 一个 spring-boot 模块 (可以参考仿写 spring-boot 模块)
- Web 微服务中 每一个服务都是 Controller 层, 只有在 SOA 或 单体应用中 才有 web(包含前端), 前后端应该分离
- Eureka_Server_Feign Feign(使用Feign调用 注册的 rest, Feign 中已包含 Ribbon 会自动进行负载均衡)
配置中心 使用(携程 apollo)注册中心 增加 Nacos(服务注册 与 配置中心)增加 服务端 注册到 NacosWeb + Feign调用服务 Nacos增加 RocketMQ(位于AnewB 的 mq 模块中 与其他mq 在一起)增加 10 的 spring-cloud-steam() 7
spring-cloud-config(spring-cloud-config 配置管理:使用Apollo代替)增加 11 的 spring-cloud-bus(消息总线 配合spring-cloud-config 实现配置自动刷新:使用Apollo代替)
目前来看 微服务架构需要MQ来保证事务(或考虑下Fescar)(否则像以前Dubbo一样将 对数据库的操作原子化,写在一个服务中). 微服务与微服务之间的 调用只能是 查询 等不需要事务的操作. 如果是 新增,更新,删除等 通过 发送MQ,另一个服务 订阅MQ.来保证事务完整 然后需要考虑消息的 丢失(确认),重发(幂等性),顺序(分区).