记录Spring Cloud使用中的问题及疑惑
1.RestControllerEndpoint 是REST风格的Controller,使用了actuator之后,默认加到/actuator/之后。 例如RestControllerEndpoint(id="gateway"),访问路径为/actuator/gateway. 只有management.endpoints.web.exposure.include:"*"中包含了此uri之后,才能建立映射。
2.spring gateway配置的相关属性 spring: cloud: gateway: routes: - id: uri: order: predicates: - name: args: filters: - name: args: - id: uri: order: predicates: - Path=/foo/{segment} - Method=GET - Query=foo, ba. - RemoteAddr=192.168.1.1/24 filters: - AddRequestHeader=X-Request-Foo, Bar - AddRequestParameter=foo, bar - AddResponseHeader=X-Response-Foo, Bar - Hystrix=myCommandName - RewritePath=/consumingserviceendpoint, /backingserviceendpoint - PrefixPath=/mypath - PreserveHostHeader - name: RequestRateLimiter args: redis-rate-limiter.replenishRate: 10 redis-rate-limiter.burstCapacity: 20 defaultFilters: streamingMediaTypes: globalcors: {
} httpclient: connectTimeout: 30000 responseTimeout: pool: type: ELASTIC name: proxy maxConnections: 10 acquireTimeout: 10000 proxy: host: port: username: password: nonProxyHostsPattern: ssl: useInsecureTrustManager: false trustedX509Certificates: discovery: locator: enabled: false routeIdPrefix: includeExpression: true urlExpression: lowerCaseServiceId: predicates: filters:
3.docker中安装mysql docker pull mysql
docker run --name first-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql --lower_case_table_names=1
上面指令的含义: run 运行一个容器 --name 后面是这个镜像的名称 -p 3306:3306 表示在这个容器中使用3306端口(第二个)映射到本机的端口号也为3306(第一个) -d 表示使用守护进程运行,即服务挂在后台 --lower_case_table_names 让MySQL忽略表的大小写,在Mac系统中默认是按照系统的大小写匹配的,会造成表名大小写不同时,找不到表。 下载客户端程序Sequel Pro http://www.sequelpro.com/ 配置客户端之后,提示访问不了。
docker exec -it first-mysql bash -t 让docker分配一个伪终端,并绑定到容器的标准输入上; -i 让容器的标准输入保持打开; first-mysql 是容器的名字。 打开之后,使用mysql的命令开启远程访问的授权; mysql -u root -p
use mysql; select host,user from user;
需要增加一个host为%的记录。
增加好之后,访问时提示 MySQL said: Authentication plugin 'caching_sha2_password' cannot be loaded:dlopen(/usr/local/lib/plugin/caching_sha2_password.so, 2): image not found
通过指令: ALTER USER 'username'@'ip_address' IDENTIFIED WITH mysql_native_password BY 'password';
例如: ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
执行之后,可以通过Sequel Pro访问到MySQL数据库。