Статья содержит следующее.
- Основная информация
- конфигурация контейнера
- Управление конфигурацией
- Endpoint
- Конфигурация чванства
- Эврика конфигурация
- Фейк и лента
- цепочка вызовов
- Общая конфигурация
- Конфигурация пула соединений
- Конфигурация Mybatis
Основная информация
Основная информация используется для отображения версии, разработчика и т. д. проекта. Может использоваться для разработки единого фона управления для контроля над проектом.
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
Он используется для печати журнала доступа и журнала операций сервера, и, что более важно, есть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
конфигурация аналогична.
управлять
Включите безопасность в Интернете. Кроме того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 | Какие там бины, только для отладки |
/ops/dump | Информация о дампе JVM, например сводка потоков и т. д. |
/ops/env | среда запуска |
/ops/mappings | Все сопоставления URL |
/ops/metrics | Данные мониторинга, использование отчетов |
/ops/trace | недавняя трассировка доступа |
Есть много интерфейсов повышенного риска, поэтому уделяйте внимание безопасности во время вождения.
Конечная точка (как описать, 囧)
endpoints:
shutdown:
enabled: false
sensitive: false
jolokia:
enabled: true
Вот где открывается наша джолокия, не правда ли просто?
Интерфейс выключения очень полезен, чтобы сделать что-то вроде隔离
функция. Но мы предпочитаем контролировать реестр, чтобы делать эти вещи, поэтому отключите его. Если вы включите его, будьте осторожны, чтобы не выставить его в Интернет.
Swagger
Как инструмент визуального тестирования, Swagger также является мостом для проектной коммуникации, в то же время он может использоваться как документ и должен быть оборудован в проекте.
swagger:
title: ${artifactId}
version: @version@
contact:
name: 小姐姐
email: xjj@sayhiai.com
base-package: com.sayhiai.controller
base-path: /**
exclude-path: /error, /ops/**
Эврика конфигурация
Служба может действовать как поставщик или как вызывающая сторона. такclient
а такжеinstance
должны быть оборудованы. Среди них параметры настраиваются, нужно понимать смысл. Рекомендуется ссылаться на эту официальную учетную запись «Плавная онлайн-функция и онлайн-функция Spring Cloud Services».
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:
hystrix:
enabled: true
ribbon:
ReadTimeout: 8000
ConnectTimeout: 1000
OkToRetryOnAllOperations: true
MaxAutoRetriesNextServer: 2
MaxAutoRetries: 0
ServerListRefreshInterval: 3000
retryableStatusCodes: 404,500
# Цепочка вызовов
Цепочка вызовов должна быть важнейшей функцией распределенной системы, иначе она увязнет в трясине проблем и не сможет выбраться. я предпочитаюjaeger
,zipkin
Интеграция похожа,opentracing
Есть общие решения.
opentracing.jaeger.log-spans: true
opentracing.jaeger.udp-sender.host: localhost
opentracing.jaeger.udp-sender.port: 5775
Общая конфигурация
Еще два важных момента, о которых стоит упомянуть:
- аоп должен быть включен
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 как общая конфигурация.