一、SpringCloud的几大痛点:
SpringCloud部分组件停止维护和更新,给开发带来不便;
SpringCloud部分环境搭建复杂,没有完善的可视化界面,我们需要大量的二次开发和定制
SpringCloud配置复杂,难以上手,部分配置差别难以区分和合理应用
SpringCloud Alibaba的优势:
阿里使用过的组件经历了考验,性能强悍,设计合理,现在开源出来大家用,成套的产品搭配完善的可视化界面给开发运维带来极大的便利,搭建简单,学习曲线低。
结合SpringCloud Alibaba我们最终的技术搭配方案:
SpringCloud Alibaba - Nacos:注册中心(服务发现/注册)
SpringCloud Alibaba - Nacos:配置中心(动态配置管理)
SpringCloud- Ribbon:负载均衡
SpringCloud- Feign:声明式hTTP客户端(调用远程服务)
SpringCloud Alibaba- Sentinel:服务容错(限流、降级、熔断)
SpringCloud- Gateway: API 网关(webflux 编程模式)
SpringCloud- Sleuth:调用链监控
SpringCloud Alibaba-Seata:原Fescar, 即分布式事务解决方案。
二、如何使用nacos注册中心:
官方文档:https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md
引入依赖:
<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>
注册中心:
<!-- 服务注册/发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
- 首先,修改 pom.xml 文件,引入 Nacos Config Starter。放在common中
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
- 在配置文件中配置,往下看
先把Nacos Server 启动 并添加配置
下载nacos server 1.1.3
注意!启动这里有坑,如果启动startup闪退的话,检查jdk环境变量是否配置好,然后检查用户变量里是否有JAVA_HOME
访问:127.0.0.1:8848/nacos
登录账号密码默认:nacos
接上边:在服务中心启动类上添加注解 @EnableDiscoveryClient
配置文件:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
application:
name: xuanyuan-member
然后在服务列表就可以看到了:
三、如何使用OpenFeign测试 服务之间的远程调用:
Feign声明式远程调用
1、简介
Feign是一个声明式的HTTP客户端,它的目的就是让远程调用更加简单。Feign提供了HTTP请求的模板,通过编写简单的接口和插入注解,就可以定义好HTTP请求的参数、格式、地址等信息。
Feign整合了Ribbon (负载均衡)和Hystrix(服务熔断),可以让我们不再需要显式地使用这两个组件。
SpringCloudFeign在NetflixFeign的基础上扩展了对SpringMVC注解的支持,在其实现下,我们只需创建一一个接口并用注解的方式来配置它,即可完成对服务提供方的接口绑定。简化了SpringCloudRibbon自行封装服务调用客户端的开发量。