远程调用的步骤:OpenFeign (1):引入open-feign依赖 (2):编写接口,告诉springcloud这个接口需要调用原创服务:feign.xxFeignService,在类上添加@FeignClient注解 ①:声明接口的每一个方法都是调用哪个远程服务的哪个请求 (3):开启远程调用功能:在application中添加@EnalbeFeignClient注解 通过basePackgage属性包扫描定义Feign的包 OpenFeign调用报错,找不到服务。。。。因为nacos2021后不自动引入ribbon的整合,所以需要自己手动引入spring-cloud-loadbalancer依赖
* nacos配置中心的用法 * (1)引入依赖spring-cloud-starter-alibaba-nacos-config * (2)创建bootstrap.yaml文件配置项目名以及nacos地址 * ①:spring.application.name=xx * ②:spring.cloud.nacos.server-addr:localhost:8848 * (3)到nacos可视化页面-配置管理-配置列表中创建Dataid:xx 可以添加配置 * (4)动态修改配置:在controller上加@RefreshScope注解,可以不重启直接修改配置中心动态修改获取的数据
问题:
原因是springcloud 2020后取消了bootstrap所以需要手动引入bootstrap依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> <version>3.0.3</version> </dependency>
我的springcloud版本
<groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2021.0.4.0</version>
微服务加载多个配置集可以放在配置中心中。springboot的yml中的配置都可以放在配置中心中,配置中心有的优先使用配置中心的,然后再bootstrap.yaml中通过spring.cloud.nacos.config.namespace先指定命名空间,然后通过spring.cloud.nacos.config.extension-configs配置多个配置文件
问题:将云服务器上的数据库配置到配置中心后遇到了Public Key Retrieval is not allowed的错误。这个可以通过设置数据库的配置allowPublicKeyRetrieval=true来解决。
原因官方文档说是
如果用户帐户使用sha256_password身份验证,则在传输过程中必须保护密码;TLS是首选机制,但如果它不可用,则将使用RSA公钥加密。若要指定服务器的RSA公钥,请使用ServerRSAPublicKeyFile连接字符串设置,或将AllowPublicKeyRetrieval设置为True,以允许客户端自动从服务器请求公钥。请注意,AllowPublicKeyRetrieval=True可能允许恶意代理执行MITM攻击以获取明文密码,因此默认情况下为False,必须显式启用。
网关的使用:通过断言将满足条件的请求路由给服务器
使用方法:
(1)导入gateway依赖,将网关配置到配置中心
(2)配置路由规则
(3)在启动类添加注解@EnableDiscoveryClient
问题:导入mybatis依赖会让服务去找数据源导致报错,需要将以来去除或者通过@SpringbootApplication(exclude={DataSourceAutoConfiguration.class})配置