springcloud 从头开始构建分布式微服务脚手架
必备服务(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:手动运行,前台运行 访问地址 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不具备的。
gateway特性
-
基于Spring Framework 5、Project Reactor和Spring Boot 2.0构建; 能够在任意请求属性上匹配路由; predicates(谓词) 和 filters(过滤器)是特定于路由的; 集成了Hystrix断路器; 集成了Spring Cloud DiscoveryClient; 易于编写谓词和过滤器; 请求速率限制; 路径重写。