#指定端口號 server.port=1111 #是否優先使用IP地址做爲主機名的標識 默認爲false eureka.instance.preferIpAddress=true #是否註冊到eureka eureka.client.register-with-eureka=false #是否從eureka獲取註冊信息 eureka.client.fetch-registry=false #eureka服務器的地址(注意:地址最後面的 /eureka/ 這個是固定值) eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/
#application-peer1.properties spring.application.name=eureka-server server.port=1111 eureka.instance.hostname=peer1 eureka.client.serviceUrl.defaultZone=http://peer2:1112/eureka/ #application-peer2.properties spring.application.name=eureka-server server.port=1112 eureka.instance.hostname=peer2 eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/
eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/,http://peer2:1112/eureka/
spring.application.name=hello-service
eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/ server.port=8082[8081]
@Bean @LoadBalanced RestTemplate restTemplate() { return RestTemplateMgr.getInstance().init().getTemplate(); }
#發送心跳個server的頻率 默認30秒 eureka.instance.lease-renewal-interval-in-seconds=30 #兩個心跳之間的時間間隔 超過則將服務摘除。 默認90秒 eureka.instance.lease-expiration-duration-in-seconds=90
# 單機調試的時候 能夠關閉保護機制 eureka.server.enable-self-preservation=false
#程序啓動的地方 @EnableCircuitBreaker #具體須要斷路器的服務方法上 @HystrixCommand(fallbackMethod = "helloFallback", commandKey = "helloKey") #斷路器被觸發熔斷的回調方法 public String helloFallback() {}
#在pom.xml引入spring-cloud-starter-zuul #在application.properties配置 spring.application.name=api-gateway server.port=5555 #在啓動類使用@EnableZuulProxy
zuul.routes.api-a-url.path=/api-a-url/** zuul.routes.api-a-url.url=http://localhost:8001/
zuul.routes.api-a.path=/api-a/** zuul.routes.api-a.serviceId=hello-service zuul.routes.api-b.path=/api-b/** zuul.routes.api-b.serviceId=hello-service zuul.routes.api-c.path=/ddd/** zuul.routes.api-c.serviceId=hello-service eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
zuul.routes.api-d.path=/ddd/** zuul.routes.api-d.serviceId=hello ribbon.eureka.enabled=false hello.ribbon.listOfServers=http://localhost:8001/,http://localhost:8002/
#經過設置全局參數爲空來覆蓋默認值 zuul.senstitiveHeaders= #經過制定路由的參數來配置 有以下兩種配置 zuul.routes.<router>.customSensitiveHeaders=true zuul.routes.<router>.senstiveHeaders=
zuul.addHostHeader=true
SpringCloud 的 Brixton會有重定向問題 Camden Dalston 則沒有javascript
#
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-sleuth</artifactId> </dependency>
trace-1:應用名稱 即application.properties中的spring.application.name的值 7cbdce82c9447510:springCloud Sleuth生成的一個ID 稱爲TraceID 用來標識一條請求鏈路 7667724d864b3ec:springCloud Sleuth生成的另一個ID 稱爲SpanID 表示一個基本的工做單元 好比發送一個HTTP請求。 false:表明該信息是否要被後續的跟蹤信息收集器獲取和存儲。 一條請求鏈路中 只能包含一個TraceID 能夠有多SpanID
1.服務框架爲每一個請求建立惟一的跟蹤標識。 通常是在httpHeader裏標識 2.統計各個處理單元的時間耗時。 下一個單元開始 上一個單元結束。 3.源碼跟蹤:org.springframework.cloud.sleuth.Span public static final String SAMPLED_NAME = "X-B3-Sampled"; public static final String PROCESS_ID_NAME = "X-Process-Id"; public static final String PARENT_ID_NAME = "X-B3-ParentSpanId"; public static final String TRACE_ID_NAME = "X-B3-TraceId"; public static final String SPAN_NAME_NAME = "X-Span-Name"; public static final String SPAN_ID_NAME = "X-B3-SpanId"; public static final String SPAN_EXPORT_NAME = "X-Span-Export";
1. 經過Sampler接口實現 默認使用PercentageBasedSampler @Bean public AlwaysSampler defaultSampler() { return new AlwaysSampler(); } 2. 經過配置文件配置 spring.sleuth.sampler.percentage=0.1 #表明獲取10%的樣例 1表明100%
1. Collector:收集器組件,主要處理從外部系統發送過來的信息,將這些信息轉換成Zipkin內部處理的Span格式,以支持後續的存儲、分析、展現等功能。 2. Storage:存儲組件,主要處理收集器收到的信息,默認會將這些信息存儲在內存中。能夠修改存儲的策略,經過使用其餘存儲組件,將跟蹤信息存儲到數據庫中。 3. Restful API:API組件,童工外部訪問接口。 4. WEB UI:UI組件,基於API組件實現的上層應用。方便用戶查詢、分析跟蹤信息。
1. 搭建ZipKinServer 服務
<dependencies> <dependency> <groupId>io.zipkin.java</groupId> <artifactId>zipkin-server</artifactId> </dependency> <dependency> <groupId>io.zipkin.java</groupId> <artifactId>zipkin-autoconfigure-ui</artifactId> </dependency> </dependencies> 2. 爲應用引入和配置ZipKin服務 spring.zipkin.base-url=http://localhost:9411
1. 爲具體應用添加pom依賴:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-sleuth-stream</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-stream-rabbit</artifactId> </dependency> 2. 配置rabbitmq服務: spring.rabbitmq.host=localhost spring.rabbitmq.port=5672 spring.rabbitmq.username=springcloud spring.rabbitmq.password=123456 3. 修改zipkin-server的pom依賴: <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-sleuth-zipkin-stream</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-stream-rabbit</artifactId> </dependency> <dependency> <groupId>io.zipkin.java</groupId> <artifactId>zipkin-autoconfigure-ui</artifactId> </dependency>
Relational DB -> Databases -> Tables -> Rows -> Columns Elasticsearch -> Indices -> Types -> Documents -> Fields
Elasticsearch集羣能夠包含多個索引(indices)(數據庫) ,每個索引能夠包含多個類型(types)(表) ,每個類型包含多個文檔(documents)(行) ,而後每一個文檔包含多個字段(Fields)(列) 。css
org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchProperties
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.RELEASE</version> </parent> <!-- 添加 spring-data-elasticsearch的依賴 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> <dependency> <groupId>com.sun.jna</groupId> <artifactId>jna</artifactId> <version>3.0.9</version> </dependency>
spring.data.elasticsearch.repositories.enabled=true spring.data.elasticsearch.properties.path.logs=./elasticsearch/logs spring.data.elasticsearch.properties.path.data=./elasticsearch/data #獨立服務或者是es集羣的時候打開配置 cluster-name 必須與es配置的name一致 #spring.data.elasticsearch.cluster-name: #默認爲elasticsearch #spring.data.elasticsearch.cluster-nodes: IP:port #配置es節點信息,多個用逗號分隔
@Persistent @Inherited @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE}) public @interface Document { String indexName();//索引庫的名稱,通常用項目的名稱命名 String type() default "";////類型,通常用實體的名稱命名 boolean useServerConfiguration() default false; short shards() default 5;//默認分區數 short replicas() default 1;//每一個分區默認的備份數 String refreshInterval() default "1s";//刷新間隔 String indexStoreType() default "fs";//索引文件存儲類型 boolean createIndex() default true; }
@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) @Documented @Inherited public @interface Field { FieldType type() default FieldType.Auto;//自動檢測屬性的類型 FieldIndex index() default FieldIndex.analyzed;//默認狀況下分詞 DateFormat format() default DateFormat.none; String pattern() default ""; boolean store() default false;//默認狀況下不存儲原文 String searchAnalyzer() default "";//指定字段搜索時使用的分詞器 String analyzer() default "";//指定字段創建索引時指定的分詞器 String[] ignoreFields() default {};//指定須要忽略的字段 boolean includeInParent() default false; }