`
can_do
  • 浏览: 249561 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SpringCloud微服务调用时常见错误解读

阅读更多
***************************
2019-11-14 19:50:17.565 [TextMsgReceiverThreadInFuture-3] [ERROR] [com.yourcompany.ms.iov.utils.MqttClientSubMsgInFuture:682] - =An unknown exception is:=
java.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not have available server for client: yourcompany-ms-platform-backend-api
        at org.springframework.cloud.netflix.feign.ribbon.LoadBalancerFeignClient.execute(LoadBalancerFeignClient.java:71) ~[spring-cloud-netflix-core-1.4.4.RELEASE.jar!/:1.4.4.RELEASE]
        at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:97) ~[feign-core-9.5.0.jar!/:?]
        at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:76) ~[feign-core-9.5.0.jar!/:?]
        at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:103) ~[feign-core-9.5.0.jar!/:?]
        at com.sun.proxy.$Proxy150.add(Unknown Source) ~[?:?]
        at com.yourcompany.ms.iov.utils.MqttClientSubMsgInFuture.receiveMessage(MqttClientSubMsgInFuture.java:640) [classes!/:1.0-SNAPSHOT]
        at com.yourcompany.ms.iov.utils.MqttClientSubMsgInFuture.run(MqttClientSubMsgInFuture.java:284) [classes!/:1.0-SNAPSHOT]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_74]
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [?:1.8.0_74]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [?:1.8.0_74]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [?:1.8.0_74]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_74]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_74]
        at java.lang.Thread.run(Thread.java:745) [?:1.8.0_74]
Caused by: com.netflix.client.ClientException: Load balancer does not have available server for client: yourcompany-ms-platform-backend-api
        at com.netflix.loadbalancer.LoadBalancerContext.getServerFromLoadBalancer(LoadBalancerContext.java:483) ~[ribbon-loadbalancer-2.2.5.jar!/:2.2.5]
        at com.netflix.loadbalancer.reactive.LoadBalancerCommand$1.call(LoadBalancerCommand.java:184) ~[ribbon-loadbalancer-2.2.5.jar!/:2.2.5]
        at com.netflix.loadbalancer.reactive.LoadBalancerCommand$1.call(LoadBalancerCommand.java:180) ~[ribbon-loadbalancer-2.2.5.jar!/:2.2.5]
        at rx.Observable.unsafeSubscribe(Observable.java:10151) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:94) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:42) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.Observable.unsafeSubscribe(Observable.java:10151) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.operators.OperatorRetryWithPredicate$SourceSubscriber$1.call(OperatorRetryWithPredicate.java:127) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.schedulers.TrampolineScheduler$InnerCurrentThreadScheduler.enqueue(TrampolineScheduler.java:73) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.schedulers.TrampolineScheduler$InnerCurrentThreadScheduler.schedule(TrampolineScheduler.java:52) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.operators.OperatorRetryWithPredicate$SourceSubscriber.onNext(OperatorRetryWithPredicate.java:79) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.operators.OperatorRetryWithPredicate$SourceSubscriber.onNext(OperatorRetryWithPredicate.java:45) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.util.ScalarSynchronousObservable$WeakSingleProducer.request(ScalarSynchronousObservable.java:276) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.Subscriber.setProducer(Subscriber.java:209) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.util.ScalarSynchronousObservable$JustOnSubscribe.call(ScalarSynchronousObservable.java:138) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.util.ScalarSynchronousObservable$JustOnSubscribe.call(ScalarSynchronousObservable.java:129) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.Observable.subscribe(Observable.java:10247) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.Observable.subscribe(Observable.java:10214) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.observables.BlockingObservable.blockForSingle(BlockingObservable.java:444) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.observables.BlockingObservable.single(BlockingObservable.java:341) ~[rxjava-1.2.0.jar!/:1.2.0]
        at com.netflix.client.AbstractLoadBalancerAwareClient.executeWithLoadBalancer(AbstractLoadBalancerAwareClient.java:112) ~[ribbon-loadbalancer-2.2.5.jar!/:2.2.5]
        at org.springframework.cloud.netflix.feign.ribbon.LoadBalancerFeignClient.execute(LoadBalancerFeignClient.java:63) ~[spring-cloud-netflix-core-1.4.4.RELEASE.jar!/:1.4.4.RELEASE]
        ... 13 more
******************************************************************
2019-11-14 16:47:02.136 [PollingServerListUpdater-0] [INFO ] [com.netflix.config.ChainedDynamicProperty:115] - Flipping property: yourcompany-ms-platform-backend-api.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647
2019-11-14 16:47:21.316 [TextMsgReceiverThreadInFuture-3] [ERROR] [com.yourcompany.ms.iov.utils.MqttClientSubMsgInFuture:682] - =An unknown exception is:=
feign.RetryableException: Read timed out executing GET http://yourcompany-ms-platform-backend-api/sendTerminalCommand/onevendor/login
        at feign.FeignException.errorExecuting(FeignException.java:67) ~[feign-core-9.5.0.jar!/:?]
        at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:104) ~[feign-core-9.5.0.jar!/:?]
        at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:76) ~[feign-core-9.5.0.jar!/:?]
        at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:103) ~[feign-core-9.5.0.jar!/:?]
        at com.sun.proxy.$Proxy119.login(Unknown Source) ~[?:?]
        at com.yourcompany.ms.iov.utils.MqttClientSubMsgInFuture.receiveMessage(MqttClientSubMsgInFuture.java:416) [classes!/:1.0-SNAPSHOT]
        at com.yourcompany.ms.iov.utils.MqttClientSubMsgInFuture.run(MqttClientSubMsgInFuture.java:284) [classes!/:1.0-SNAPSHOT]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_74]
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [?:1.8.0_74]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [?:1.8.0_74]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [?:1.8.0_74]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_74]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_74]
        at java.lang.Thread.run(Thread.java:745) [?:1.8.0_74]
Caused by: java.net.SocketTimeoutException: Read timed out
        at java.net.SocketInputStream.socketRead0(Native Method) ~[?:1.8.0_74]
        at java.net.SocketInputStream.socketRead(SocketInputStream.java:116) ~[?:1.8.0_74]
        at java.net.SocketInputStream.read(SocketInputStream.java:170) ~[?:1.8.0_74]
        at java.net.SocketInputStream.read(SocketInputStream.java:141) ~[?:1.8.0_74]
        at java.io.BufferedInputStream.fill(BufferedInputStream.java:246) ~[?:1.8.0_74]
        at java.io.BufferedInputStream.read1(BufferedInputStream.java:286) ~[?:1.8.0_74]
        at java.io.BufferedInputStream.read(BufferedInputStream.java:345) ~[?:1.8.0_74]
        at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:704) ~[?:1.8.0_74]
        at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:647) ~[?:1.8.0_74]
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1536) ~[?:1.8.0_74]
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441) ~[?:1.8.0_74]
        at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480) ~[?:1.8.0_74]
        at feign.Client$Default.convertResponse(Client.java:152) ~[feign-core-9.5.0.jar!/:?]
        at feign.Client$Default.execute(Client.java:74) ~[feign-core-9.5.0.jar!/:?]
        at org.springframework.cloud.netflix.feign.ribbon.FeignLoadBalancer.execute(FeignLoadBalancer.java:80) ~[spring-cloud-netflix-core-1.4.4.RELEASE.jar!/:1.4.4.RELEASE]
        at org.springframework.cloud.netflix.feign.ribbon.FeignLoadBalancer.execute(FeignLoadBalancer.java:48) ~[spring-cloud-netflix-core-1.4.4.RELEASE.jar!/:1.4.4.RELEASE]
        at com.netflix.client.AbstractLoadBalancerAwareClient$1.call(AbstractLoadBalancerAwareClient.java:104) ~[ribbon-loadbalancer-2.2.5.jar!/:2.2.5]
        at com.netflix.loadbalancer.reactive.LoadBalancerCommand$3$1.call(LoadBalancerCommand.java:303) ~[ribbon-loadbalancer-2.2.5.jar!/:2.2.5]
        at com.netflix.loadbalancer.reactive.LoadBalancerCommand$3$1.call(LoadBalancerCommand.java:287) ~[ribbon-loadbalancer-2.2.5.jar!/:2.2.5]
        at rx.internal.util.ScalarSynchronousObservable$3.call(ScalarSynchronousObservable.java:231) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.util.ScalarSynchronousObservable$3.call(ScalarSynchronousObservable.java:228) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.Observable.unsafeSubscribe(Observable.java:10151) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.drain(OnSubscribeConcatMap.java:286) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.onNext(OnSubscribeConcatMap.java:144) ~[rxjava-1.2.0.jar!/:1.2.0]
        at com.netflix.loadbalancer.reactive.LoadBalancerCommand$1.call(LoadBalancerCommand.java:185) ~[ribbon-loadbalancer-2.2.5.jar!/:2.2.5]
        at com.netflix.loadbalancer.reactive.LoadBalancerCommand$1.call(LoadBalancerCommand.java:180) ~[ribbon-loadbalancer-2.2.5.jar!/:2.2.5]
        at rx.Observable.unsafeSubscribe(Observable.java:10151) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:94) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:42) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.Observable.unsafeSubscribe(Observable.java:10151) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.operators.OperatorRetryWithPredicate$SourceSubscriber$1.call(OperatorRetryWithPredicate.java:127) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.schedulers.TrampolineScheduler$InnerCurrentThreadScheduler.enqueue(TrampolineScheduler.java:73) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.schedulers.TrampolineScheduler$InnerCurrentThreadScheduler.schedule(TrampolineScheduler.java:52) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.operators.OperatorRetryWithPredicate$SourceSubscriber.onNext(OperatorRetryWithPredicate.java:79) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.operators.OperatorRetryWithPredicate$SourceSubscriber.onNext(OperatorRetryWithPredicate.java:45) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.util.ScalarSynchronousObservable$WeakSingleProducer.request(ScalarSynchronousObservable.java:276) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.Subscriber.setProducer(Subscriber.java:209) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.util.ScalarSynchronousObservable$JustOnSubscribe.call(ScalarSynchronousObservable.java:138) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.util.ScalarSynchronousObservable$JustOnSubscribe.call(ScalarSynchronousObservable.java:129) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.Observable.subscribe(Observable.java:10247) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.Observable.subscribe(Observable.java:10214) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.observables.BlockingObservable.blockForSingle(BlockingObservable.java:444) ~[rxjava-1.2.0.jar!/:1.2.0]
        at rx.observables.BlockingObservable.single(BlockingObservable.java:341) ~[rxjava-1.2.0.jar!/:1.2.0]
        at com.netflix.client.AbstractLoadBalancerAwareClient.executeWithLoadBalancer(AbstractLoadBalancerAwareClient.java:112) ~[ribbon-loadbalancer-2.2.5.jar!/:2.2.5]
        at org.springframework.cloud.netflix.feign.ribbon.LoadBalancerFeignClient.execute(LoadBalancerFeignClient.java:63) ~[spring-cloud-netflix-core-1.4.4.RELEASE.jar!/:1.4.4.RELEASE]
        at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:97) ~[feign-core-9.5.0.jar!/:?]
        ... 12 more
*******************************************************************
【关键错误】
com.netflix.client.ClientException: Load balancer does not have available server for client:
【分析】
1、首先通过错误栈确认下调用微服务的方式,通过FeginClient还是RestTemplate;
2、确认此处为FeignClient方式;
3、从错误提示解读:负载均衡器未找到可用的微服务;说明Euerka上未找到对应的微服务;
4、通过Eureka上查看提供微服务方,是否注册正常;
yourcompany-ms-platform-backend-api:18.0.5.107:18903 , yourcompany-ms-platform-backend-api:18.0.5.108:18903
Tip:正常应该为此方式;
5、检查微服务提供方是否添加如下注解:@FeignClient
@FeignClient(name = "yourcompany-ms-platform-ivt-service")
public interface IvtTextCmdPubRMI {
}

6、检查微服务调用方main启动类是否添加如下注解:@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients(basePackages = { "com.yourcompany" })
@SpringBootApplication
@ComponentScan(basePackages = { "com.yourcompany" })
public class Application {

	private final static String EMQX_Cluster_Topic_Name = CommonToolsUtils.generateTopic4TxtCmd2SInGroup();

	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
}
}

7、确认微服务提供方节点,是否端口号【18903】已Listen就绪;
telnet ip port 确认下

【关键错误】
feign.RetryableException: Read timed out executing GET http://yourcompany-ms-platform-backend-api/sendTerminalCommand/onevendor/login
【分析】
如果没有提示上面的错误【Load balancer does not have available server for client】,则考虑如下:
1> 微服务提供方本身进程是启动ok的;
2> 微服务提供方的配置也是ok的;
3> 需要检查微服务提供方,在接口运行处是否报错;
>>> 一般是微服务方进程ok,但提供服务逻辑处,连接外部资源报错,导致服务本身被访问时timeout了;
>>> 或者通过ip和port直接访问微服务提供方,是否接口本身是ok的,也可以排除此问题;


分享到:
评论

相关推荐

    若依SpringCloud微服务版-傻瓜式教程模式

    若依SpringCloud微服务版教程安装运行 0基础微服务架构能看懂的文章 附带有各个需要安装包,文档教程,代码地址和源代码 可私信提供哦

    史上最全SpringCloud微服务视频教程教程

    SpringCloud调用服务原理剖析 SpringCloud实现服务负载均衡原理 使用ribbon客户端实现负载均衡 使用Zuul搭建服务网关解决跨域问题 搭建SpringCloud分布式配置中心 服务雪崩效应解决办法  使用hystrix实现服务降级、...

    SpringCloud微服务注册调用Demo

    SpringCloud微服务注册调用入门实例 , 简单明了 , 教程参考https://blog.csdn.net/xingbaozhen1210/article/details/79741709

    springcloud微服务工程源码,包括eureka注册中心,reign,ribbon微服务调用源码

    springcloud微服务工程源码,包括eureka注册中心,reign,ribbon微服务调用源码,实现查看详情,列表查询功能

    SpringCloud微服务架构Demo案例

    上传的这个microservicecloud工程的主要使用了SpringCloud的5大技术栈做了一个微服务架构案例,涉及到Eureka集群的配置、Ribbon的自定义负载均衡、Feign的声明式接口调用、Hystrix的服务熔断和降级、Zuul的Api ...

    Spring Cloud微服务开发实践

    Spring Cloud微服务开发实践系列文章,详细介绍了微服务开发流程。 部分内容如下: 1、Spring Cloud介绍 2、Spring Boot 的设计理念和简单实践 3、Eureka 服务注册中心的搭建 4、Eureka 工作原理 5、Consul 注册中心...

    springcloud微服务入门.zip

    springcloud微服务入门案例,多模块Maven管理,子模块部署,PRC远程调用实例,zuul网关

    Spring cloud 微服务 demo 整合 客户端 服务端 spring data spring cloud stream

    客户端、服务端、负载 demo 微服务架构: 其可理解为讲一个完整的应用从数据存储开始垂直拆分(一般按照业务拆分)成多个不同的服务,每个服务都能够独立部署、维护、扩展,服务之间通过RESTful API的方式相互通信调用

    springcloud微服务框架+服务模版

    Spring Cloud使用的各种示例,以最简单、最实用为标准 spring-cloud-eureka:eureka server单机、双机、集群示例 eureka-producer-consumer:利用eureka实现服务提供与调用示例 spring-cloud-hystrix:Hystrix熔断...

    SpringCloud微服务接口这么多怎么调试

    Cloud微服务下服务接口调试及管理,什么样方式可以让微服务的接口管理变得更加容易些,希望对您的学习有所帮助。我们知道在微服务架构下,软件系统会被拆分成很多个独立运行的服务,而这些服务间需要交互通信,就需要...

    高级Java人才培训专家-01-环境搭建、SpringCloud微服务(注册发现、服务调用、网关)

    高级Java人才培训专家-01-环境搭建、SpringCloud微服务(注册发现、服务调用、网关)

    springcloud项目实战微服务架构源代码+文档说明(电商版一套完整架构)

    微信商城+微信公众号开发,该项目根据上海某大型知名电商企业互联网互联网项目,改版而来,使用最新微服务架构技术,页面使用高仿小米界面。功能包含电商模块,会员、SSO、订单、商品、支付、消息、微信、H5和PC、...

    Springcloud微服务框架.docx

    springCloud怎么实现负载均衡,1. springCloud服务调用原理,3. 路由网关(zuul)

    springcloud微服务视频大全(资料+视频+代码)

    springcloud微服务视频大全(资料+视频+代码),Eureka,服务注册,服务发现,Feign,服务调用,Ribbon,负载均衡,hystrix,熔断器,zuul,API网关,Sidecar,异构服务,SpringCloudConfig,配置中心

    springcloud微服务开发+实例代码.rar

    文档讲解了如何使用Spring Cloud 开发微服务, 主要讲解了Eureka、Ribbon 、Feign 与Hystrix 这几个框架,并结合实例代码介绍使用各个框架来发布、调用微服务。

    springcloud微服务

    微服务的特点: - 单一职责:微服务中每一个服务都对应唯一的业务能力,做到单一职责 - 微:微服务的服务拆分粒度很小,例如一个用户管理就可以作为一个服务。每个服务虽小,但“五脏俱全”。 - 面向服务:面向服务...

    微信商城SpringCloud版本项目源码

    基于Spring Cloud微服务化电商平台,每个模块单独封装,如有某个模块不能满足业务,可以单独进行改造,无需关心其他模块功能, 各个模块之间通过Fegin调用,多业务系统并行开发,可以用来学习了解Spring Cloud各个...

    基于SpringCloud的房屋租售系统的设计与实现

    内容概要:通过带着读者拟开发基于SpringCloud 微服务架构的房屋租售平台,为房屋的供需两房提供便捷高效的平台的同时,也为其设置了良好的沟通模块,便于双方能够合理而满意地进行交易,提高居住的幸福感。...

    SpringCloud微服务‹.pptx

    Spring Cloud是一个相对比较新的微服务框架,2016年才推出1.0的release版本. 虽然Spring Cloud时间最短, 但是相比Dubbo等RPC框架, Spring Cloud提供的全套的分布式系统解决方案。 服务开发 服务配置和管理 服务...

    springcloud微服务里的oauth2集成总结.docx

    Springboot,springcloud,spring secutity,spring ouath2都需要有明确的版本声明,对于不同版本的类库,实现上也有很大的区别,不同版本的授权是不能通用的。 项目定义 1.网关服务 gateway 2.授权服务 oauth,uaa 3....

Global site tag (gtag.js) - Google Analytics