网站首页 > 资源文章 正文
基本信息
基本信息用来展示项目的版本、开发者等。可用来开发统一的管理后台对项目进行控制。
info:
businessSide: 研发部
serviceName: ${artifactId}
version: @version@
jdk-version: @java.version@
spring-boot.version: @spring-boot.version@
spring-cloud.version: @spring-cloud.version@
author: 小姐姐
一般,通过访问 /info,即可得到解释后的JSON。
Tomcat配置
用来打印Server的Access日志和运行日志,同时比较重要的还有contextPath。良好的日志格式是必要的,用来进行后续的分析和统计。
注意某些版本的basedir改成了file:.语法,直接写.会报错的。
server:
port: 8888
context-path: /
tomcat:
basedir: .
accesslog:
enabled: true
directory: /export/logs/example/
pattern: "%{X-Forwarded-For}i %a %{X-B3-TraceId}i %t %m %U %s %b %D"
rename-on-rotate: true
suffix: .log
prefix: access
rotate: true
buffered: false
file-date-format: yyyy-MM-dd
uri-encoding: UTF-8
Undertow、Jetty的配置类似。
管理
线上要将 security开启。另外 contextPath改成统一的更佳,我觉得/ops比较好,你也可以用。
management:
security:
enabled: false
context-path: /ops
通过管理能够拿到哪些信息呢?我这里总结了一下,像Spring-admin这样的组件都是从中拿数据,你也可以轻易做一个后台哦。
路径 | 内容 |
/ops/jolokia/list jolokia | 暴露的接口 |
/ops/info | 输出项目基本信息 |
ops/health | 输出健康信息 |
/ops/autoconfig | 输出自动配置的信息 |
/ops/configprops | 敏感信息,所以一定要关闭外网的访问 |
/ops/beans Spring | 中都有哪些Bean,仅用于调试 |
/ops/dump | JVM dump信息,比如线程汇总等 |
/ops/env | 启动环境 |
/ops/mappings | 所有URL映射 |
/ops/metrics | 监控数据,报表使用 |
/ops/trace | 最近的访问trace |
很多高危接口,开车注意安全。
Endpoint
endpoints:
shutdown:
enabled: false
sensitive: false
jolokia:
enabled: true
我们的jolokia就是在这里开放的,很简单的是不是?
shutdown接口非常有用,可以做一些类似隔离的功能。但我们更佳倾向于控制注册中心去干这些事,所以禁用。如果你开启了,注意不要暴露在外网。
Swagger
Swagger作为可视化的测试工具,也是项目沟通的桥梁,同时能作为文档使用,项目中都应该配备。
swagger:
title: ${artifactId}
version: @version@
contact:
name: 小姐姐
email: xjj@sayhiai.com
base-package: com.sayhiai.controller
base-path: /**
exclude-path: /error, /ops/**
Eureka配置
服务可能作为提供者,也可能作为调用者。所以client和instance都应该配备。其中,参数是调了优的,你需要了解其中的含义。建议参考本公众号《SpringCloud服务的平滑上下线功能》。
eureka:
client:
register-with-eureka: true
fetch-registry: false
#eureka client获取服务注册状态
registry-fetch-interval-seconds: 5
healthcheck:
enabled: true
instance:
prefer-ip-address: true
instance-id: ${spring.cloud.client.ipAddress}:${server.port}
metadata-map:
management.context-path: ${server.context-path}
statusPageUrlPath: ${server.context-path}ops/info
health-check-url-path: ${server.context-path}ops/health
lease-expiration-duration-in-seconds: 15
lease-renewal-interval-in-seconds: 5
Feign和Ribbon
Feign和Ribbon作为底层,负责服务间通信。Ribbon的许多参数是公用的。为了支持平滑上下线功能,合理的超时配置也是必须的。
feign:
hystrix:
enabled: trueribbon:
ReadTimeout: 8000
ConnectTimeout: 1000
OkToRetryOnAllOperations: true
MaxAutoRetriesNextServer: 2
MaxAutoRetries: 0
ServerListRefreshInterval: 3000
retryableStatusCodes: 404,500
调用链
调用链应该是分布式系统的必备功能了,否则会陷入问题的泥潭里不能自拔。我比较喜欢jaeger,zipkin的集成也是类似的,opentracing都有通用的解决方案。
opentracing.jaeger.log-spans: trueopentracing.jaeger.udp-sender.host: localhost
opentracing.jaeger.udp-sender.port: 5775
通用配置
两个比较重要的点提一下:
- aop一定要开启proxyTargetClass,很多功能要用,比如各种starter。
- jmx一定开启,开启后就可以使用jolokia等工具将jmx转成http,进而能够使用telegraf等进行数据收集做监控图。
spring:
application:
name: ${artifactId}
http:
encoding:
charset: UTF-8
force: true
enabled: true
profiles:
active: @profileActive@
aop:
proxyTargetClass: true
auto: true
jmx:
enabled: true
数据库配置
一般Druid数据库连接池已经成为标配了。此数据库连接池配置项有点多,酌情开启。
spring:
datasource: type: com.alibaba.druid.pool.DruidDataSource
druid:
initial-size: 5
min-idle: 5
max-active: 200
max-wait: 10000
#test-while-idle: true
#validation-query: SELECT 1 FROM DUAL
test-on-borrow: false
test-on-return: false
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
time-between-eviction-runs-millis: 15000
default-auto-commit: true
# 配置一个连接在池中最小生存的时间,单位是毫秒
min-evictable-idle-time-millis: 30000
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
#filters: stat,wall,slf4j
#有多个数据源时,配置公用监控数据
use-global-data-source-stat: true
filter:
stat:
enabled: false
db-type: mysql
log-slow-sql: true
slow-sql-millis: 2
slf4j:
data-source-log-enabled: true
data-source-logger-name: DRUID
statement-executable-sql-log-enable: true
statement-logger-name: DRUID
MyBatis
什么?还在用ORM,那就MyBatis吧。或者,那么多选择,干么非要用SQL呢?
mybatis:
mapper-locations: classpath*:sqlmap/*Mapper.xml type-aliases-package: ${package}.entity
configuration: # 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。
lazy-loading-enabled: false
# 使全局的映射器启用或禁用缓存
cache-enabled: true
# 当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否则,每种属性将会按需要加载。
aggressive-lazy-loading: false
# 是否允许单条sql 返回多个数据集 (取决于驱动的兼容性) default:true
multiple-result-sets-enabled: true
# 是否可以使用列的别名 (取决于驱动的兼容性) default:true
use-column-label: true
# 允许JDBC 生成主键。需要驱动器支持。如果设为了true,这个设置将强制使用被生成的主键,有一些驱动器不兼容不过仍然可以执行。 default:false
use-generated-keys: false
# 指定 MyBatis 如何自动映射 数据基表的列 NONE:不隐射 PARTIAL:部分 FULL:全部
auto-mapping-behavior: partial # 这是默认的执行类型 (SIMPLE: 简单; REUSE: 执行器可能重复使用prepared statements语句;BATCH: 执行器可以重复执行语句和批量更新)
default-executor-type: simple # 使用驼峰命名法转换字段。
map-underscore-to-camel-case: true
# 设置本地缓存范围 session:就会有数据的共享 statement:语句范围 (这样就不会有数据的共享 ) defalut:session
local-cache-scope: session # 设置但JDBC类型为空时,某些驱动程序 要指定值,default:OTHER,插入空值时不需要指定类型
jdbc-type-for-null: 'null'
最后,配上一张简图,当系统成长,通用的模块,都可以作为通用配置放在application.yml里。
猜你喜欢
- 2025-01-08 使用RKE的方式快速部署K8S集群
- 2025-01-08 Immer.js是什么?前端 immutable 如此简单!
- 2025-01-08 SpringBoot 2.3 整合最新版 ShardingJdbc + Druid + MyBatis
- 2025-01-08 Linux 系统安装 Nginx
- 2025-01-08 关于Linux中控制群组cgroup(资源管理)的一些笔记
- 2025-01-08 HTTP协议之代理服务器,经典之作,请转载收藏
- 2025-01-08 基于 Nginx + ModSecurity V3 实现对 web 流量的安全访问控制
- 2025-01-08 msf提权漏洞利用最全总结
- 2025-01-08 c的包管理和构建工具xmake
- 2025-01-08 Revit模型导出时,那些会被弄丢的信息
你 发表评论:
欢迎- 05-1430个在线地图瓦片URL分享
- 05-1425个在线地图瓦片URL分享
- 05-14PixelStyle for Mac(mac照片编辑器)
- 05-14一篇文章带你了解CSS3 3D 转换知识
- 05-14我们的世界是假的?马斯克:我们生活在高文明模拟的矩阵游戏中
- 05-14【视觉AI的基石】斯坦福大学笔记!带你吃透卷积神经网络 (CNN)
- 05-14潮流 | 通过AAPE的新价目,无虑入荷未来主义服饰
- 05-14身份证查询服务API:准确识别身份证信息
- 最近发表
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)