文章图片
- (注册中心)每一个
微服务上线
都需要将它注册到注册中心
,这样做的好处就是,如果订单服务想要调用商品服务,订单服务先去注册中心看哪个商品服务被注册进来了,发现1号,2号机器商品服务被注册进来了,订单服务随便挑一个进行远程调用 - (配置中心)各个微服务的配置众多,假如有十台机器,需要改配置,那么十台机器都需要改很麻烦,所以我们需要一个配置中心,集中管理配置,所有的商品服务从配置中心获取它自己的配置,我们从配置中心,
改掉某一个配置,同样的服务实时更新配置
- (网关)所有前端的请求先通过网关,进行统一的
鉴权、过滤、路由
等等,通过网关抵达其它服务,来做一些预先的工作
-注册中心
、配置中心
、网关
在初代产品中分别对应这几个组件。
服务的注册发现使用1、SpringCloud Alibaba简介Eureka
,配置中心使用Spring Cloud Config
,网关使用Netflix
组件里的Zuul
,短路保护Hystrix
1)、简介 Spring Cloud Alibaba 致力于提供微服务开发的
一站式解决方案
。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。
https://github.com/alibaba/spring-cloud-alibaba
2)、为什么使用
文章图片
Spring Cloud 的组件也不是自己写的,是他整合外部的SpringCloud的几大痛点
- SpringCloud部分组件停止维护和更新,给开发带来不便;
- SpringCloud,部分环境搭建复杂,没有完善的可视化界面,我们需要大量的二次开发和定制
- SpringCloud配置复杂,难以上手,部分配置差别难以区分和合理应用
- 阿里使用过的组件经历了考验,性能强悍,设计合理,现在开源出来大家用成套的产品搭配完善的可视化界面(配置中心、注册中心、服务熔断)给开发运维带来极大的便利
- 搭建简单,学习曲线低。
- SpringCloud Alibaba- Nacos :注册中心(服务发现/注册)(替换以前的Eureka)
- SpringCloud Alibaba- Nacos :配置中心(动态配置管理)(替换以前的SpringCloud Config)
- SpringCloud-Ribbon:负载均衡
- SpringCloud-Feign:声明式HTTP客户端(调用远程服务)(Feign已经闭源,新开OpenFeign)
- SpringCloud Alibaba-Sentinel:服务容错(限流、降级、熔断)有监控平台运行起来方便(替换以前的Hystix)
- Springcloud-Gateway: API网关(webflux,编程模式)(有比Zuul更强大的功能和更优秀的设计)
- SpringCloud-Sleuth:调用链监控,包括整合zipkin
- SpringCloud Alibaba-Seata:原Fescar,即分布式事务解决方案
由于Spring Boot 1和 Spring Boot 2在 Actuator模块的接口和注解有很大的变更,且spring-cloud-commons 从 1.x.x 版本升级到2.0.0 版本也有较大的变更,因此我们采取跟SpringBoot版本号一致的版本:
- 1.5.x版本适用于Spring Boot 1.5.x
- 2.0.x版本适用于Spring Boot 2.0.x
- 2.1.x版本适用于Spring Boot 2.1.x
dependencyManagement依赖管理以后在dependency中引入spring-cloud-alibaba,不用写版本号,统一由spring-cloud-alibaba管理
com.alibaba.cloud
spring-cloud-alibaba-dependencies
2.1.0.RELEASE
pom
>import
2、SpringCloud Alibaba-Nacos[作为注册中心
由于需要将每一个
微服务
都放到注册中心
当中,所以将Nacos
放在common(公共)模块,那么其它依赖common的子模块就拥有了服务注册发现功能
文章图片
文章图片
文章图片
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
文章图片
Nacos 是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现﹑配置管理和服务管理平台。他是使用java编写。需要依赖java环境
Nacos,文档地址: https://nacos.io/zh-cn/docs/quick-start.html1)、下载nacos-server https://github.com/alibaba/nacos/releases
2)、启动nacos-server
- 双击bin中的startup.cmd文件
- 访问http://localhost:8848/nacos/
- 使用默认的nacos/nacos进行登录
每一个微服务,想要注册到注册中心,就需要指定注册中心的地址【zero|SpringCloud Alibaba&nacos&OpenFeign简介】Nacos启动失败 https://www.jianshu.com/p/597117dfcc91
文章图片
只要将集群改为单机模式就可以正常启动了。命令是 startup.cmd -m standalone
spring:
datasource:
username: root
password: root
url: jdbc:mysql://192.168.56.10:3306/gulimall_sms
driver-class-name: com.mysql.cj.jdbc.Driver
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
3)、将微服务注册到nacos中 1、首先,修改pom.xml文件,引入Nacos Discovery Starter。
文章图片
3.OpenFeign远程调用
文章图片
文章图片
使用:假如会员服务要调用优惠卷服务,只需要在会员服务中引入OpenFeign,那么它就具有远程调用的能力
用一个包feign专门来放远程调用的请求接口HTTP客户端:给远程发送HTTP请求
文章图片
例子:会员(member)和优惠卷(coupon)已经注册到Nacos中,会员(member)想从优惠卷(coupon)中获取当前会员的所有优惠卷,会员服务先从注册中心中查找优惠卷服务都在哪些服务当中,注册中心返回优惠卷的机器,会员服务选择一台机器发送请求,要来响应数据。会员服务从注册中心获取优惠卷服务的地址
文章图片
nacos测试:
测试member和coupon的远程调用
想要获取当前会员领取到的所有优惠券。先去注册中心找优惠券服务,注册中心调一台优惠券服务器给会员,会员服务器发送请求给这台优惠券服务器,然后对方响应。
- 服务请求方发送了2次请求,先问nacos要地址,然后再请求
推荐阅读
- flowable|spring cloud alibaba gateway nacos 503错误代码
- spring|【大型电商项目开发】分布式组件SpringCloud Alibaba简介Nacos&Feign-08
- 分布式|springcloud学习 feign与nacos的使用
- spring|Spring Cloud Alibaba之Nacos-服务消费者(Feign)
- 算法|简单粗暴的多对象目标跟踪神器 – DeepSort
- 程序员|Java线程池中的线程复用是如何实现的(稳进大厂)
- 程序员|java开发买什么笔记本好,详细解说
- 程序员|java如何获取随机数,这原因我服了
- 部署jar包windows服务工具