Конфигурация [Spring Cloud]: что должно быть написано в application.yml?

Spring Boot Spring Cloud

Статья содержит следующее.

  • Основная информация
  • конфигурация контейнера
  • Управление конфигурацией
  • 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 как общая конфигурация.