国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

springboot(2.1.0)+springcloud(Greenwich.M1)實(shí)現(xiàn)鏈路追蹤

Joonas / 3682人閱讀

摘要:主要問題由于新版本新版本實(shí)現(xiàn)鏈路追蹤的一些新特性,使得我在實(shí)現(xiàn)的過程上踩了不少坑。同樣一些場(chǎng)景下需要保存鏈路追蹤的數(shù)據(jù),以備后面觀察對(duì)比,所以同樣需要一個(gè)來存儲(chǔ)數(shù)據(jù)。方法一,通過修改基配置文件后啟動(dòng)。

主要問題

???? 由于springboot新版本(2.1.0)、springcloud新版本(Greenwich.M1)實(shí)現(xiàn)鏈路追蹤sleuth+zipkin的一些“新特性”,使得我在實(shí)現(xiàn)sleuth+zipkin的過程上踩了不少坑。

??在springboot1.X版本的時(shí)候,實(shí)現(xiàn)鏈路追蹤服務(wù)需要用戶自己實(shí)現(xiàn)client以及server,通常在server服務(wù)端需要引入各種各樣的包(spring-cloud-sleuth-stream,以及支持zipkin的一些相關(guān)依賴包等等);

?? 但在spring cloud新版本實(shí)現(xiàn)鏈路追蹤sleuth+zipkin的方式上已經(jīng)不再需要自己再去實(shí)現(xiàn)一個(gè)server服務(wù)端(集成sleuth+zipkin),而是由zinkin官方提供了一個(gè)現(xiàn)成的zipkin-server.jar,或者是一個(gè)docker鏡像,用戶可以下載并通過命令進(jìn)行啟動(dòng)它,用戶可以通一些配置來確定sleuth收集到信息后傳輸?shù)絲ipkin之間采用http,還是通過rabbit/kafka的方式。在新的版本下,用戶只需要關(guān)注slenth-client選用何種傳輸方式(http或mq(rabbit/kafka),如果選擇http,則在配置中指明base-url;如果選擇mq,則在配置指明相關(guān)消息中間件的相關(guān)信息host/port/username/password...),至于zipkin的信息storage問題,則由zipkin-server要負(fù)責(zé),可以通過zipkin-server.jar 配置一些具體的參數(shù)來啟動(dòng)。(下面會(huì)細(xì)講)

ps:這不是教程貼,這主要是解決一些問題的一些方法,不會(huì)有詳細(xì)的實(shí)現(xiàn)過程,但為了簡明我會(huì)貼上部分代碼。

背景

???? 最近開始實(shí)習(xí)了,老大讓我自學(xué)一下sc(spring cloud),學(xué)就學(xué)嘛,也不是難事。看完spring cloud的全家桶,老大說讓我重點(diǎn)了解一下它的鏈路追蹤服務(wù),后期會(huì)有這方面的任務(wù)安排給我做,所以呢我就重點(diǎn)關(guān)注這一方面,打算自己做個(gè)demo練練手,看了網(wǎng)上的教程,膨脹的我選擇了個(gè)最新的版本,結(jié)果發(fā)現(xiàn)就這么掉坑里了。。。

版本

按照慣例,先說下springboot跟spring cloud的版本
springboot:2.1.0
springcloud:Greenwich.M1
個(gè)人建議新手不要過分追求新版本,舊版本的還是夠用的,比springboot 2.6.0搭配sringcloud Finchley SR2還是挺穩(wěn)的,如果真的要探索新版本你會(huì)發(fā)現(xiàn)這里面的坑實(shí)在是踩不完,基本要花個(gè)一兩天才能讓自己從坑里跳出去,這樣頻繁踩坑會(huì)讓新手很容易放棄~~~
ps:不要問我為什么知道。。。

正題

閑話扯完了,可以進(jìn)入正題了
一共四個(gè)服務(wù)
eureka-server
zipkin-server:新版本的zipkin服務(wù)端,負(fù)責(zé)接受sleuth發(fā)送過來的數(shù)據(jù),完成處理、存儲(chǔ)、建立索引,并且提供了一個(gè)可視化的ui數(shù)據(jù)分析界面。
需要的同學(xué)話可以直接在github上下載https://github.com/openzipkin...

嗯就是這兩個(gè)家伙
下面兩個(gè)是兩個(gè)服務(wù)

??eureka-server服務(wù)注冊(cè)中心,這個(gè)實(shí)現(xiàn)我就不講了,網(wǎng)上搜一大把,各個(gè)版本實(shí)現(xiàn)基本都是一致的,并不存在版本更新跨度極大的情況。而且這里我把它是打包成一個(gè)jar包,在需要的時(shí)候直接用java -jar XXX.jar 直接啟動(dòng)

??至于product跟order(也即實(shí)際場(chǎng)景下各種種樣的服務(wù)A、B、C...)

order服務(wù)只有一個(gè)接口/test,去調(diào)用product的接口

??這里的productclient就是使用feignf去調(diào)用order的/product/list接口

product只有一個(gè)接口/product/list,查找所有商品的列表

??簡單的來說,這里的場(chǎng)景就是order服務(wù)--(去調(diào)用)-->product服務(wù)

??說完場(chǎng)景后,貼一下這兩個(gè)服務(wù)的相關(guān)配置信息(order跟producet的配置基本上是相同的)
application.yml

spring:
  application:
    #服務(wù)名
    name: product
  #由于業(yè)務(wù)邏輯需要操作數(shù)據(jù)庫,所以這里配置了mysql的一些信息
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    username: root
    password: 123456
    url: jdbc:mysql://127.0.0.1:3306/sc_sell?characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
  jpa:
    show-sql: true
  #重點(diǎn)
  zipkin:
    #base-url:當(dāng)你設(shè)置sleuth-cli收集信息后通過http傳輸?shù)絲inkin-server時(shí),需要在這里配置
    base-url: http://localhost:9411
    enabled: true
  sleuth:
    sampler:
      #收集追蹤信息的比率,如果是0.1則表示只記錄10%的追蹤數(shù)據(jù),如果要全部追蹤,設(shè)置為1(實(shí)際場(chǎng)景不推薦,因?yàn)闀?huì)造成不小的性能消耗)
      probability: 1
eureka:
  client:
    service-url:
    #注冊(cè)中心地址
      defaultZone: http://localhost:8999/eureka/
logging:
  level:
    #這個(gè)是設(shè)置feign的一個(gè)日志級(jí)別,key-val的形式設(shè)置
    org.springframework.cloud.openfeign: debug

??說完配置信息,就該講一下依賴了,很簡單,client實(shí)現(xiàn)鏈路追蹤只需要添加一個(gè)依賴spring-cloud-starter-zipkin。就是這個(gè)

        
            org.springframework.cloud
            spring-cloud-starter-zipkin
        

??其實(shí)這些都是基礎(chǔ)操作,是吧,那么來點(diǎn)進(jìn)階的。
從上面的例子上來看,其實(shí)還是有幾個(gè)問題需要考慮一下。

有點(diǎn)開發(fā)經(jīng)驗(yàn)的人都會(huì)發(fā)現(xiàn),首先它是基于http協(xié)議傳輸?shù)模琱ttp協(xié)議傳輸有個(gè)不好的地方就是,它是短連接,即需要頻繁通過三次握手建立鏈接,這在追蹤很多服務(wù)時(shí)會(huì)造成不小的性能消耗。

另外還有一個(gè)問題:對(duì)于直接傳輸?shù)姆绞剑袀€(gè)弊端就是一旦接收方意外斷開連接,那么在傳輸鏈路中的一些數(shù)據(jù)將會(huì)丟失,如果這些數(shù)據(jù)是關(guān)鍵數(shù)據(jù),那么后果將是非常嚴(yán)重的。同樣一些場(chǎng)景下需要保存鏈路追蹤的數(shù)據(jù),以備后面觀察對(duì)比,所以同樣需要一個(gè)db來存儲(chǔ)數(shù)據(jù)。

??所以對(duì)于以上的問題,還是需要去考慮,值得欣慰的是,zipkin在這兩個(gè)方面也作了很nice的解決方案,在實(shí)現(xiàn)過程中只需要稍作配置即可。

在sleuth-cli跟zipkin-server之間插入一個(gè)消息中間件rabbitmq/kafka,這里我舉例中只使用rabbitmq來實(shí)現(xiàn)

將鏈路追蹤的數(shù)據(jù)存儲(chǔ)到DB上,目前zipkin暫時(shí)只支持mysql/elasticsearch,這里我使用mysql

??如果你是剛開始學(xué)習(xí)sc,給你去實(shí)現(xiàn)的話,你肯定會(huì)開始打開瀏覽器開始搜索教程。
??結(jié)果你會(huì)發(fā)現(xiàn),大部分博客上都是以前版本的實(shí)現(xiàn)方式,一些較舊會(huì)讓你自己實(shí)現(xiàn)一個(gè)zipkin-server(我懷疑他們的版本是1.x),你會(huì)發(fā)現(xiàn)很郁悶,因?yàn)檫@跟你想象的不太一樣啊。
繼續(xù)找,終于在茫茫帖子中,找到了一篇是關(guān)于springboot2.0.X版本的實(shí)現(xiàn)鏈路追蹤的教程,這時(shí)候你會(huì)興奮,終于找到靠譜一點(diǎn)的啊,喜出望外有木有啊,但是,事情還沒完,它會(huì)讓你在客戶端依賴下面這個(gè)依賴包

        
            org.springframework.cloud
            spring-cloud-sleuth-zipkin-stream
        
         
            org.springframework.cloud
            spring-cloud-sleuth-stream
        

??結(jié)果你會(huì)發(fā)現(xiàn),你在依賴它的時(shí)候,其實(shí)是依賴不了,為什么?因?yàn)榘姹镜膯栴},什么?你跟我說你的pom文件沒報(bào)錯(cuò)啊,但是,你打開idea右邊的maven插件看一下

??這真的是一個(gè)巨坑,我一直不明白是怎么回事,直到有一次,我打開了這個(gè)頁面,花了我一天的時(shí)間去摸索是什么原因造成的集成rabbitmq失敗,真的是被安排得明明白白,最后我發(fā)現(xiàn),這條路行不通啊

??最后,豪無頭緒的我,繼續(xù)在網(wǎng)上查找一些springboot2.x版本的一些鏈路追蹤的教程,在搜索了一個(gè)下午,我突然想起,誒不對(duì),我應(yīng)該直接去官網(wǎng)看它的官方教程的啊。。。雖然都英文,大不了我用chrome自帶的翻譯工具翻譯一下咯。結(jié)果就立馬打開spring的官網(wǎng),選擇了最新的版本,進(jìn)去找了一下,還真的讓我找到,還特別簡單!!!
傳送門:https://cloud.spring.io/sprin...
??官方文檔是這么說的。

??意思大概是說:如果你想使用rabbitmq或kafka替換掉http,添加spring-rabbit或spring-kafka的依賴包,默認(rèn)目標(biāo)名是zipkin(隊(duì)列名),如果你使用kafka/mysql,你需要設(shè)置屬性:spring-zipkin-sender-type=kafka/mysql
??也就是說,只需要引入下面這兩個(gè)依賴包!!!

 
    org.springframework.cloud
    spring-cloud-starter-zipkin

 
    org.springframework.amqp
    spring-rabbit

再往下看,你會(huì)發(fā)現(xiàn)有一個(gè)提示

spring-cloud-sleuth-stream已經(jīng)被棄用,不再與這個(gè)版本新內(nèi)容。。。
所以現(xiàn)在再回過頭去看,你會(huì)知道為什么在上一個(gè)嘗試中引入spring-cloud-sleuth-stream會(huì)無效了。

再修改下application.yml的配置信息,只需要注釋掉base-url,修改zipkin.sender.type=rabiit,再配置一下rabbitmq的一些信息,就大功告成。

 zipkin:
#  內(nèi)存方式配置:可不配
#    base-url: http://localhost:9411/
    sender:
      type: rabbit
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest

??到這里,你就已經(jīng)把order/poduct的鏈路追蹤部分做好了。

??我們上面講了sleuth負(fù)責(zé)收集數(shù)據(jù) ,zipkin負(fù)責(zé)接收sleuth收集后發(fā)送過來的追蹤信息,處理、存儲(chǔ)、索引、提供ui,所以接下來,就是來實(shí)現(xiàn)zipkin-server的從rabbitmq隊(duì)列取出追蹤數(shù)據(jù),并存儲(chǔ)在mysql數(shù)據(jù)中這一功能了。

??對(duì)于zipkin-server如何去實(shí)現(xiàn),其實(shí)zinkin官網(wǎng)已經(jīng)給我們做了功能的集成,只需要在啟動(dòng)的時(shí)候,設(shè)置參數(shù)即可,下面就來講一下

??對(duì)于需要根據(jù)什么場(chǎng)景設(shè)置什么樣的參數(shù)的問題,我不會(huì)具體講解應(yīng)該怎么設(shè)置,因?yàn)槲乙仓皇莿偨佑|sc不久,一些場(chǎng)景我也不是很熟悉,但我會(huì)講怎么去找我們需要的一些參數(shù)。

方法一,通過修改基配置文件后啟動(dòng)。

??首先,我們用解壓工具解壓一下zipkin-server.jar這個(gè)壓縮包,解壓出來有三個(gè)文件夾,里面大部分都是.class文件。

??然后我們進(jìn)入BOOT-INFclasses目錄下,你會(huì)發(fā)現(xiàn)有兩個(gè).yml文件,沒錯(cuò)這就是yml的配置文件了

??其中zipkin-server.yml就是zinpkin-server主要的配置文件了,但你打開后會(huì)發(fā)現(xiàn),其實(shí)里面只有一行配置,spring.profiles.include: shared
,即引入shared.yml文件,所以這里我們主要看zinkin-serer-shared.yml文件。
打開zinkin-serer-shared.yml

zipkin:
  self-tracing:
    # Set to true to enable self-tracing.
    enabled: ${SELF_TRACING_ENABLED:false}
    # percentage to self-traces to retain
    sample-rate: ${SELF_TRACING_SAMPLE_RATE:1.0}
    # Timeout in seconds to flush self-tracing data to storage.
    message-timeout: ${SELF_TRACING_FLUSH_INTERVAL:1}
  collector:
    # percentage to traces to retain
    sample-rate: ${COLLECTOR_SAMPLE_RATE:1.0}
    http:
      # Set to false to disable creation of spans via HTTP collector API
      enabled: ${HTTP_COLLECTOR_ENABLED:true}
    kafka:
      # Kafka bootstrap broker list, comma-separated host:port values. Setting this activates the
      # Kafka 0.10+ collector.
      bootstrap-servers: ${KAFKA_BOOTSTRAP_SERVERS:}
      # Name of topic to poll for spans
      topic: ${KAFKA_TOPIC:zipkin}
      # Consumer group this process is consuming on behalf of.
      group-id: ${KAFKA_GROUP_ID:zipkin}
      # Count of consumer threads consuming the topic
      streams: ${KAFKA_STREAMS:1}
    rabbitmq:
      # RabbitMQ server address list (comma-separated list of host:port)
      addresses: ${RABBIT_ADDRESSES:}
      concurrency: ${RABBIT_CONCURRENCY:1}
      # TCP connection timeout in milliseconds
      connection-timeout: ${RABBIT_CONNECTION_TIMEOUT:60000}
      password: ${RABBIT_PASSWORD:guest}
      queue: ${RABBIT_QUEUE:zipkin}
      username: ${RABBIT_USER:guest}
      virtual-host: ${RABBIT_VIRTUAL_HOST:/}
      useSsl: ${RABBIT_USE_SSL:false}
      uri: ${RABBIT_URI:}
  query:
    enabled: ${QUERY_ENABLED:true}
    # 1 day in millis
    lookback: ${QUERY_LOOKBACK:86400000}
    # The Cache-Control max-age (seconds) for /api/v2/services and /api/v2/spans
    names-max-age: 300
    # CORS allowed-origins.
    allowed-origins: "*"

  storage:
    strict-trace-id: ${STRICT_TRACE_ID:true}
    search-enabled: ${SEARCH_ENABLED:true}
    type: ${STORAGE_TYPE:mem}
    mem:
      # Maximum number of spans to keep in memory.  When exceeded, oldest traces (and their spans) will be purged.
      # A safe estimate is 1K of memory per span (each span with 2 annotations + 1 binary annotation), plus
      # 100 MB for a safety buffer.  You"ll need to verify in your own environment.
      # Experimentally, it works with: max-spans of 500000 with JRE argument -Xmx600m.
      max-spans: 500000
    cassandra:
      # Comma separated list of host addresses part of Cassandra cluster. Ports default to 9042 but you can also specify a custom port with "host:port".
      contact-points: ${CASSANDRA_CONTACT_POINTS:localhost}
      # Name of the datacenter that will be considered "local" for latency load balancing. When unset, load-balancing is round-robin.
      local-dc: ${CASSANDRA_LOCAL_DC:}
      # Will throw an exception on startup if authentication fails.
      username: ${CASSANDRA_USERNAME:}
      password: ${CASSANDRA_PASSWORD:}
      keyspace: ${CASSANDRA_KEYSPACE:zipkin}
      # Max pooled connections per datacenter-local host.
      max-connections: ${CASSANDRA_MAX_CONNECTIONS:8}
      # Ensuring that schema exists, if enabled tries to execute script /zipkin-cassandra-core/resources/cassandra-schema-cql3.txt.
      ensure-schema: ${CASSANDRA_ENSURE_SCHEMA:true}
      # 7 days in seconds
      span-ttl: ${CASSANDRA_SPAN_TTL:604800}
      # 3 days in seconds
      index-ttl: ${CASSANDRA_INDEX_TTL:259200}
      # the maximum trace index metadata entries to cache
      index-cache-max: ${CASSANDRA_INDEX_CACHE_MAX:100000}
      # how long to cache index metadata about a trace. 1 minute in seconds
      index-cache-ttl: ${CASSANDRA_INDEX_CACHE_TTL:60}
      # how many more index rows to fetch than the user-supplied query limit
      index-fetch-multiplier: ${CASSANDRA_INDEX_FETCH_MULTIPLIER:3}
      # Using ssl for connection, rely on Keystore
      use-ssl: ${CASSANDRA_USE_SSL:false}
    cassandra3:
      # Comma separated list of host addresses part of Cassandra cluster. Ports default to 9042 but you can also specify a custom port with "host:port".
      contact-points: ${CASSANDRA_CONTACT_POINTS:localhost}
      # Name of the datacenter that will be considered "local" for latency load balancing. When unset, load-balancing is round-robin.
      local-dc: ${CASSANDRA_LOCAL_DC:}
      # Will throw an exception on startup if authentication fails.
      username: ${CASSANDRA_USERNAME:}
      password: ${CASSANDRA_PASSWORD:}
      keyspace: ${CASSANDRA_KEYSPACE:zipkin2}
      # Max pooled connections per datacenter-local host.
      max-connections: ${CASSANDRA_MAX_CONNECTIONS:8}
      # Ensuring that schema exists, if enabled tries to execute script /zipkin2-schema.cql
      ensure-schema: ${CASSANDRA_ENSURE_SCHEMA:true}
      # how many more index rows to fetch than the user-supplied query limit
      index-fetch-multiplier: ${CASSANDRA_INDEX_FETCH_MULTIPLIER:3}
      # Using ssl for connection, rely on Keystore
      use-ssl: ${CASSANDRA_USE_SSL:false}
    elasticsearch:
      # host is left unset intentionally, to defer the decision
      hosts: ${ES_HOSTS:}
      pipeline: ${ES_PIPELINE:}
      max-requests: ${ES_MAX_REQUESTS:64}
      timeout: ${ES_TIMEOUT:10000}
      index: ${ES_INDEX:zipkin}
      date-separator: ${ES_DATE_SEPARATOR:-}
      index-shards: ${ES_INDEX_SHARDS:5}
      index-replicas: ${ES_INDEX_REPLICAS:1}
      username: ${ES_USERNAME:}
      password: ${ES_PASSWORD:}
      http-logging: ${ES_HTTP_LOGGING:}
      legacy-reads-enabled: ${ES_LEGACY_READS_ENABLED:true}
    mysql:
      jdbc-url: ${MYSQL_JDBC_URL:}
      host: ${MYSQL_HOST:localhost}
      port: ${MYSQL_TCP_PORT:3306}
      username: ${MYSQL_USER:}
      password: ${MYSQL_PASS:}
      db: ${MYSQL_DB:zipkin}
      max-active: ${MYSQL_MAX_CONNECTIONS:10}
      use-ssl: ${MYSQL_USE_SSL:false}
  ui:
    enabled: ${QUERY_ENABLED:true}
    ## Values below here are mapped to ZipkinUiProperties, served as /config.json
    # Default limit for Find Traces
    query-limit: 10
    # The value here becomes a label in the top-right corner
    environment:
    # Default duration to look back when finding traces.
    # Affects the "Start time" element in the UI. 1 hour in millis
    default-lookback: 3600000
    # When false, disables the "find a trace" screen
    search-enabled: ${SEARCH_ENABLED:true}
    # Which sites this Zipkin UI covers. Regex syntax. (e.g. http://example.com/.*)
    # Multiple sites can be specified, e.g.
    # - .*example1.com
    # - .*example2.com
    # Default is "match all websites"
    instrumented: .*
    # URL placed into the  tag in the HTML
    base-path: /zipkin

server:
  port: ${QUERY_PORT:9411}
  use-forward-headers: true
  compression:
    enabled: true
    # compresses any response over min-response-size (default is 2KiB)
    # Includes dynamic json content and large static assets from zipkin-ui
    mime-types: application/json,application/javascript,text/css,image/svg

spring:
  jmx:
     # reduce startup time by excluding unexposed JMX service
     enabled: false
  mvc:
    favicon:
      # zipkin has its own favicon
      enabled: false
  autoconfigure:
    exclude:
      # otherwise we might initialize even when not needed (ex when storage type is cassandra)
      - org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
info:
  zipkin:
    version: "2.11.8"

logging:
  pattern:
    level: "%clr(%5p) %clr([%X{traceId}/%X{spanId}]){yellow}"
  level:
    # Silence Invalid method name: "__can__finagle__trace__v3__"
    com.facebook.swift.service.ThriftServiceProcessor: "OFF"
#     # investigate /api/v2/dependencies
#     zipkin2.internal.DependencyLinker: "DEBUG"
#     # log cassandra queries (DEBUG is without values)
#     com.datastax.driver.core.QueryLogger: "TRACE"
#     # log cassandra trace propagation
#     com.datastax.driver.core.Message: "TRACE"
#     # log reason behind http collector dropped messages
#     zipkin2.server.ZipkinHttpCollector: "DEBUG"
#     zipkin2.collector.kafka.KafkaCollector: "DEBUG"
#     zipkin2.collector.kafka08.KafkaCollector: "DEBUG"
#     zipkin2.collector.rabbitmq.RabbitMQCollector: "DEBUG"
#     zipkin2.collector.scribe.ScribeCollector: "DEBUG"

management:
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      show-details: always
# Disabling auto time http requests since it is added in Undertow HttpHandler in Zipkin autoconfigure
# Prometheus module. In Zipkin we use different naming for the http requests duration
  metrics:
    web:
      server:
        auto-time-requests: false

??這其實(shí)就是配置文件,對(duì)于需要使用的組件,其實(shí)就是只修改對(duì)應(yīng)的配置,比如我需要使用storage,讓它把追蹤數(shù)據(jù)保存到mysql中,那么我只需要修改對(duì)應(yīng)的配置信息:

  storage:
    #其實(shí)部分不需要修改,省略掉
    mysql:
      jdbc-url: jdbc:sqlserver://localhost?XXX=xxx;
      host: localhost
      port: 3306
      username: root
      password: 123456
      db: zipkin
      #最大連接數(shù)
      max-active: ${MYSQL_MAX_CONNECTIONS:10}
      #是否使用ssl
      use-ssl: ${MYSQL_USE_SSL:false}

修改完配置,我們重新壓縮成一個(gè)jar包,直接啟動(dòng)即可。

方法二,通過使用環(huán)境變量的方式來啟動(dòng)zipkin-server.jar服務(wù)。

直接使用java -jar zipkin-server.jar --zipkin.storage.mysql.username=root --zipkin.storage.mysql.password=123456 --zipkin.storage.mysql.host=localhost --zipkin.storage.mysql.port=3306 ...
??后面接上的即是它的環(huán)境變量,至于環(huán)境變量有哪些,請(qǐng)看方法一的yml文件,都是一一對(duì)應(yīng)的。這種方法好片就是不需要修改jar包,但就是需要后面接上一串較長的環(huán)境變量聲明。

??好了,基本上就已經(jīng)結(jié)束了。其實(shí)配置都是同樣的原理。能夠舉一反三自然其它相關(guān)配置都不是什么問題。

總結(jié)

??更新過程中因?yàn)楸容^忙中間還沒寫完就發(fā)表了,導(dǎo)致內(nèi)容欠缺,今天終于利用周末的時(shí)間補(bǔ)上了,萬幸。
??第一篇文章,主要記錄自己的踩坑經(jīng)歷,非專業(yè)的寫教程,大都是一些隨心的記錄,如果有什么看不懂的,歡迎留下你的問題,同樣,如果哪些地方寫得有誤,望您不吝賜教,幫我指出一些錯(cuò)誤,謝謝。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/72205.html

相關(guān)文章

  • 適合新手的spring cloud入門教程

    摘要:就和是應(yīng)用的腳手架一樣,是分布式和集群應(yīng)用的腳手架。是由一個(gè)一個(gè)的微服務(wù)組成,而這些微服務(wù)都是在注冊(cè)中心管理起來的。為了降低維護(hù)成本,我們引入了分布式配置服務(wù)的概念。 就和 springboot 是 web 應(yīng)用的腳手架一樣, springcloud 是分布式和集群應(yīng)用的腳手架。 但是并不是所有的同學(xué)都有接觸過分布式和集群,所以為了讓學(xué)習(xí)曲線變得緩和,站長按照如下順序展開 spring...

    Pandaaa 評(píng)論0 收藏0
  • 架構(gòu)~微服務(wù) - 收藏集 - 掘金

    摘要:它就是史上最簡單的教程第三篇服務(wù)消費(fèi)者后端掘金上一篇文章,講述了通過去消費(fèi)服務(wù),這篇文章主要講述通過去消費(fèi)服務(wù)。概覽和架構(gòu)設(shè)計(jì)掘金技術(shù)征文后端掘金是基于的一整套實(shí)現(xiàn)微服務(wù)的框架。 Spring Boot 配置文件 – 在坑中實(shí)踐 - 后端 - 掘金作者:泥瓦匠鏈接:Spring Boot 配置文件 – 在坑中實(shí)踐版權(quán)歸作者所有,轉(zhuǎn)載請(qǐng)注明出處本文提綱一、自動(dòng)配置二、自定義屬性三、ran...

    church 評(píng)論0 收藏0
  • 基于SpringCloud FinchleySR1 SpringBoot 2x vue elemen

    摘要:介紹是基于微服務(wù)基礎(chǔ)腳手架對(duì)于日常開發(fā)而言提供基礎(chǔ)權(quán)限控制,動(dòng)態(tài)菜單,才用前后端分離架構(gòu),前臺(tái)采用后臺(tái)使用提供接口。對(duì)于以后開發(fā),只需要在添加業(yè)務(wù)模塊即可,大大減少工作量。 介紹 panda是基于SpringCloud Finchley.SR1 、SpringBoot 2.x、 vue、element-ui 微服務(wù)基礎(chǔ)腳手架對(duì)于日常開發(fā)而言提供基礎(chǔ)權(quán)限控制,動(dòng)態(tài)菜單,才用前后端分離架構(gòu)...

    lansheng228 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<