微服务上线
都需要将它注册到注册中心
,这样做的好处就是,如果订单服务想要调用商品服务,订单服务先去注册中心看哪个商品服务被注册进来了,发现1号,2号机器商品服务被注册进来了,订单服务随便挑一个进行远程调用改掉某一个配置,同样的服务实时更新配置
鉴权、过滤、路由
等等,通过网关抵达其它服务,来做一些预先的工作 注册中心
、配置中心
、网关
在初代产品中分别对应这几个组件。服务的注册发现使用
Eureka
,配置中心使用Spring Cloud Config
,网关使用Netflix
组件里的Zuul
,短路保护Hystrix
Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案
。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。
依托Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。
https://github.com/alibaba/spring-cloud-alibaba
Spring Cloud 的组件也不是自己写的,是他整合外部的
SpringCloud的几大痛点
SpringCloud Alibaba的优势:
结合SpringCloud Alibaba我们最终的技术搭配方案:
由于Spring Boot 1和 Spring Boot 2在 Actuator模块的接口和注解有很大的变更,且spring-cloud-commons 从 1.x.x 版本升级到2.0.0 版本也有较大的变更,因此我们采取跟SpringBoot版本号一致的版本:
dependencyManagement依赖管理以后在dependency中引入spring-cloud-alibaba,不用写版本号,统一由spring-cloud-alibaba管理
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
由于需要将每一个微服务
都放到注册中心
当中,所以将Nacos
放在common(公共)模块,那么其它依赖common的子模块就拥有了服务注册发现功能
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
Nacos 是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现﹑配置管理和服务管理平台。他是使用java编写。需要依赖java环境
Nacos,文档地址: https://nacos.io/zh-cn/docs/quick-start.html
https://github.com/alibaba/nacos/releases
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
1、首先,修改pom.xml文件,引入Nacos Discovery Starter。
使用:假如会员服务要调用优惠卷服务,只需要在会员服务中引入OpenFeign,那么它就具有远程调用的能力
用一个包feign专门来放远程调用的请求接口
例子:会员(member)和优惠卷(coupon)已经注册到Nacos中,会员(member)想从优惠卷(coupon)中获取当前会员的所有优惠卷,会员服务先从注册中心中查找优惠卷服务都在哪些服务当中,注册中心返回优惠卷的机器,会员服务选择一台机器发送请求,要来响应数据。
会员服务从注册中心获取优惠卷服务的地址
nacos测试:
测试member和coupon的远程调用
想要获取当前会员领取到的所有优惠券。先去注册中心找优惠券服务,注册中心调一台优惠券服务器给会员,会员服务器发送请求给这台优惠券服务器,然后对方响应。