必备服务(Windows开发本机环境)
Java maven
mysql:自启动服务,后台运行 127.0.0.1:3306 MySQL57 root/root
Redis:手动运行,前台运行 127.0.0.1:6379 执行命令redis-server.exe redis.windows.conf
nacos:手动运行,前台运行 访问地址http://localhost:8848/nacos/index.html#/login nacos/nacos 执行start文件
使用spring cloud 构架脚手架需注意,部分组件停止更新,有了新的替代产品
第一步 构建注册中心
CAP理论
著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性)。由于分区容错性在是分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡。
CAP代表含义:
一致性(Consistency) (所有节点在同一时间具有相同的数据)
可用性(Availability) (保证每个请求不管成功或者失败都有响应)
分隔容忍(Partition tolerance) (系统中任意信息的丢失或失败不会影响系统的继续运作)
各主流注册中心产品对比
最常见的注册中心有Zookeeper、Eureka、Nacos。Zookeeper保证的是CP, 而Eureka则是AP。Nacos同时支持AP和CP模式,他根据服务注册选择临时和永久来决定走AP模式还是CP模式。
由于Eureka已经停止更新,选择Nacos。nacos还具有配置中心的功能。
第二步 构建路由网关
需要说明的是:spring cloud已经不再集成zuul,并且zuul是第三方包,从性能上来讲不如spring自己开发的gateway。
Nginx网关:适合门户网关,是作为整个全局的网关,是对外的,处于最外层,用不同的语言编写的,不易于扩展。
Gateway网关:业务网关,主要用来对应不同的客户端提供服务,用于聚合业务。各个微服务独立部署,职责单一,对外提供服务的时候需要有一个东西把业务聚合起来。还可以实现熔断、重试等功能,这是Nginx不具备的。
所以最终部署到服务器上时,使用Nginx做转发,提供静态页面访问,gateway提供业务请求,所有请求地址均指向gateway服务
gateway特性
-
基于Spring Framework 5、Project Reactor和Spring Boot 2.0构建;
-
能够在任意请求属性上匹配路由;
-
predicates(谓词) 和 filters(过滤器)是特定于路由的;
-
集成了Hystrix断路器;
-
集成了Spring Cloud DiscoveryClient;
-
易于编写谓词和过滤器;
-
请求速率限制;
-
路径重写。