SpringCloud學習04--服務消費Ribbon和Feign

SpringCloud學習04--服務消費Ribbon和Feign

Ribbon
Ribbon 是一個基于HTTP和TCP客戶端的負載均衡器养篓,F(xiàn)eign中也使用了Ribbon疗锐,后面會介紹Feign的使用。

它可以在客戶端配置ribbonServerList(服務端列表)冻河,然后輪詢請求以實現(xiàn)均衡負載钝计。

它在聯(lián)合Eureka使用時ribbonServerList會被DiscoveryEnabledNIWSServerList重寫,擴展成從Eureka注冊中心獲取服務端列表同時它也會用NIWSDiscoveryPing來取代IPing瘫絮,它將職責委托給Eureka來確定服務端是否已經(jīng)啟動涨冀。

Feign
Spring Cloud Netflix的微服務都是以HTTP接口的形式暴露的,所以可以用Apache的HttpClient或Spring的RestTemplate去調(diào)用麦萤。

而Feign是一個聲明式的Web Service客戶端鹿鳖,它使得編寫Web Serivce客戶端變得更加簡單。我們只需要使用Feign來創(chuàng)建一個接口并用注解來配置它既可完成频鉴。它具備可插拔的注解支持栓辜,包括Feign注解和JAX-RS注解。Feign也支持可插拔的編碼器和解碼器垛孔。Spring Cloud為Feign增加了對Spring MVC注解的支持藕甩,還整合了Ribbon和Eureka來提供均衡負載的HTTP客戶端實現(xiàn)。

是一個使用起來更加方便的Http客戶端,它用起來就像調(diào)用本地方法一樣狭莱,完全感覺不到是調(diào)用的遠程方法僵娃。

總結起來就是:發(fā)布到注冊中心的服務方接口,是Http的腋妙,也可以不用Ribbon或Feign默怨,直接在瀏覽器一樣能夠訪問。

只不過Ribbon或Feign調(diào)用起來要方便一些骤素,最重要的是它倆都支持軟負載均衡匙睹。

注意:spring-cloud-starter-feign里面已經(jīng)包含了spring-cloud-starter-ribbon
(Feign中也使用了Ribbon)

示例代碼


示例代碼如下(也可以直接從
Github下載:
https://github.com/v5java/demo-cloud-05-ribbon-feign

它是由五個模塊組成的Maven工程,其中包含一個注冊中心济竹、兩個服務提供者痕檬、兩個服務消費者(分別由Ribbon和Feign實現(xiàn))

首先啟動服務注冊中心


Paste_Image.png

部分日志如下:

. ____ _ __ _ _

/\ / _' __ _ () __ __ _ \ \ \ \

( ( )___ | '_ | '| | ' / _` | \ \ \ \

\/ _)| |)| | | | | || (| | ) ) ) )

' |____| .|| ||| |__, | / / / /

=========||==============|/=///_/

:: Spring Boot :: (v1.5.3.RELEASE)

[20170526094201944][main][SpringApplication.logStartupProfileInfo]No active profile set, falling back to default profiles: default

[20170526094204189][main][ConfigurationClassPostProcessor.enhanceConfigurationClasses]Cannot enhance @Configuration bean definition 'refreshScope' since its singleton instance has been created too early. The typical cause is a non-static @Bean method with a BeanDefinitionRegistryPostProcessor return type: Consider declaring such methods as 'static'.

[20170526094207978][localhost-startStop-1][WebApplicationImpl._initiate]Initiating Jersey application, version 'Jersey: 1.19.1 03/11/2016 02:08 PM'

[20170526094208101][localhost-startStop-1][DiscoveryJerseyProvider.<init>]Using JSON encoding codec LegacyJacksonJson

[20170526094208102][localhost-startStop-1][DiscoveryJerseyProvider.<init>]Using JSON decoding codec LegacyJacksonJson

[20170526094208319][localhost-startStop-1][DiscoveryJerseyProvider.<init>]Using XML encoding codec XStreamXml

[20170526094208319][localhost-startStop-1][DiscoveryJerseyProvider.<init>]Using XML decoding codec XStreamXml

[20170526094212974][main][ArchaiusAutoConfiguration.configureArchaius]No spring.application.name found, defaulting to 'application'

[20170526094212983][main][URLConfigurationSource.<init>]No URLs will be polled as dynamic configuration sources.

[20170526094212983][main][URLConfigurationSource.<init>]To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.

[20170526094213003][main][URLConfigurationSource.<init>]No URLs will be polled as dynamic configuration sources.

[20170526094213003][main][URLConfigurationSource.<init>]To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.

[20170526094213252][main][DiscoveryClient.<init>]Client configured to neither register nor query for data.

[20170526094213288][main][DiscoveryClient.<init>]Discovery Client initialized at timestamp 1495762933287 with initial instances count: 0

[20170526094213487][main][DefaultEurekaServerContext.initialize]Initializing ...

[20170526094213491][main][PeerEurekaNodes.updatePeerEurekaNodes]Adding new peer nodes [http://127.0.0.1:1100/eureka/]

[20170526094214466][main][DiscoveryJerseyProvider.<init>]Using JSON encoding codec LegacyJacksonJson

[20170526094214467][main][DiscoveryJerseyProvider.<init>]Using JSON decoding codec LegacyJacksonJson

[20170526094214467][main][DiscoveryJerseyProvider.<init>]Using XML encoding codec XStreamXml

[20170526094214468][main][DiscoveryJerseyProvider.<init>]Using XML decoding codec XStreamXml

[20170526094214786][main][PeerEurekaNodes.start]Replica node URL: http://127.0.0.1:1100/eureka/

[20170526094214803][main][AbstractInstanceRegistry.initRemoteRegionRegistry]Finished initializing remote region registries. All known remote regions: []

[20170526094214804][main][DefaultEurekaServerContext.initialize]Initialized

[20170526094215684][Thread-11][PeerAwareInstanceRegistryImpl.openForTraffic]Got 1 instances from neighboring DS node

[20170526094215685][Thread-11][PeerAwareInstanceRegistryImpl.openForTraffic]Renew threshold is: 1

[20170526094215685][Thread-11][PeerAwareInstanceRegistryImpl.openForTraffic]Changing status to UP

[20170526094215879][main][StartupInfoLogger.logStarted]Started ServiceDiscoveryBootStrap in 17.0 seconds (JVM running for 21.803)

[20170526094216690][Eureka-EvictionTimer][AbstractInstanceRegistry$EvictionTask.run]Running the evict task with compensationTime 0ms

[20170526094217690][Eureka-EvictionTimer][AbstractInstanceRegistry$EvictionTask.run]Running the evict task with compensationTime 0ms

訪問
locahost:1100

Paste_Image.png

啟動服務提供方ServiceServer01

Paste_Image.png

部分日志如下

. ____ _ __ _ _

/\ / _' __ _ () __ __ _ \ \ \ \

( ( )___ | '_ | '| | ' / _` | \ \ \ \

\/ _)| |)| | | | | || (| | ) ) ) )

' |____| .|| ||| |__, | / / / /

=========||==============|/=///_/

:: Spring Boot :: (v1.5.3.RELEASE)

[20170526100135254][main][SpringApplication.logStartupProfileInfo]No active profile set, falling back to default profiles: default

[20170526100137018][main][ConfigurationClassPostProcessor.enhanceConfigurationClasses]Cannot enhance @Configuration bean definition 'refreshScope' since its singleton instance has been created too early. The typical cause is a non-static @Bean method with a BeanDefinitionRegistryPostProcessor return type: Consider declaring such methods as 'static'.

[20170526100145271][main][URLConfigurationSource.<init>]No URLs will be polled as dynamic configuration sources.

[20170526100145277][main][URLConfigurationSource.<init>]To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.

[20170526100145306][main][URLConfigurationSource.<init>]No URLs will be polled as dynamic configuration sources.

[20170526100145306][main][URLConfigurationSource.<init>]To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.

[20170526100148026][main][DiscoveryJerseyProvider.<init>]Using JSON encoding codec LegacyJacksonJson

[20170526100148035][main][DiscoveryJerseyProvider.<init>]Using JSON decoding codec LegacyJacksonJson

[20170526100148322][main][DiscoveryJerseyProvider.<init>]Using XML encoding codec XStreamXml

[20170526100148322][main][DiscoveryJerseyProvider.<init>]Using XML decoding codec XStreamXml

[20170526100148848][main][ConfigClusterResolver.getClusterEndpoints]Resolving eureka endpoints via configuration

[20170526100149174][main][DiscoveryClient.fetchRegistry]Disable delta property : false

[20170526100149174][main][DiscoveryClient.fetchRegistry]Single vip registry refresh property : null

[20170526100149177][main][DiscoveryClient.fetchRegistry]Force full registry fetch : false

[20170526100149177][main][DiscoveryClient.fetchRegistry]Application is null : false

[20170526100149177][main][DiscoveryClient.fetchRegistry]Registered Applications size is zero : true

[20170526100149178][main][DiscoveryClient.fetchRegistry]Application version is -1: true

[20170526100149178][main][DiscoveryClient.getAndStoreFullRegistry]Getting all instance registry info from the eureka server

[20170526100149668][main][DiscoveryClient.getAndStoreFullRegistry]The response status is 200

[20170526100149670][main][DiscoveryClient.initScheduledTasks]Starting heartbeat executor: renew interval is: 5

[20170526100149678][main][InstanceInfoReplicator.<init>]InstanceInfoReplicator onDemand update allowed rate per min is 4

[20170526100149684][main][DiscoveryClient.<init>]Discovery Client initialized at timestamp 1495764109684 with initial instances count: 0

[20170526100149798][main][DiscoveryClient$3.notify]Saw local status change event StatusChangeEvent [timestamp=1495764109798, current=UP, previous=STARTING]

[20170526100149823][DiscoveryClient-InstanceInfoReplicator-0][DiscoveryClient.register]DiscoveryClient_CALCULATORSERVER/CalculatorServer:2100: registering service...

[20170526100150570][main][StartupInfoLogger.logStarted]Started ServiceServer01BootStarp in 19.56 seconds (JVM running for 21.528)

[20170526100150593][DiscoveryClient-InstanceInfoReplicator-0][DiscoveryClient.register]DiscoveryClient_CALCULATORSERVER/CalculatorServer:2100 - registration status: 204

[20170526100219672][DiscoveryClient-CacheRefreshExecutor-0][DiscoveryClient.fetchRegistry]Disable delta property : false

刷新localhost:1100,發(fā)現(xiàn)多了一個服務:

Paste_Image.png

訪問
http://127.0.0.1:2100/add?a=10&b=5

Paste_Image.png

連續(xù)訪問三次:
http://127.0.0.1:2100/add?a=10&b=5

日志如下:

[20170526101149185][AsyncResolver-bootstrap-executor-0][ConfigClusterResolver.getClusterEndpoints]Resolving eureka endpoints via configuration

[20170526101445340][http-nio-2100-exec-1][CalculatorController.add]uri=http://172.25.126.162:2100,
serviceId=CalculatorServer送浊,result=15

[20170526101454636][http-nio-2100-exec-10][CalculatorController.add]uri=http://172.25.126.162:2100梦谜,
serviceId=CalculatorServer,result=15

[20170526101506163][http-nio-2100-exec-9][CalculatorController.add]uri=http://172.25.126.162:2100袭景,serviceId=CalculatorServer唁桩,result=15

啟動服務提供方ServiceServer02
刷新
localhost:1100,發(fā)現(xiàn)注冊的服務有兩個

Paste_Image.png

訪問
127.0.0.1:2200/add?a=10&b=10

Paste_Image.png

連續(xù)訪問兩次
127.0.0.1:2200/add?a=10&b=10

日志如下:

[20170526101632306][http-nio-2200-exec-3][CalculatorController.add]uri=http://172.25.126.162:2200,
serviceId=CalculatorServer耸棒,result=20

[20170526101641271][http-nio-2200-exec-2][CalculatorController.add]uri=http://172.25.126.162:2200荒澡,
serviceId=CalculatorServer,result=20

啟動服務消費端ServiceClient01(Ribbon)
部分日志如下

. ____ _ __ _ _

/\ / _' __ _ () __ __ _ \ \ \ \

( ( )___ | '_ | '| | ' / _` | \ \ \ \

\/ _)| |)| | | | | || (| | ) ) ) )

' |____| .|| ||| |__, | / / / /

=========||==============|/=///_/

:: Spring Boot :: (v1.5.3.RELEASE)

[20170526101814445][main][SpringApplication.logStartupProfileInfo]No active profile set, falling back to default profiles: default

[20170526101816285][main][ConfigurationClassPostProcessor.enhanceConfigurationClasses]Cannot enhance @Configuration bean definition 'refreshScope' since its singleton instance has been created too early. The typical cause is a non-static @Bean method with a BeanDefinitionRegistryPostProcessor return type: Consider declaring such methods as 'static'.

[20170526101825222][main][URLConfigurationSource.<init>]No URLs will be polled as dynamic configuration sources.

[20170526101825224][main][URLConfigurationSource.<init>]To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.

[20170526101825255][main][URLConfigurationSource.<init>]No URLs will be polled as dynamic configuration sources.

[20170526101825258][main][URLConfigurationSource.<init>]To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.

[20170526101827448][main][DiscoveryJerseyProvider.<init>]Using JSON encoding codec LegacyJacksonJson

[20170526101827454][main][DiscoveryJerseyProvider.<init>]Using JSON decoding codec LegacyJacksonJson

[20170526101827811][main][DiscoveryJerseyProvider.<init>]Using XML encoding codec XStreamXml

[20170526101827811][main][DiscoveryJerseyProvider.<init>]Using XML decoding codec XStreamXml

[20170526101828342][main][ConfigClusterResolver.getClusterEndpoints]Resolving eureka endpoints via configuration

[20170526101828662][main][DiscoveryClient.fetchRegistry]Disable delta property : false

[20170526101828662][main][DiscoveryClient.fetchRegistry]Single vip registry refresh property : null

[20170526101828662][main][DiscoveryClient.fetchRegistry]Force full registry fetch : false

[20170526101828663][main][DiscoveryClient.fetchRegistry]Application is null : false

[20170526101828663][main][DiscoveryClient.fetchRegistry]Registered Applications size is zero : true

[20170526101828663][main][DiscoveryClient.fetchRegistry]Application version is -1: true

[20170526101828663][main][DiscoveryClient.getAndStoreFullRegistry]Getting all instance registry info from the eureka server

[20170526101829165][main][DiscoveryClient.getAndStoreFullRegistry]The response status is 200

[20170526101829167][main][DiscoveryClient.initScheduledTasks]Starting heartbeat executor: renew interval is: 5

[20170526101829181][main][InstanceInfoReplicator.<init>]InstanceInfoReplicator onDemand update allowed rate per min is 4

[20170526101829185][main][DiscoveryClient.<init>]Discovery Client initialized at timestamp 1495765109185 with initial instances count: 2

[20170526101829274][main][DiscoveryClient$3.notify]Saw local status change event StatusChangeEvent [timestamp=1495765109274, current=UP, previous=STARTING]

[20170526101829278][DiscoveryClient-InstanceInfoReplicator-0][DiscoveryClient.register]DiscoveryClient_CLIENT-CONSUMER-RIBBON/client-consumer-ribbon:3100: registering service...

[20170526101829386][DiscoveryClient-InstanceInfoReplicator-0][DiscoveryClient.register]DiscoveryClient_CLIENT-CONSUMER-RIBBON/client-consumer-ribbon:3100 - registration status: 204

[20170526101829694][main][StartupInfoLogger.logStarted]Started ServiceClient01BootStarp in 19.749 seconds (JVM running for 21.296)

訪問localhost:1100榆纽,發(fā)現(xiàn)Application里多了一個Client-consume-ribbon

Paste_Image.png

多次訪問(六次)
http://127.0.0.1:3100/toadd 可以看到兩個服務端打印的請求日志是均等輸出的仰猖,各輸出三次:

Paste_Image.png

[20170526151033675][http-nio-2100-exec-3][CalculatorController.add]uri=http://172.25.126.162:2100捏肢,
serviceId=CalculatorServer奈籽,result=30

[20170526151057257][http-nio-2100-exec-1][CalculatorController.add]uri=http://172.25.126.162:2100,
serviceId=CalculatorServer鸵赫,result=30

[20170526151110916][http-nio-2100-exec-9][CalculatorController.add]uri=http://172.25.126.162:2100衣屏,
serviceId=CalculatorServer,result=30

Paste_Image.png

[20170526151036583][http-nio-2200-exec-3][CalculatorController.add]uri=http://172.25.126.162:2200辩棒,
serviceId=CalculatorServer狼忱,result=30

[20170526151059570][http-nio-2200-exec-1][CalculatorController.add]uri=http://172.25.126.162:2200,
serviceId=CalculatorServer一睁,result=30

[20170526151109162][http-nio-2200-exec-9][CalculatorController.add]uri=http://172.25.126.162:2200钻弄,
serviceId=CalculatorServer,result=30

啟動服務消費端ServiceClient02(Feign)
部分日志如下:

. ____ _ __ _ _

/\ / _' __ _ () __ __ _ \ \ \ \

( ( )___ | '_ | '| | ' / _` | \ \ \ \

\/ _)| |)| | | | | || (| | ) ) ) )

' |____| .|| ||| |__, | / / / /

=========||==============|/=///_/

:: Spring Boot :: (v1.5.3.RELEASE)

[20170526103133421][main][SpringApplication.logStartupProfileInfo]No active profile set, falling back to default profiles: default

[20170526103135610][main][ConfigurationClassPostProcessor.enhanceConfigurationClasses]Cannot enhance @Configuration bean definition 'refreshScope' since its singleton instance has been created too early. The typical cause is a non-static @Bean method with a BeanDefinitionRegistryPostProcessor return type: Consider declaring such methods as 'static'.

[20170526103143115][main][URLConfigurationSource.<init>]No URLs will be polled as dynamic configuration sources.

[20170526103143116][main][URLConfigurationSource.<init>]To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.

[20170526103143137][main][URLConfigurationSource.<init>]No URLs will be polled as dynamic configuration sources.

[20170526103143138][main][URLConfigurationSource.<init>]To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.

[20170526103144853][main][DiscoveryJerseyProvider.<init>]Using JSON encoding codec LegacyJacksonJson

[20170526103144858][main][DiscoveryJerseyProvider.<init>]Using JSON decoding codec LegacyJacksonJson

[20170526103145270][main][DiscoveryJerseyProvider.<init>]Using XML encoding codec XStreamXml

[20170526103145270][main][DiscoveryJerseyProvider.<init>]Using XML decoding codec XStreamXml

[20170526103145932][main][ConfigClusterResolver.getClusterEndpoints]Resolving eureka endpoints via configuration

[20170526103146163][main][DiscoveryClient.fetchRegistry]Disable delta property : false

[20170526103146163][main][DiscoveryClient.fetchRegistry]Single vip registry refresh property : null

[20170526103146163][main][DiscoveryClient.fetchRegistry]Force full registry fetch : false

[20170526103146164][main][DiscoveryClient.fetchRegistry]Application is null : false

[20170526103146164][main][DiscoveryClient.fetchRegistry]Registered Applications size is zero : true

[20170526103146164][main][DiscoveryClient.fetchRegistry]Application version is -1: true

[20170526103146164][main][DiscoveryClient.getAndStoreFullRegistry]Getting all instance registry info from the eureka server

[20170526103146695][main][DiscoveryClient.getAndStoreFullRegistry]The response status is 200

[20170526103146697][main][DiscoveryClient.initScheduledTasks]Starting heartbeat executor: renew interval is: 5

[20170526103146700][main][InstanceInfoReplicator.<init>]InstanceInfoReplicator onDemand update allowed rate per min is 4

[20170526103146707][main][DiscoveryClient.<init>]Discovery Client initialized at timestamp 1495765906706 with initial instances count: 3

[20170526103146794][main][DiscoveryClient$3.notify]Saw local status change event StatusChangeEvent [timestamp=1495765906794, current=UP, previous=STARTING]

[20170526103146810][DiscoveryClient-InstanceInfoReplicator-0][DiscoveryClient.register]DiscoveryClient_CLIENT-CONSUMER-FEIGN/client-consumer-feign:3200: registering service...

[20170526103146897][DiscoveryClient-InstanceInfoReplicator-0][DiscoveryClient.register]DiscoveryClient_CLIENT-CONSUMER-FEIGN/client-consumer-feign:3200 - registration status: 204

[20170526103147401][main][StartupInfoLogger.logStarted]Started ServiceClient02BootStarp in 18.382 seconds (JVM running for 19.856)

訪問localhost:1100者吁,發(fā)現(xiàn)Application多了一個Client-Consume-Feign

Paste_Image.png

訪問127.0.0.1:3200/demo/feign/toad?a=11&b=22

Paste_Image.png

多次訪問(六次)
http://127.0.0.1:3200/demo/feign/toadd?a=20&b=40

可以看到兩個服務端打印的請求日志是均等輸出的窘俺,各輸出三次:

Paste_Image.png

[20170526151424081][http-nio-2100-exec-6][CalculatorController.add]uri=http://172.25.126.162:2100,
serviceId=CalculatorServer复凳,result=60

[20170526151430819][http-nio-2100-exec-5][CalculatorController.add]uri=http://172.25.126.162:2100瘤泪,
serviceId=CalculatorServer灶泵,result=60

[20170526151437541][AsyncResolver-bootstrap-executor-0][ConfigClusterResolver.getClusterEndpoints]Resolving eureka endpoints via configuration

[20170526151500833][http-nio-2100-exec-3][CalculatorController.add]uri=http://172.25.126.162:2100,
serviceId=CalculatorServer对途,result=60

Paste_Image.png

[20170526151428657][http-nio-2200-exec-8][CalculatorController.add]uri=http://172.25.126.162:2200赦邻,
serviceId=CalculatorServer,result=60

[20170526151444082][http-nio-2200-exec-5][CalculatorController.add]uri=http://172.25.126.162:2200实檀,
serviceId=CalculatorServer惶洲,result=60

[20170526151458507][http-nio-2200-exec-3][CalculatorController.add]uri=http://172.25.126.162:2200,
serviceId=CalculatorServer膳犹,result=60

遇到問題:
如果將service-client-01的ConsumerController改為:
<pre>
@RequestMapping(value = "/toadd",method = RequestMethod.GET)**
public int toadd(@RequestParam int a, @RequestParam int b){
InstanceInfo instance = eurekaClient.getNextServerFromEureka(
"CalculatorServer"
,
false
);
Integer r = a + b;
logger.info(
"/add, host:" **+instance.getHostName() + **",serviceId:" **+ instance.getInstanceId() + **",result:" **+ r);
return calculatorService.addService(a, b);}
</pre>

CaculatorService.Class:
<pre>
@Service
**class **CalculatorService {
@Resource
**private *RestTemplate restTemplate;
// @RequestMapping(value="add",method = RequestMethod.GET)****
// int addService(@RequestParam("a") int a,@RequestParam("b") int b){****
// String reqURL = "http://CalculatorServer/add?a=" + a + "&b=" + b;****
// //String reqURL = "http://CalculatorServer:3100/demo/ribbon/toadd?a=" + a + "&b=" +b;****
// return restTemplate.getForEntity(reqURL, Integer.class).getBody();****
//****
// }****
**public int addService(int a,int **b){
String reqURL = **"http://CalculatorServer/add?a=" **+ a + **"&b=" **+ b;
**return restTemplate.getForEntity(reqURL,Integer.class).getBody();
}
}
</pre>

訪問:
http://127.0.0.1:3100/toadd?a=100&b=200

報錯如下;

**Whitelabel Error Page****
**
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Fri May 26 16:02:40 CST 2017

There was an unexpected error (type=Bad Request, status=400).

Could not read JSON document: Can not deserialize instance of java.lang.Integer out of START_OBJECT token at [Source: java.io.PushbackInputStream@47bf45de; line: 1, column: 1]; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.lang.Integer out of START_OBJECT token at [Source: java.io.PushbackInputStream@47bf45de; line: 1, column: 1]

但是四次訪問卻是負載均衡的:

Paste_Image.png

[20170526161145179][http-nio-2100-exec-5][CalculatorController.add]uri=http://172.25.126.162:2100湃鹊,
serviceId=CalculatorServer,result=300

[20170526161149228][http-nio-2100-exec-4][CalculatorController.add]uri=http://172.25.126.162:2100镣奋,
serviceId=CalculatorServer币呵,result=300

[20170526161437557][AsyncResolver-bootstrap-executor-0][ConfigClusterResolver.getClusterEndpoints]Resolving eureka endpoints via configuration

[20170526161450505][http-nio-2100-exec-3][CalculatorController.add]uri=http://172.25.126.162:2100,
serviceId=CalculatorServer侨颈,result=300

Paste_Image.png

[20170526161147229][http-nio-2200-exec-8][CalculatorController.add]uri=http://172.25.126.162:2200余赢,
serviceId=CalculatorServer,result=300

[20170526161151024][http-nio-2200-exec-6][CalculatorController.add]uri=http://172.25.126.162:2200哈垢,
serviceId=CalculatorServer妻柒,result=300

[20170526161314964][AsyncResolver-bootstrap-executor-0][ConfigClusterResolver.getClusterEndpoints]Resolving eureka endpoints via configuration

[20170526161448600][http-nio-2200-exec-5][CalculatorController.add]uri=http://172.25.126.162:2200,
serviceId=CalculatorServer耘分,result=300

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末举塔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子求泰,更是在濱河造成了極大的恐慌央渣,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渴频,死亡現(xiàn)場離奇詭異芽丹,居然都是意外死亡,警方通過查閱死者的電腦和手機卜朗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門拔第,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人场钉,你說我怎么就攤上這事蚊俺。” “怎么了逛万?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵泳猬,是天一觀的道長。 經(jīng)常有香客問我,道長暂殖,這世上最難降的妖魔是什么价匠? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮呛每,結果婚禮上踩窖,老公的妹妹穿的比我還像新娘。我一直安慰自己晨横,他們只是感情好洋腮,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著手形,像睡著了一般啥供。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上库糠,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天伙狐,我揣著相機與錄音,去河邊找鬼瞬欧。 笑死酌儒,一個胖子當著我的面吹牛湿颅,可吹牛的內(nèi)容都是我干的仗扬。 我是一名探鬼主播悠垛,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼野建!你這毒婦竟也來了属划?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤候生,失蹤者是張志新(化名)和其女友劉穎同眯,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體陶舞,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡嗽测,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年绪励,在試婚紗的時候發(fā)現(xiàn)自己被綠了肿孵。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡疏魏,死狀恐怖停做,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情大莫,我是刑警寧澤蛉腌,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響烙丛,放射性物質(zhì)發(fā)生泄漏舅巷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一河咽、第九天 我趴在偏房一處隱蔽的房頂上張望钠右。 院中可真熱鬧,春花似錦忘蟹、人聲如沸飒房。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽狠毯。三九已至,卻和暖如春褥芒,著一層夾襖步出監(jiān)牢的瞬間嚼松,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工锰扶, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留惜颇,地道東北人。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓少辣,卻偏偏與公主長得像凌摄,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子漓帅,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理锨亏,服務發(fā)現(xiàn),斷路器忙干,智...
    卡卡羅2017閱讀 134,654評論 18 139
  • ** 今天看了一下kafka官網(wǎng)器予,嘗試著在自己電腦上安裝和配置,然后學一下官方document捐迫。** Introd...
    RainChang閱讀 5,003評論 1 30
  • EnglishVersion ->_->:https://github.com/jiang111/awesome-...
    聶順閱讀 1,226評論 0 4
  • 今天去售樓處找開發(fā)商開具發(fā)票乾翔,門口有一值班人員,對他說明來意施戴。他說反浓,你跟財務預約了嗎?——我說上次他們告訴我赞哗,周一...
    壇_閱讀 295評論 0 1
  • 大約十年前雷则,第一次開始清晰記得生日 729
    嵐風的葉子閱讀 186評論 0 0