Config配置搜索路径
问题描述当配置文件一多,如果配置文件只放在根目录下,后期会不好管理,所以根据项目分类配置文件是很有必要的
配置过程在microservice-config-server-4001项目的application.yml文件中配置search-paths
完整application.yml如下:
123456789101112131415server: port: 4001 context-path: /spring: application: name: microservice-config cloud: config: server: git: uri: https://github.com/a6678696/microservice-config search-paths: #后面接文件夹名称,没有配置的文件夹里的配置文件是访问不到的 - aa #文件夹名称 - bb
测试新建三个文件夹:aa、bb、cc,文件夹中分别放3个配置文件 nns.yml,nns2. ...
Spring Cloud Config整合Eureka
上传配置文件到GitHub配置文件名为:eureka_config.yml,上传到GitHub的microservice-config库中,内容如下:
1234567891011121314151617181920212223242526272829303132spring: profiles: active: - dev #当前使用的是dev配置---server: port: 2004 context-path: /spring: profiles: deveureka: instance: hostname: localhost client: register-with-eureka: false #false 由于该应用为注册中心,所以设置为false,代表不向注册中心注册自己。 fetch-registry: false #false 由于注册中心的职责就是维护服务实例,它并不需要去检索服务,所以也设置为false service-url: defaultZone: http://$ ...
使用Config Client
上传文件到GitHub把之前上传到GitHub的microservice-config库中的文件都删除掉,再新建三个文件:application.yml、crm-dev.yml、crm-test.yml,然后上传到GitHub的microservice-config库中
application.yml内容为:
123456789101112spring: profiles: active: - dev---spring: profiles: devport: 111---spring: profiles: testport: 222
crm-dev.yml内容为:
1port: 7777
crm-test.yml
1port: 88888
使用步骤新建Module在idea中新建一个Module,为Maven项目,命名为:microservice-config-client-5001
加入依赖123456789101112<dependency> <groupId>org.springframework.cloud</gro ...
Spring Boot启动报错:Cannot determine embedded database driver class for database type NONE的解决办法
问题描述Spring Boot项目启动时报错:Cannot determine embedded database driver class for database type NONE
报错原因这是因为spring boot默认会加载org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration类,DataSourceAutoConfiguration类使用了@Configuration注解向spring注入了dataSource bean。因为工程中没有关于dataSource相关的配置信息,所以当spring创建dataSource bean因缺少相关的信息就会报错
解决办法解决办法有两种:一种是修改启动类注解,另一种是配置数据源
修改注解在启动类中修改注解@SpringBootApplication为:
1@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfigu ...
使用Config Server
GitHub新建仓库GitHub新建一个仓库,命名为:microservice-config
在本地新建一个文件夹,也命名为:microservice-config,在文件夹内新建三个文件:application.yml、application-v1.yml和application-v2.yml,主要用于访问
application.yml内容为:
1profile: hello
application-v1.yml内容为:
1profile: hello111
application-v2.yml内容为:
1profile: hello222
把文件夹内的所有文件都上传到刚刚新建的GitHub仓库中
使用步骤新建Module在idea中新建一个Module,为Maven项目,命名为:microservice-config-server-4001
引入依赖引入依赖config server依赖,我的完整pom.xml如下:
12345678910111213141516171819202122232425262728293031323334<?xml version=&qu ...
Git修改远程仓库地址
概述由于需要将代码上传到另一个仓库,所以需要修改一下远程仓库地址,修改的方法有三个:
直接使用一条命令修改,推荐使用
删除原来的远程库地址,再绑定
修改config文件
实现过程直接使用一条命令修改修改命令:
1git remote set-url origin url地址
先删除再绑定删除命令:
1git remote rm origin
绑定命令:
1git remote add origin url地址
修改config文件config文件的路径如下图所示,直接把里面的url地址改掉即可
PS.查看远程仓库地址命令:
1git remote -v
Zuul请求过滤配置
问题描述有时候系统的功能并不对外开放,所以在请求服务时可以过滤掉非法请求。Zuul通过ZuulFilter过滤器实现,每次经过Zuul服务网关,我们都对带来的token进行有效性验证,验证不通过就无法请求成功
配置过程定义过滤类命名为:AccessFilter.java,继承ZuulFilter
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172package com.ledao.filter;import com.netflix.zuul.ZuulFilter;import com.netflix.zuul.context.RequestContext;import com.netflix.zuul.exception.ZuulException;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import ...
Zuul路由映射规则配置
问题描述默认路由请求地址,很容易暴露接口细节,可以通过配置映射规则来提高服务的安全性
配置过程在application.yml中添加以下配置
1234zuul: routes: studentServer.serviceId: microservice-student #服务名称 studentServer.path: /studentServer/** #替代服务的路径
现在可以通过 http://zuul.ledao.com:3001/studentServer/student/list 访问了
但是也可以通过 http://zuul.ledao.com:3001/microservice-student/student/list 访问,这样是不安全的,如果要忽略microservice-student服务就添加配置:ignored-services: “microservice-student”,如果要忽略所有的服务名称则修改为:ignored-services: “*”,完整配置如下:
12345zuul: routes: studentServer.s ...
Zuul路由配置
简介
上图的API路由网关服务由Zuul实现,主要就是对外提供服务接口的时候,起到了请求的路由和过滤作用,也因此能够隐藏内部服务的接口细节,从来有利于保护系统的安全性
配置过程新建Module该Module为Maven项目,命名为:microservice-zuul-3001
引入依赖引入zuul路由网关依赖
12345<!-- zuul路由网关 --><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zuul</artifactId></dependency>
完整pom.xml
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566<?xml version=& ...
Feign和Hystrix整合后配置超时时间
Feign和Hystrix整合后,原来服务提供者的Hystrix超时时间配置没用了
把microservice-student-provider-hystrix-1004和microservice-student-provider-hystrix-1005的超时时间配置删除,添加到带Feign的服务消费项目的application.yml中(项目名为:microservice-student-consumer-feign-80)
1234567hystrix: command: default: execution: isolation: thread: timeoutInMilliseconds: 3000
虽然添加了超时时间配置,但是还是无效,无效原因为:feign 也有一个超时时间的设置,feign底层是ribbon的封装,所以直接配置ribbon,ribbon默认超时也是1秒。所以这里都是强制要求,ribbon的超时时间要大于hystrix的超时时间,否则 hystrix自定义的超时时间毫无意义
所以还得 ...