zero|SpringCloud Alibaba&nacos&OpenFeign简介

zero|SpringCloud Alibaba&nacos&OpenFeign简介
文章图片

  • 注册中心)每一个微服务上线都需要将它注册到注册中心,这样做的好处就是,如果订单服务想要调用商品服务,订单服务先去注册中心看哪个商品服务被注册进来了,发现1号,2号机器商品服务被注册进来了,订单服务随便挑一个进行远程调用
  • 配置中心)各个微服务的配置众多,假如有十台机器,需要改配置,那么十台机器都需要改很麻烦,所以我们需要一个配置中心,集中管理配置,所有的商品服务从配置中心获取它自己的配置,我们从配置中心,改掉某一个配置,同样的服务实时更新配置
  • 网关)所有前端的请求先通过网关,进行统一的鉴权、过滤、路由等等,通过网关抵达其它服务,来做一些预先的工作
    - 注册中心配置中心网关在初代产品中分别对应这几个组件。
服务的注册发现使用Eureka,配置中心使用Spring Cloud Config,网关使用Netflix组件里的Zuul,短路保护Hystrix
1、SpringCloud Alibaba简介
1)、简介 Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。
依托Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。
https://github.com/alibaba/spring-cloud-alibaba
2)、为什么使用 zero|SpringCloud Alibaba&nacos&OpenFeign简介
文章图片

Spring Cloud 的组件也不是自己写的,是他整合外部的
SpringCloud的几大痛点
  • SpringCloud部分组件停止维护和更新,给开发带来不便;
  • SpringCloud,部分环境搭建复杂,没有完善的可视化界面,我们需要大量的二次开发和定制
  • SpringCloud配置复杂,难以上手,部分配置差别难以区分和合理应用
SpringCloud Alibaba的优势:
  • 阿里使用过的组件经历了考验,性能强悍,设计合理,现在开源出来大家用成套的产品搭配完善的可视化界面(配置中心、注册中心、服务熔断)给开发运维带来极大的便利
  • 搭建简单,学习曲线低。
结合SpringCloud Alibaba我们最终的技术搭配方案:
  • 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,即分布式事务解决方案
3)、版本选择
由于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的子模块就拥有了服务注册发现功能
zero|SpringCloud Alibaba&nacos&OpenFeign简介
文章图片

zero|SpringCloud Alibaba&nacos&OpenFeign简介
文章图片

zero|SpringCloud Alibaba&nacos&OpenFeign简介
文章图片

com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery

zero|SpringCloud Alibaba&nacos&OpenFeign简介
文章图片

Nacos 是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现﹑配置管理和服务管理平台。他是使用java编写。需要依赖java环境
Nacos,文档地址: https://nacos.io/zh-cn/docs/quick-start.html
1)、下载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简介
文章图片

【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。
zero|SpringCloud Alibaba&nacos&OpenFeign简介
文章图片

3.OpenFeign远程调用
zero|SpringCloud Alibaba&nacos&OpenFeign简介
文章图片

zero|SpringCloud Alibaba&nacos&OpenFeign简介
文章图片

使用:假如会员服务要调用优惠卷服务,只需要在会员服务中引入OpenFeign,那么它就具有远程调用的能力
用一个包feign专门来放远程调用的请求接口
HTTP客户端:给远程发送HTTP请求
zero|SpringCloud Alibaba&nacos&OpenFeign简介
文章图片

例子:会员(member)和优惠卷(coupon)已经注册到Nacos中,会员(member)想从优惠卷(coupon)中获取当前会员的所有优惠卷,会员服务先从注册中心中查找优惠卷服务都在哪些服务当中,注册中心返回优惠卷的机器,会员服务选择一台机器发送请求,要来响应数据。
会员服务从注册中心获取优惠卷服务的地址
zero|SpringCloud Alibaba&nacos&OpenFeign简介
文章图片

nacos测试:
测试member和coupon的远程调用
想要获取当前会员领取到的所有优惠券。先去注册中心找优惠券服务,注册中心调一台优惠券服务器给会员,会员服务器发送请求给这台优惠券服务器,然后对方响应。
  • 服务请求方发送了2次请求,先问nacos要地址,然后再请求

    推荐阅读